❶ 输入m*n阶矩阵A和B,用函数编程实现两个函数相加和相乘
输入m*n阶矩阵A和B,用C语言编程实现两个函数相加和相乘:
一、矩阵相乘。程序中先初始化矩阵,然后判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果不相等则直接提示错误后退出程序。相等的话则利用公式计算乘积,结果赋给matrix二维数组。最后用for循环打印出结果验证。
#include<stdio.h>
#include<stdlib.h>
#define M 100
int main(void)
{
int i,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M];
printf("输入第一个矩阵的行数和列数:");
scanf("%d%d",&row1,&col1);
printf("输入第一个矩阵: ");
for(i=0;i<row1;i++){
for(j=0;j<col1;j++){
scanf("%d",&matrix1[i][j]);
}
}
printf("输入第二个矩阵的行数和列数:");
scanf("%d%d",&row2,&col2);
printf("输入第二个矩阵: ");
for(i=0;i<row2;i++){
for(j=0;j<col2;j++){
scanf("%d",&matrix2[i][j]);
}}
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
matrix[i][j]=0;
} }
if(col1!=row2){
fprintf(stderr,"enput error!");
exit(EXIT_FAILURE);
}
printf("The result: ");
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
for(k=0;k<col1;k++){
matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j];
} } }
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
printf("%d ",matrix[i][j]); }
printf(" "); }
return 0;}
二、矩阵相加:
#include<stdio.h>
#define M 20
#define N 20
float A[M][N];
float B[M][N];
float C[M][N];
int i,j,m,n,p,q;
float y=1.0;
void main()
{
scanf("%d,%d",&i,&j);
printf("请输入矩阵B的行数和列数(用逗号隔开):");
scanf("%d,%d",&m,&n);
if(i!=m||j!=n)
printf("***对不起,您输入的两个矩阵不能相加,请重试.*** ");
else printf("请输入矩阵A: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
scanf("%f",&A[p][q]);
printf("输出矩阵A: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",A[p][q]);
if((q+1)%j==0)
printf(" ");
}
printf("请输入矩阵B: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
scanf("%f",&B[p][q]);
printf("输出矩阵B: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",B[p][q]);
if((q+1)%j==0)
printf(" ");
}
printf("矩阵A+矩阵B为: "); //计算两个矩阵相加
for(p=0;p<i;p++)
for(q=0;q<j;q++)
C[p][q]=A[p][q]+B[p][q];
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",C[p][q]);
if((q+1)%j==0)
printf(" ");
}
};
❷ 矩阵计算方法法则
矩阵计算方法法则:
1.矩阵加法运算
矩阵之间也可以相加。把两个矩阵对应位置的单个元素相加,得到的新矩阵就是矩阵加法的结果。由其运算法则可知,只有行数和列数完全相同的矩阵才能进行加法运算。
矩阵之间相加没有顺序,假设A、B都是矩阵,则A+B=B+A。通常认为矩阵没有减法,若要与一个矩阵相减,在概念上是引入一个该矩阵的负矩阵,然后相加。A-B是A+(-B)的简写。图演示了两个三行三列矩阵的加法。
2.矩阵乘法运算
矩阵之间也可以进行乘法运算,但其运算过程相对复杂得多。与算术乘法不同,矩阵乘法并不是多个矩阵之和,它有自己的逻辑。其算法的具体描述为:假设m行n列的矩阵A和r行v列的矩阵B相乘得到矩阵C,则首先矩阵A和矩阵B必须满足n=r。
也就是说,第一个矩阵的列数必须和第二个矩阵的行数相同。在运算时,第一个矩阵A的第i行的所有元素同第二个矩阵B第j列的元素对应相乘,并把相乘的结果相加,最终得到的值就是矩阵C的第i行第j列的值。
矩阵的值的计算公式
A=(aij)m×n。按照初等行变换原则把原来的矩阵变换为阶梯型矩阵,总行数减去全部为零的行数即非零的行数就是矩阵的秩了。用初等行变换化成梯矩阵,梯矩阵中非零行数就是矩阵的秩。矩阵的秩是线性代数中的一个概念。在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数。