G S迭代法 高斯消去法用c語言實現

2021-09-04 10:09:26 字數 1800 閱讀 2998

g-s迭代法:

#include#include#include#include#define eps 1e-6 //定義偏差值

#define n 100 //定義最大迭代次數

#define max 10 //係數最大矩陣階數

double a[max][max];

double b[max];

double x[max];//第k+1次迭代的結果

double xx[max];//第k次迭代的結果

int n;//階數

int main(void)

} //獲取b的元素

for(i = 0;i < n;i++)

//輸出係數矩陣,檢查是否與設定的相同

printf("係數矩陣a:\n");

for(i = 0;i < n;i++)

printf("\n\n"); }

//輸出右端矩陣,檢查是否與設定的相同

printf("\t係數矩陣b:\n");

for(i = 0;i < n;i++)

for(k = 1;(k < n) && (dif>eps);k++)

}x[i] = (b[i]-sum)/a[i * n + i];

sum = 0.0;

} residual = 0.0;

//計算相鄰迭代的結果差

for(int m = 0;m < n;m++)

dif = residual;

//列印第k次的結果

printf("\n第%d次迭代的結果:\n",k);

for(i = 0;i < n;i++)

printf("\n與上次計算結果的距離(無窮範數):%12.8f \n",dif);

} printf("\n迭代計算的結果為:\n");

for(k = 0;k < n;k++)

printf("\n");

free(a);

system("pause");

return 0;

}

高斯消去法:

//計算ax=b

#include#include#define max 10 //係數最大矩陣階數

double a[max][max];

double b[max];

double x[max];

int n;//a的階數

int main(void)

} //獲取右端矩陣b的元素

for(i = 0;i < n;i++)

//輸出係數矩陣a,檢查是否與設定的相同

printf("係數矩陣a:\n");

for(i = 0;i < n;i++)

printf("\n\n"); }

//輸出右端矩陣b,檢查是否與設定的相同

printf("\t係數矩陣b:\n");

for(i = 0;i < n;i++)

//高斯消去法主要過程

for(k = 0;k < n-1;k++)

b[i]=b[i]-l * b[k];

} }if(a[n-1][n-1] != 0)

for(k = n - 2;k >= 0;k--)

x[k] = s/a[k][k];

} printf("x:\n");

for(i = 0;i < n;i++)

printf("\t%f\t\n\n",x[i]);

system("pause");

return 0;

}

C 高斯消去法

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace gaussianelimination console.w...

C語言寫高斯消去法

早上幫女朋友參照c語言數值分析這本書用c語言寫了乙份高斯消去法,有什麼不妥之處請大家指正!double a max max 係數矩陣 double b max 右端項 double x max 迭代向量 int num a的階數 int size 最大迭代次數 int main void print...

雅可比迭代法 高斯 賽德爾迭代法

求解方程組 用雅可比迭代法求解方程組ax b 輸入 a為方程組的係數矩陣,b為方程組右端的列向量,輸入 x0為迭代初值構成的列向量,nm為最大迭代次數,eps為誤差精度 輸出 x為求得的方程組的解構成的列向量,k為迭代次數 d diag diag a l tril a,1 u triu a,1 b ...