算法學習筆記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)舉例:

如:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章