雅可比迭代法和高斯-塞德尔迭代法求解线性方程组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告内容

一 实验目的与要求(实验题目)

1.分别利用雅可比迭代法和高斯-塞德尔迭代法求解以下线性方程组

使得误差不超过 2.用不动点迭代法求方程的实根:

02010223=-++x x x

二 模型建立(相关主要计算公式)

1. 雅可比迭代法

⎨⎧[],...,,k ,n ,...,i x a b a x n i j j )k (j j i i ii )k (i 21021111==∑-=≠=+ 其中()()()()()T n x ,...x ,x x 002010=为初始向量.

2.高斯-塞德尔迭代法

⎩⎨⎧[]

,...

,,k ,n ,,i x a x a b a x i j n i j )k (j ij )k (j ij i ii )k (i 21021111111==∑∑--=-=+=++

3.不动点迭代法

• ...1,0),(1==+k x x

k k ϕ

三、 实验过程、步骤(程序)

1. 雅可比迭代法

#include "stdio.h"

#include "math.h"

#include "string.h"

main()

{

⎪⎩⎪⎨⎧=++=-+=+-3612363311420238321321321x x x x x x x x x 4

10-

int i,j,k;

float m1=0.0,m2=0.0;

float a[3][4]={8,-3,2,20,4,11,-1,33,6,3,12,36};

float x[3]={0.0,0.0,0.0};

for(k=1;k<=10;)

{for(i=0;i<=2;i++)

{

for(j=0;j

m1=m1+a[i][j]*x[j];

for(j=i+1;j<=2;j++)

m2=m2+a[i][j]*x[j];

x[i]=(a[i][3]-m1-m2)/a[i][i];

m1=0,m2=0;

}

k++;

}

printf("雅可比迭代法计算结果为:\n");

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

printf("x[%2d]=%8.9f\n",i+1,x[i]);

}

2高斯-塞德尔迭代法

#include

#include

# define n 3

void main()

{

int i,j,k=1;

float x[n]={0,0,0},m[n]={0,0,0},s=1;

float a[n][n]={8,-3,2,4,11,-1,6,3,12},d[n]={20,33,36}; printf("高斯-塞德尔迭代法运算结果为:\n");

for(k=0;fabs(s-x[0])>1e-6;k++)

{

s=x[0];

for(i=0;i

{m[i]=0;

for(j=0;j

m[i]=m[i]+d[i]+a[i][i]*x[i];

x[i]=m[i]/a[i][i];}

printf("Y1=%f Y2=%f Y3=%f\n",x[0],x[1],x[2]); }

getchar() ;

}

3.

#include

#include

double f( double x )

{

return x * x * x + 2 * x * x + 10 * x - 20;

}

double fdx( double x )

{

return 3 * x * x + 18.4 * x + 16.7;

}

int main( )

{

int t1 = 0, t2 = 1;

double x[ 2 ], ep = 1e-8;

x[ 0 ] = 0;

do

{

t1 = 1 - t1;

t2 = 1 - t2;

x[ t1 ] = x[ t2 ] - f( x[ t2 ] ) / fdx( x[ t2 ] );

}

while( fabs( x[ t1 ] - x[ t2 ] ) > ep );

printf("解得x=%lf\n", x[ t1 ]);

return 0;

}

四.实验结果:

1.雅可比迭代法:

2.高斯-塞德尔迭代法:

.

3.不动点迭代法:

五.实验小结

通过这次上机,学会了用Jacobis迭代法,高斯-塞德尔迭代法求解线性方程组,算法程序比较复杂,特别是要多次使用数组条件及for循环语句。还有不动点迭代法解方程的根,对这几种迭代方法有了更好的理解,并能通过编程和调试实现算法,完成了实验内容,收获很大。

相关文档
最新文档