❶ 輸入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的線性獨立的縱列的極大數。