实验课程名称:数值分析
实验项目名称 实验者 运用插值法 江骏 软件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
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 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}