線性方程組 精確解 近似解 演算法整理

2021-07-31 23:06:34 字數 2535 閱讀 1515

此時我們只討論當m==n時的情況,即n階線性方程組,它的係數矩陣為n+1列為b。

note:

**假設輸入格式為n,代表n階行列式,隨後緊跟著n行,每行n+1個數,代表係數矩陣。

求精確解的方法:

1.1 高斯消元法:

//gauss消元

#include

using

namespace

std;

double matrix[20][21], x[20];

int n;

void print_matrix()

cout

<< endl;

}int main()

}//回代過程

for(int i = n; i >= 1; i--)

for(int i = 1; i <= n; i++)

cout

<< "x["

<< i << "] = "

<< x[i] << endl;

return

0;}

1.2高斯主元素消元法:

可以有很好的數值穩定性,避免較大的捨入誤差

1.2.1 完全主元素消元法:

note: 選最大主元素的時候不能選擇常數列

#include 

#include

using

namespace

std;

double matrix[20][21], x[20];

int pos[20];//記錄當前列對應的原列序號

int n;

void print_matrix()

cout

<< endl;

}void swap_row(int row1, int row2)

void swap_col(int col1, int col2)

void find_max(int k) }}

pos[k] = c; pos[c] = k;

swap_row(k, r); swap_col(k, c);

}int main()

}//回代過程

for(int i = n; i >= 1; i--)

for(int i = 1; i <= n; i++)

for(int i = 1; i <= n; i++)

cout

<< "x["

<< i << "] = "

<< x[i] << endl;

return

0;}

1.2.2 列主元素消元法:

相比完全主元素效率更高,但是穩定性不如完全主元素,要求係數行列式不為0.

#include 

#include

using

namespace

std;

double matrix[20][21], x[20];

int n;

void print_matrix()

cout

<< endl;

}void swap_row(int row1, int row2)

void find_max(int k)

}swap_row(k, r);

}int main()

}//回代過程

for(int i = n; i >= 1; i--)

for(int i = 1; i <= n; i++)

cout

<< "x["

<< i << "] = "

<< x[i] << endl;

return

0;}

1.3 矩陣分解法:

#include 

using

namespace

std;

double matrix[20][21], x[20];

int n;

void print_matrix()

cout

<< endl;

}int main()

}//回代y的值並儲存在x當中

for(int i = 1; i <= n; i++)

//更新常數列的值為y的值

for(int i = 1; i <= n; i++)

matrix[i][n+1] = x[i];

//回代x的值

for(int i = n; i >= 1; i--)

for(int i = 1; i <= n; i++)

cout

<< "x["

<< i << "] = "

<< x[i] << endl;

return

0;}

求近似解的方法:

2.1 迭代法

MATLAB解線性方程組

rref 函式 把矩陣換為行最簡形 可以用來解線性方程組,求矩陣的秩,求矩陣行最簡形 每行首元所在的列只有它乙個是1 首元所在的列數。例如 我們知道乙個方程組 a x b 中 a 係數矩陣 和b列向量 a 2 2 2 6 2 1 2 4 3 1 4 4 1 1 1 3 b 16 10 11 12 u...

Eigen解線性方程組

一.矩陣分解 矩陣分解 decomposition,factorization 是將矩陣拆解為數個矩陣的乘積,可分為三角分解 滿秩分解 qr分解 jordan分解和svd 奇異值 分解等,常見的有三種 1 三角分解法 triangular factorization 2 qr 分解法 qr fact...

C語言解線性方程組

按規則輸入線性方程組的係數 每行n 1個數值,按順序輸入n個係數項,最後一項為常數項,用空格隔開 輸出該方程組的係數行列式和它的值,最後輸出方程組的解 處理整型資料 include include define n 4 行列式的行 列 數 typedef struct node array int ...