雅克比迭代法…… 下载本文

实验课程名称:数值分析

实验项目名称 实验者 运用插值法 江骏 软件0803 实验成绩 专业班级 组别 年 月 日 同组者 实验日期 第一部分:实验分析与设计

一、 实验内容描述 ⑴研究用Jacobi迭代法与 Gauss-Seidel迭代法解下列方程组 否正确,并观察右端项对迭代收敛是否有影响,比较两法的收敛速度 ⑵松弛因子对超松弛因子迭代法收敛速度的影响,要求对不同的阶数进行迭代 ⑶观察欧拉显式方法的收敛性 ⑷观察欧拉隐式方法的收敛性 ⑸写出实验报告 Ax=b的收敛性,通过上机计算,验证分析是 二、 实验基本原理与设计 ① Jacobi迭代法:刀1=1玄耳xj=b(i=1,2,…,n) ② Gauss-Seidel 迭代法:x iX(k+1)(K+1) =[b i-刀 j=1 ajXj =Dx +Ex (k)(k+1)i-1(k+1)(k)-刀爲+1 (k)为 ]/a j (k)③ 超松弛因子迭代法: Dx =x+DR (k)-1(k+1) +Fx +b-Dx ④ 三角分解法:利用三角矩阵将方程组化解为两个方程组,从而简化运算。 ⑤ 欧拉显式方法:在任意节点 tn+1=to+(n+1)h处,u(t n+1)的近似值由Euler公式给出: Un+1=Un+hf(t n,u n) ⑥ 欧拉隐式方法:改进的 Euler公式y n+1=yn+hf(x n,y n) h yn+1=yn+ [f(x n,y n)+f(x n+1, y n+1)] 2 三、 主要仪器设备及耗材 Win dowsXp VC++6.0 第二部分:实验调试与结果分析 一、调试过程 ① Jacobi迭代法 #in clude #defi ne N 10 float ABS(float,float); int main (void) { int i, j, n; float a[N][N], b[N];

float x[N], y[N]; float e,total;

printf (\:”); scanf (\

printf (\for (j = 0; j < n; j++) scanf (\

printf (\for (i = 0; i < n; i++) scanf (”%f\

printf (\for (i = 0; i < n; i++) scanf (\do {

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

total = 0.0f;

for (j = 0; j < n; j++) {

if (i != j)

total += a[i][j] * x[j]; }

y[i] = (b[i] - total) / a[i][i]; } e=0.0f;

for (j = 0; j < n; j++) e = e + ABS(x[j], y[j]); prin tf(\for (i = 0; i < n; i++) x[i] = y[i]; }

while (e > 0.0001); for (i = 0; i < n; i++)

printf (\printf (\return 0; }

float ABS(float x,float y) {

int total; if(x

}

结果

cQ \\Docuaents and SettincsXAd&inistrator\\Debug\\iohasas?EHG\

Please Pie ase input the dimension : 3 in put the CoefFiclent Matrix: 6 2-114-2-314 Uector: —324 Pie ase input the initial vector: 0 fl 6 Please input the :L?000000 0.000000 x2 =0-5000flB xl \?1L 25060 x0=-0^500000 Ppess any kw屮 to continue 流程图:

② Gauss-Seidel迭代法 #in clude int mai n() {

double x[3] = {0, 0, 0};

P:=? ln QqnopH

puno二二 寸

u- Ze-)

- 5 H6 S-

A5

5

A (\曰+6

+TO+VoOvU

D

一」OO.II4)

」兰三O4e

二二 兰曰殳日三亨-

0 J_'lrm

\二p H)(—Tpuno+o」)v①

-一ZOM.II )

」宀 O宀4 D

」(O+4+

兰O V6\O><

_

U

sx * _m=p% =¥£ u=_

><

」 宀d

二一X--J_

宀 )

上M u_=」ud

r

二寸-寸-

L-VZ9}