发布时间 : 星期三 文章解线性方程组的迭代法更新完毕开始阅读6add2f04ba1aa8114431d915
一、目的
1.通过本实验加深对Jacobi迭代法、Gauss-Seidel迭代法、松弛迭代法的构造过程的理解; 2.能对上述三种迭代法提出正确的算法描述编程实现,进一步理解迭代法的改进过程;
自选线性方程组,编制一个程序,分别用Jacobi迭代法、Gauss-Seidel迭代法求解,比较两种迭代法收敛速度的快慢。
二、内容与设计思想
三、使用环境
操操作系统:Windons XP 软件环境:VC 6.0 四、核心代码及调试过程
题目要求,求解下面的方程组,分别用Jacobi迭代法、Gauss-Seidel迭代法求解
?7.2x1?2.3x2?4.4x3?0.5x4?15.1?1.3x?6.3x?3.5x?2.8x?1.8?1234 ??5.6x1?0.9x2?8.1x3?1.3x4?16.6??1.5x1?0.4x2?3.7x3?5.9x4?36.9Jacobi迭代法: #include
#define max_D 100
double norm_inf(double x[],int n) { double norm; int i; norm = fabs(x[0]); for (i=1;i
void jacobi(double a[N][N],double g[N],int n) { double b[N][N] = {0},x0[N],x1[N],x1_x0[N],norm,temp; int i,j,k; for (i=0;i 第 1 页 共 5 页 { g[i]=g[i]/a[i][i]; for (j=0;j void main() { 第 2 页 共 5 页 double a[N][N]={{7.2,2.3,-4.4,0.5},{1.3,6.3,-3.5,2.8},{5.6,0.9,8.1,-1.3},{1.5,0.4,3.7,5.9}}; double g[N]={15.1,18,16.6,36.9}; jacobi(a,g,4); } 运行结果: Gauss-Seidel迭代法: #include #define max_D 100 double norm_inf(double x[],int n) { double norm; int i; norm = fabs(x[0]); for (i=1;i void Gauss(double a[N][N],double g[N],int n) { double b[N][N] = {0},x0[N],x1[N],x1_x0[N],norm,temp; int i,j,k; for (i=0;i 第 3 页 共 5 页 g[i]=g[i]/a[i][i]; for (j=0;j void main() { double a[N][N]={{7.2,2.3,-4.4,0.5},{1.3,6.3,-3.5,2.8},{5.6,0.9,8.1,-1.3},{1.5,0.4,3.7,5.9}}; 第 4 页 共 5 页 double g[N]={15.1,18,16.6,36.9}; Gauss(a,g,4); } 运行结果、; 五、总结 1. 通过本实验加深对Jacobi迭代法、Gauss-Seidel迭代法、松弛迭代法的构造过程的理解。 2. 通过对上述三种迭代法提出正确的算法描述编程实现,进一步理解迭代法的改进过程。 3. 比较两种迭代可知:Gauss-Seidel迭代法求解比Jacobi迭代法收敛速度较快。 六、附录 第 5 页 共 5 页