一、基本的矩陣運算
以下使用c語言實現
1、矩陣運算
(1)矩陣加法
如實現矩陣 A+B=C
double A[3][3]={{2,8,3},{11,-1,5},{13,2,7}};
double B[3][3]={{1,18,7},{2,11,15},{10,3,4}};
double C[][];
MatrixPlus(A,B,3,3,C);
void MatrixPlus(double A[],double B[],int m,int n,double C[])
{
int i;
for(i=0;i<m*n;i++)
{
C[i]=A[i]+B[i];
}
}
A,B,C都是二維數組,m,n分別是矩陣的行數和列數
(2)矩陣減法
double A[3][3]={{2,8,3},{11,-1,5},{13,2,7}};
double B[3][3]={{1,18,7},{2,11,15},{10,3,4}};
double C[][];
MatrixPlus(A,B,3,3,C);
void MatrixPlus(double A[],double B[],int m,int n,double C[])
{
int i;
for(i=0;i<m*n;i++)
{
C[i]=A[i]-B[i];
}
}
(3)矩陣的乘法
對於m*n的矩陣A和n*k的矩陣B相乘
C=AB
double A[3][3]={{2,8,3},{11,-1,5},{13,2,7}};
double B[3][3]={{1,18,7},{2,11,15},{10,3,4}};
double C[3][3];
int m;//A矩陣的行數
int n;//A矩陣的列數,B矩陣的行數
int k;//C矩陣列數
MatrixPlus(A,B,3,3,C);
void MatrixPlus(double A[],double B[],int m,int n,int k,double C[])
{
int i,j,l,u;
for(i=0;i<m;i++) //行
{
for(j=0;j<k;j++) //列
{
u=i*k+j;//第i行 第j列
C[u]=0;
for(l=0;l<n;l++);
{
C[u] +=A[i*n+l]*B[l*k+j];//相乘累加 A的第i行的每個元素分別乘第j列的每個元素
}
}
}
}
二、高斯方程求解
1、線性方程和非線方程
線程方程:方程中任何一個變量的冪次都是一次。這類方程在作圖時爲直線。
非線性方程: 方程中包含一個變量的冪次不是一次。這類方程作圖會呈現出曲線。
2、高斯消元法解線性方程組
(1)線性方程組
A爲係數矩陣,x爲變量矩陣,b是常數列矩陣。
如果係數行列式不爲0,則方程組有唯一解。
Ax=b的求解方法:高斯消元法、克萊姆法則、矩陣變換法。
3、解線性方程組
(1)直接法:假設計算過程中不產生誤差,經過有限四則運算可求得方程組準確解的方法。
如高斯消元法,將線性方程組化爲等價的三角形方程組,然後求解。適合求解方程組小於100
(2)迭代法
4、高斯消元法
(1)高斯消元法過程
通過消元將一般線性方程組問題轉換爲三角方程組的求解問題。
第一步:消元過程,先逐次消去變量,將方程組化成同解的上三角形方程組
第二步:回代過程,按照方程組相反的順序求解上三角形,得到原方程的解。
(2)描述過程
如:
第一次消元:
第二次消元:按照同樣的方法
第n-1步消元
回代過程:
(3)舉例:
如: