数值分析_迭代法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"