算法学习笔记2(矩阵运算、高斯消元法的实现过程)

一、基本的矩阵运算

以下使用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)举例:

如:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值