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 ...