计算方法之用雅克比法求线性方程组
2013-06-11 12:59
267 查看
/************************************* * 用雅克比法求线性方程组 * * 5*x1 + 2*x2 + 1*x3 = -12 *{-1*x1 + 4*x2 + 2*x3 = 20 * 2*x1 - 3*x2 +10*x3 = 3 * **************************************/ #include<stdio.h> #include<math.h> #include<conio.h> #define N 3 #define kmax 100 #define eps 1e-5 static double aa = { { 5, 2, 1 }, { -1, 4, 2 }, { 2, -3, 10 } }; static double bb = { -12, 20, 3 }; int main() { int k, i, j; double d, sum, s, norm; double a[N + 1][N + 1], b[N + 1], x[N + 1], y[N + 1]; for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) a[i][j] = aa[i - 1][j - 1]; b[i] = bb[i - 1]; } for (i = 1; i <= N; i++) { x[i] = 0; } k = 0; do { k++; if (k > kmax) { printf("\nThe iterate failed !\n"); break; } norm = 0.0; for (i = 1; i <= N; i++) { sum = 0.0; for (j = 1; j <= N; j++) { if (j != i) sum += a[i][j] * x[j]; } y[i] = (b[i] - sum) / a[i][i]; d = fabs(y[i] - x[i]); if (norm < d) norm = d; } for (i = 1; i <= N; i++) x[i] = y[i]; } while (norm >= eps); if (norm < eps) { printf("\nThe result is :\n"); printf("\nk = %d \n", k); for (i = 1; i <= N; i++) printf("x[%d] = %f\n", i, x[i]); } return 0; }
相关文章推荐
- 计算方法之用雅克比法求线性方程组
- 计算方法:高斯-若当主元消去法解线性方程组
- 计算方法Gauss-Jordan消去法求线性方程组的解
- 计算方法:矩阵三角分解法解线性方程组
- 计算方法列主元素消去法求线性方程组的解
- 计算方法总体选主元素消去法求线性方程组的解
- 计算方法-全主元高斯消元法解线性方程组(Matlab)
- 计算方法之用高斯列主元消去法求线性方程组
- 计算方法之用高斯列主元消去法求线性方程组
- 【计算方法笔记】列高斯消元法解线性方程组
- 计算方法之用追赶法求线性方程组
- 计算方法之用追赶法求线性方程组
- 【计算方法笔记】矩阵分解求解线性方程组
- 雅克比方法迭代法解线性方程组
- C#自动计算字符串公式的四种方法
- 经纬度计算两地之间的距离(原理与方法)
- C# TimeSpan类计算程序执行的时间及此类的其他常用方法
- 字符串相似度计算的方法,使用SQL以及C#实现,本文非原创摘自网络(.NET SQL技术交流群入群206656202需注明博客园)
- PI的100种计算方法
- java计算自然数中的水仙花数的方法分享