数值分析_迭代法

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

华北科技学院上机报告

系(部)

专业、班级

学号

课程名称数值分析

上机题目实验六,实验七

任课教师

指导教师

成绩(优、良、中、及格、不及格)

华北科技学院基础部

实验六 解线性方程组的迭代法

1.目的与要求:

1) 熟悉求解线性方程组的有关理论哈方法。 2) 会编制雅可比迭代和高斯—塞得尔迭代法。

3) 通过实际计算,进一步了解各算法的优缺点,选择合适的数值方法。

2.雅可比迭代法

算法

设方程组AX=b 的系数矩阵的对角元素0(1,2,

,),ii

i n a

≠=M 为迭代次数容许的最大值,ε

为容许误差.

① 取初始向量(0)(0)(0),(,,,)12T

x x x x n =令k=0;

② 对1,2,,i n =计算

(1)

()11();n

k k i

i ij j j ii

j i

x

b a x a +=≠=

-∑

③ 如果

(1)()

1

,n

k k i

i

i x

x ε+=-<∑则输出(1)

k x

+,结束;否则执行④,

④ 如果,k M ≥则不收敛,终止程序;否则1,k k ←+转②.

1.分别用雅可比迭代法与高斯-塞德尔迭代法解下列方程组:

2),311300010000

151335901100002709311000000

230010793000090,0

00305770502000007473000120000030410070000500272700

2

2910RI V R V =---⎡⎤⎡⎤⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥---⎢⎥⎢⎢⎥⎢==----⎢⎥⎢-⎢⎥⎢⎢⎥⎢--⎢⎥⎢--⎢⎥⎢⎢⎥⎢--⎣

⎦⎣⎦其中⎥⎥⎥⎥

⎥⎥⎥

1.用雅可比迭代法计算: #include "stdafx.h" #include "iostream.h"

#include"stdio.h"

#include"math.h"

#include"conio.h"

#include"malloc.h"

#include

#define EPS 1e-8

#define MAX 100

float *Jacobi(float a[9][10],int n) {

float *x,*y,s;

double epsilon;

int i,j,k=1;

x=(float *)malloc(n*sizeof(float));

y=(float *)malloc(n*sizeof(float)); for(i=0;i

x[i]=0;

while(1)

{ k++;

epsilon=0;

for(i=0;i

{

s=0;

for(j=0;j

{

if(j==i) continue;

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

}

y[i]=(a[i][n]-s)/a[i][i];

epsilon=epsilon+fabs(y[i]-x[i]);

}

//if (epsilon>EPS);

if(k>=MAX)

{

return y;

}

for(i=0;i

x[i]=y[i];

}

}

void main()

{

int i;

float a[9][10]={{31,-13,0,0,0,-10,0,0,0,-15}, {-13,35,-9,0,-11,0,0,0,0,27},

{0,-9,31,-10,0,0,0,0,0,-23},

{0,0,-10,79,-30,0,0,0,-9,0},

{0,0,0,-30,57,-7,0,-5,0,-20},

{0,0,0,0,7,47,-30,0,0,12},

{0,0,0,0,0,-30,41,0,0,-7},

{0,0,0,0,-5,0,0,27,-2,7},

{0,0,0,0,0,0,0,-2,29,-10}};

float *x;

x=(float *)malloc(9*sizeof(float));

printf("结果为:\n");

x=Jacobi(a,9);

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

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

}

程序运行结果如下:

结果为:

x[0]=-0.200550

x[1]=0.368393

x[2]=-0.731859

x[3]=-0.300318

x[4]=-0.446577

x[5]=0.399384

x[6]=0.121501

x[7]=0.151792

x[8]=-0.334359

Press any key to continue

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

#include "stdafx.h"

#include"stdio.h"

#include"math.h"

#include"conio.h"

相关文档
最新文档