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

实验报告内容

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

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

⎧8x 1-3x 2+2x 3=20 ⎪⎨4x 1+11x 2-x 3=33 ⎪6x +3x +12x =3623⎩1

使得误差不超过10 -4

2. 用不动点迭代法求方程的实根:

x 3+2x 2+10x -20=0

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

1. 雅可比迭代法

⎧⎨⎩x (k +1) i =1a ii [b i -∑a j =1

j ≠i n i j x (k ) j ]

i =1, 2, . . n . ,

(0)k =0, 1, 2, . . . (0)x 其中=(x 1, x 2,... x n (0)(0))T 为初始向量.

2. 高斯-塞德尔迭代法

⎧⎨⎩x i (k +1) =1a ii [b i -∑a ij x j j =1i -1(k +1) -∑a ij x j j =i +1n (k ) ]

i =1, 2, n , k =0, 1, 2,...

3. 不动点迭代法

• x

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

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

1. 雅可比迭代法

#include "stdio.h"

#include "math.h"

#include "string.h"

main()

{

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

{for(i=0;i

{

for(j=0;j

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

for(j=i+1;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

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 循环语句。还有不动点迭代法解方程的根,对这几种迭代方法有了更好的理解,并能通过编程和调试实现算法,完成了实验内容,收获很大。

实验报告内容

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

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

⎧8x 1-3x 2+2x 3=20 ⎪⎨4x 1+11x 2-x 3=33 ⎪6x +3x +12x =3623⎩1

使得误差不超过10 -4

2. 用不动点迭代法求方程的实根:

x 3+2x 2+10x -20=0

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

1. 雅可比迭代法

⎧⎨⎩x (k +1) i =1a ii [b i -∑a j =1

j ≠i n i j x (k ) j ]

i =1, 2, . . n . ,

(0)k =0, 1, 2, . . . (0)x 其中=(x 1, x 2,... x n (0)(0))T 为初始向量.

2. 高斯-塞德尔迭代法

⎧⎨⎩x i (k +1) =1a ii [b i -∑a ij x j j =1i -1(k +1) -∑a ij x j j =i +1n (k ) ]

i =1, 2, n , k =0, 1, 2,...

3. 不动点迭代法

• x

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

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

1. 雅可比迭代法

#include "stdio.h"

#include "math.h"

#include "string.h"

main()

{

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

{for(i=0;i

{

for(j=0;j

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

for(j=i+1;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

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 循环语句。还有不动点迭代法解方程的根,对这几种迭代方法有了更好的理解,并能通过编程和调试实现算法,完成了实验内容,收获很大。


相关内容

  • 线性方程组的迭代解法及收敛分析
  • 河南科技学院 2015届本科毕业论文 论文题目:线性方程组的三种迭代解法 及收敛分析 学生姓名: 韦成州 所在院系: 数学科学学院 所学专业: 信息与计算科学 导师姓名: 李巧萍 完成时间: 2015年5月20日 线性方程组的三种迭代解法及收敛分析 摘 要 对于线性方程组的迭代解法,本文重点讨论雅可 ...

  • 数学建模的实验报告
  • 数学建模 实验报告 姓名:学院: 专业班级: 学号: 数学建模实验报告(一) --用最小二乘法进行数据拟合 一.实验目的: 1. 学会用最小二乘法进行数据拟合. 2. 熟悉掌握matlab 软件的文件操作和命令环境. 3. 掌握数据可视化的基本操作步骤. 4. 通过matlab 绘制二维图形以及三维 ...

  • 高斯消去法高斯塞德尔迭代法
  • 数值计算 高斯消去法和高斯-塞德尔迭代法 摘要 虽然已学过加减消元法.代入消元法.矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法.线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析. 一 ...

  • 数值分析考试题
  • 邢台学院2015-2016学年第二学期期末考试 2013级本科.2015级接本数学与应用数学专业 <数值分析>试题(A 卷) (本试卷满分100分,考试时间110分钟) 一.判断题 (每小题3分,共24分) 1.解对数据的微小变化高度敏感是病态的. 2.当f (x ) 为连续函数,节点x ...

  • 数值计算基础
  • 数值计算基础 实验指导书 2010年 目录 实验一 直接法解线性方程组的 ................................ 1 实验二 插值方法 ........................................... 10 实验三 数值积分 ............. ...

  • 数值分析讲义--线性方程组的解法
  • 第三章 线性方程组的解法 3.0 引 言 重要性:解线性代数方程组的有效方法在计算数学和科学计算中具有特 殊的地位和作用. 如弹性力学.电路分析.热传导和振动.以及社会科学及定量分析商业经济中的各种问题. 分类:线性方程组的解法可分为直接法和迭代法两种方法. (a) 直接法:对于给定的方程组,在没有 ...

  • 线性方程组的解法
  • 第五章 线性代数方程组的解法 分两种方法: 1.直接法;  2.迭代法. §1.直接法 (1) 高斯消去法:(基本思想)将给定的线性代数方程组转化为具有相同解的三角形方程组求解. *** x1b1*a11a12La1a11a12La1nx1b1n axb ...

  • 有无穷解的线性方程组的迭代法_田学全
  • 第16卷 第2期塔 里 木 农 垦 大 学 学 报Vol.16No.2 2004年6月JournalofTarimUniversityofAgriculturalReclamationJun.2004 ① 文章编号:1009-0568(2004)02-0055-02 有无穷解的线性方程组的迭代法 田 ...

  • 有限元法基本原理与应用
  • 有限元法基本原理与应用 班级 机械2081 姓名 方志平 指导老师 钟相强 摘要:有限元法的基础是变分原理和加权余量法,其基本求解思想是把计算域划分为有限 个互不重叠的单元,在每个单元内,选择一些合适的节点作为求解函数的插值点,将微分 方程中的变量改写成由各变量或其导数的节点值与所选用的插值函数组成 ...