一、基本的矩阵运算
以下使用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)举例:
如: