迭代法实验汇总

合集下载

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告

迭代法解线性方程组数值分析实验报告一、实验目的本次实验旨在深入研究和掌握迭代法求解线性方程组的基本原理和方法,并通过数值实验分析其性能和特点。

具体目标包括:1、理解迭代法的基本思想和迭代公式的推导过程。

2、掌握雅克比(Jacobi)迭代法、高斯赛德尔(GaussSeidel)迭代法和超松弛(SOR)迭代法的算法实现。

3、通过实验比较不同迭代法在求解不同类型线性方程组时的收敛速度和精度。

4、分析迭代法的收敛性条件和影响收敛速度的因素。

二、实验原理1、线性方程组的一般形式对于线性方程组$Ax = b$,其中$A$ 是$n×n$ 的系数矩阵,$x$ 是$n$ 维未知向量,$b$ 是$n$ 维常向量。

2、迭代法的基本思想迭代法是从一个初始向量$x^{(0)}$出发,按照某种迭代公式逐步生成近似解序列$\{x^{(k)}\}$,当迭代次数$k$ 足够大时,$x^{(k)}$逼近方程组的精确解。

3、雅克比迭代法将系数矩阵$A$ 分解为$A = D L U$,其中$D$ 是对角矩阵,$L$ 和$U$ 分别是下三角矩阵和上三角矩阵。

雅克比迭代公式为:$x^{(k+1)}= D^{-1}(b +(L + U)x^{(k)})$。

4、高斯赛德尔迭代法在雅克比迭代法的基础上,每次计算新的分量时立即使用刚得到的最新值,迭代公式为:$x_i^{(k+1)}=(b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i+1}^{n}a_{ij}x_j^{(k)})/a_{ii}$。

5、超松弛迭代法在高斯赛德尔迭代法的基础上引入松弛因子$\omega$,迭代公式为:$x_i^{(k+1)}= x_i^{(k)}+\omega((b_i \sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}\sum_{j=i}^{n}a_{ij}x_j^{(k)})/ a_{ii} x_i^{(k)})$。

雅各比迭代实验报告(3篇)

雅各比迭代实验报告(3篇)

第1篇一、实验目的1. 理解雅各比迭代法的原理和应用。

2. 掌握雅各比迭代法的计算步骤和实现方法。

3. 通过实验验证雅各比迭代法在求解线性方程组中的有效性和收敛性。

二、实验原理雅各比迭代法是一种求解线性方程组的迭代方法。

对于形如Ax=b的线性方程组,其中A是n×n的系数矩阵,x是n维未知向量,b是n维常数向量,雅各比迭代法的基本思想是将方程组Ax=b转化为一系列的简单方程进行迭代求解。

设A为对角占优矩阵,则雅各比迭代法的迭代公式为:x_{k+1} = (D - L)^{-1}(b - Ux_k)其中,D是A的对角矩阵,L是A的非对角元素中下三角矩阵,U是A的非对角元素中上三角矩阵。

三、实验内容1. 准备实验环境:安装MATLAB软件,创建实验文件夹。

2. 编写实验程序:(1)定义系数矩阵A和常数向量b。

(2)计算对角矩阵D、下三角矩阵L和上三角矩阵U。

(3)初始化迭代变量x_0。

(4)设置迭代次数N和容许误差ε。

(5)进行雅各比迭代计算,并输出每一步的迭代结果。

(6)判断迭代是否收敛,若收敛则输出最终结果,否则输出未收敛信息。

3. 运行实验程序,观察迭代过程和结果。

四、实验步骤1. 创建实验文件夹,打开MATLAB软件。

2. 编写实验程序,保存为“雅各比迭代法实验.m”。

3. 运行实验程序,观察迭代过程和结果。

4. 分析实验结果,验证雅各比迭代法的有效性和收敛性。

五、实验结果与分析1. 运行实验程序,得到以下迭代过程和结果:迭代次数 | 迭代结果---------|---------1 | x_1 = [0.3333, 0.3333]2 | x_2 = [0.3333, 0.3333]3 | x_3 = [0.3333, 0.3333]...N | x_N = [0.3333, 0.3333]2. 分析实验结果:(1)从实验结果可以看出,雅各比迭代法在求解线性方程组时,经过有限次迭代即可收敛。

《数学实验》实验报告——迭代法

《数学实验》实验报告——迭代法

3.线性方程组的迭代求解
给定一个 n 元线性方程组
a11 x1 a12 x 2 a1 n xn 0 a x a x a x 0 21 1 22 2 2n n am 1 x1 am 2 x 2 amn xn 0

观察序列,并且判断极限。 Mathematica 程序如下:
当 x0=0.1,n=10 时,运行程序得
当 x0=0.5,n=10 时,运行程序得
当 x0=0.9,n=10 时,运行程序得
当 x0=1,n=10 时,运行程序得
实验结论:
10
由以上实验可得,函数 f(x)=x/2+1/x 的极限为 1.41421
运行程序结果如下:
实验结论:
试验中假设矩阵 A 的对角元素 aii<>0,i=1,2,3,…n.令 D=diag(a11,a12,,,….ann),则可以将 方程 Ax=b 转化成 x=(U+L)x+D-1b 其中 U 为下三角阵,L 为上三角阵。如果 U+L 的行列式 最大特征值的绝对值小于 1,则线性方程组有解且唯一。
写成 Ax=b 的形式, 再将其改写成 x=M*x=f 其中 M 是 n 阶矩阵, f=(f1,f2,f3,f4….fn)T 是 n 维列向量,给定 x0,由迭代 x(n+1)=M*x^n+f,n=0,1,2,3,4…..对给定的矩阵 M 数组 f 和 初始值 x0,由 x(n+1)=M*x^n+f,n=0,1,2,3,4…..用 mathematic 可得迭代结果。 迭代程序如下:
《数学实验》实验报告
班级 实验 内容 **** 学号 **** 姓名 实验 类别 **** 成绩 实验 时间

《数学实验》实验报告——迭代法

《数学实验》实验报告——迭代法

观察序列,并且判断极限。 Mathematica 程序如下:
当 x0=0.1,n=10 时,运行程序得
当 x0=0.5,n=10 时,运行程序得
当 x0=0.9,n=10 时,运行程序得
当 x0=1,n=10 时,运行程序得
实验结论:
10
由以上实验可得,函数 f(x)=x/2+1/x 的极限为 1.41421
《数学实验》实验报告
班级 实验 内容 **** 学号 **** 姓名 实验 类别 **** 成绩 实验 时间
迭代法
自选实验
2011.6.7
实验问题:
n 元线性方程组
a11 x1 a12 x 2 a1 n xn 0 a x a x a x 0 21 1 22 2 2n n am 1 x1 am 2 x 2 amn xn 0
其中,f[x_]:=为所求迭代函数,迭代n次产生相应是序列,并观察。
(3)线性方程组的迭代求解 对给定的矩阵 M、 数组 f 和初始向量 x0, 由 X^(n+1)=Mx^n+f,n=0,1,2,3……给定的结 果 其 Matheatica 程序如下:

实验过程:
1.迭代序列 ( 1 ) 给 定 的 实 数 域 上 光 滑 的 实 值 函 数 f(x) 以 及 初 值 x0, 定 义 数 列 x(n+1)=f(x0),n=0,1,2,3,……. 对函数 f(x)= (25*x - 85)/(x + 3)的迭代过程,可以形象地用蜘蛛网图像来直观地显示,运 行以下程序:
2.方程求根
用迭代序列求 g(x)=x^3-2*x+1 的根,其 matheatic 程序如下:

MAAB计算方法迭代法牛顿法二分法实验报告

MAAB计算方法迭代法牛顿法二分法实验报告

MAAB计算方法迭代法牛顿法二分法实验报告实验目的:比较MAAB计算方法中迭代法、牛顿法和二分法的优缺点,探究它们在求解方程中的应用效果。

实验原理:1、迭代法:将方程转化为x=f(x)的形式,通过不断迭代逼近方程的根。

2、牛顿法:利用函数在特定点的切线逼近根的位置,通过不断迭代找到方程的根。

3、二分法:利用函数值在区间两端的异号性质,通过不断二分缩小区间,最终逼近方程的根。

实验步骤:1、选择一元方程进行求解,并根据方程选择不同的计算方法。

2、在迭代法中,根据给定的初始值和迭代公式,进行迭代计算,直到满足预设的迭代精度要求。

3、在牛顿法中,选择初始点,并根据切线方程进行迭代计算,直到满足预设的迭代精度要求。

4、在二分法中,选择区间,并根据函数值的异号性质进行二分,直到满足预设的迭代精度要求。

5、根据计算结果,比较三种方法的求解效果,包括迭代次数、计算时间、求解精度等指标。

实验结果与分析:通过对多个方程进行测试,得到了以下实验结果:1、迭代法的优点是简单易懂,适用范围广,但当迭代公式不收敛时会导致计算结果不准确。

2、牛顿法的优点是收敛速度较快,但需要计算函数的一阶导数和二阶导数,对于复杂函数较难求解。

3、二分法的优点是收敛性较好,不需要导数信息,但收敛速度较慢。

4、对于线性方程和非线性方程的求解,牛顿法和迭代法通常比二分法更快速收敛。

5、对于多重根的方程,二分法没有明显优势,而牛顿法和迭代法能更好地逼近根的位置。

6、在不同的方程和初值选择下,三种方法的迭代次数和求解精度略有差异。

7、在时间效率方面,二分法在收敛速度较慢的同时,迭代次数较少,牛顿法在收敛速度较快的同时,迭代次数较多,而迭代法对于不同方程有较好的平衡。

结论:1、对于不同类型的方程求解,可以根据具体情况选择合适的计算方法。

2、迭代法、牛顿法和二分法各有优缺点,没有绝对的最优方法,需要权衡各种因素选择最适合的方法。

3、在实际应用中,可以根据方程的特点和精度要求综合考虑不同方法的优劣势,以获得较好的求解效果。

实验五-解线性方程组的迭代法报告

实验五-解线性方程组的迭代法报告

实验五 解线性方程组的迭代法一、问题提出对实验四所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 方法计算其解。

二、要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,如34510,10,10ε---=由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。

三、目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤(1)k k xx ε+∞-<或k>(给予的迭代次数),对迭代法敛散性的意义;4、 体会初始解0x ,松弛因子的选取,对计算结果的影响。

四、实验学时:2学时五、实验步骤:1.进入C 或matlab 开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告,讨论分析实验结果.解:J迭代算法:程序设计流程图:源程序代码:#include<stdlib.h>#include<stdio.h>#include<math.h>void main(){float a[50][51],x1[50],x2[50],temp=0,fnum=0;int i,j,m,n,e,bk=0;printf("使用Jacobi迭代法求解方程组:\n");printf("输入方程组的元:\nn=");scanf("%d",&n);for(i=1;i<n+1;i++)x1[i]=0;printf("输入方程组的系数矩阵:\n");for(i=1;i<n+1;i++){j=1;while(j<n+1){scanf("%f",&a[i][j]);j++;}}printf("输入方程组的常数项:\n");for(i=1;i<n+1;i++){scanf("%f",&a[i][n+1]);}printf("\n");printf("请输入迭代次数:\n");scanf("%d",&m);printf("请输入迭代精度:\n");scanf("%d",&e);while(m!=0){for(i=1;i<n+1;i++){for(j=1;j<n+1;j++){if (j!=i)temp=a[i][j]*x1[j]+temp;}x2[i]=(a[i][n+1]-temp)/a[i][i];temp=0;}for(i=1;i<n+1;i++){fnum=float(fabs(x1[i]-x2[i]));if(fnum>temp) temp=fnum;}if(temp<=pow(10,-4)) bk=1;for(i=1;i<n+1;i++)x1[i]=x2[i];m--;}printf("原方程组的解为:\n");for(i=1;i<n+1;i++){if((x1[i]-x2[i])<=e||(x2[i]-x1[i])<=e){printf("x%d=%7.4f ",i,x1[i]);}}}运行结果:GS迭代算法:#include<iostream.h>#include<math.h>#include<stdio.h>const int m=11;void main(){int choice=1;while(choice==1){double a[m][m],b[m],e,x[m],y[m],w,se,max; int n,i,j,N,k;cout<<"Gauss-Seidol迭代法"<<endl;cout<<"请输入方程的个数:";cin>>n;for(i=1;i<=n;i++){cout<<"请输入第"<<i<<"个方程的各项系数:"; for(j=1;j<=n;j++)cin>>a[i][j];}cout<<"请输入各个方程等号右边的常数项:\n"; for(i=1;i<=n;i++){cin>>b[i];}cout<<"请输入最大迭代次数:";cin>>N;cout<<"请输入最大偏差:";cin>>e;for(i=1;i<=n;i++){x[i]=0;y[i]=x[i];}k=0;while(k!=N){k++;for(i=1;i<=n;i++){w=0;for(j=1;j<=n;j++){if(j!=i)w=w+a[i][j]*y[j];}y[i]=(b[i]-w)/double(a[i][i]);}max=fabs(x[1]-y[1]);for(i=1;i<=n;i++){se=fabs(x[i]-y[i]);if(se>max)max=se;}if(max<e){cout<<endl;for(i=1;i<=n;i++)cout<<"x"<<i<<"="<<y[i]<<endl; break;}for(i=1;i<=n;i++){x[i]=y[i];}}if(k==N)cout<<"迭代失败!!"<<endl;choice=0;}}SOR方法:# include <stdio.h># include <math.h>#include<stdlib.h>/**********定义全局变量**********/float **a; /*存放A矩阵*/float *b; /*存放b矩阵*/float *x; /*存放x矩阵*/float p; /*精确度*/float w; /*松弛因子*/int n; /*未知数个数*/int c; /*最大迭代次数*/int k=1; /*实际迭代次数*//**********SOR迭代法**********/void SOR(float xk[]){int i,j;float t=0.0;float tt=0.0;float *xl;xl=(float *)malloc(sizeof(float)*(n+1)); for(i=1;i<n+1;i++){t=0.0;tt=0.0;for(j=1;j<i;j++)t=t+a[i][j]*xl[j];for(j=i;j<n+1;j++)tt=tt+a[i][j]*xk[j];xl[i]=xk[i]+w*(b[i]-t-tt)/a[i][i];}t=0.0;for(i=1;i<n+1;i++){tt=fabs(xl[i]-xk[i]);tt=tt*tt;t+=tt;}t=sqrt(t);for(i=1;i<n+1;i++)xk[i]=xl[i];if(k+1>c){if(t<=p)printf("\nReach the given precision!\n"); elseprintf("\nover the maximal count!\n");printf("\nCount number is %d\n",k);}elseif(t>p){k++;SOR(xk);}else{printf("\nReach the given precision!\n"); printf("\nCount number is %d\n",k);}}/**********程序*****开始**********/void main(){int i,j;printf("SOR方法\n");printf("请输入方程个数:\n");scanf("%d",&n);a=(float **)malloc(sizeof(float)*(n+1)); for(i=0;i<n+1;i++)a[i]=(float*)malloc(sizeof(float)*(n+1));printf("请输入三对角矩阵:\n");for(i=1;i<n+1;i++)for(j=1;j<n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<n+1;i++)for(j=1;j<n;j++)b=(float *)malloc(sizeof(float)*(n+1)); printf("请输入等号右边的值:\n");for(i=1;i<n+1;i++)scanf("%f",&b[i]);x=(float *)malloc(sizeof(float)*(n+1)); printf("请输入初始的x:");for(i=1;i<n+1;i++)scanf("%f",&x[i]);printf("请输入精确度:");scanf("%f",&p);printf("请输入迭代次数:");scanf("%d",&c);printf("请输入w(0<w<2):\n");scanf("%f",&w);SOR(x);printf("方程的结果为:\n");for(i=1;i<n+1;i++)printf("x[%d]=%f\n",i,x[i]);}程序运行结果讨论和分析:①迭代法具有需要计算机的存贮单元较少,程序设计简单,原始系数矩阵在计算过程中始终不变等优点.②迭代法在收敛性及收敛速度等方面存在问题.[注:A必须满足一定的条件下才能运用以下三种迭代法之一.在Jacobi中不用产生的新数据信息,每次都要计算一次矩阵与向量的乘法,而在Gauss利用新产生的信息数据来计算矩阵与向量的乘法.在SOR中必须选择一个最佳的松弛因子,才能使收敛加速.]经过计算可知Gauss-Seidel方法比Jacobi方法剩点计算量,也是Jacobi方法的改进.可是精确度底,计算量高,费时间,需要改进.SOR是进一步改进Gauss-Seidel 而得到的比Jacobi,Gauss-Seidel方法收敛速度快,综合性强.改变松弛因子的取值范围来可以得到Jacobi,Gauss-Seidel方法.③选择一个适当的松弛因子是关键.结论:线性方程组1和2对于Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法均不收敛,线性方程组3收敛。

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

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

实验4 解线性方程组的迭代法一、稀疏矩阵的生成和运算实验内容:稀疏矩阵相关命令的熟悉。

实验要求:1、熟悉sparse、full、nnz、spy等命令的使用方法.(实验报告)注意:spy使用时要加上输入参数,直接运行spy会出现与本课程无关的结果。

2、了解sprand命令的用法。

3、熟悉speye、condest、normest、spdiags等命令的使用方法,并生成107阶的三对角矩阵:(实验报告)二、大型稀疏线性方程组的求解实验内容:用不同的迭代法求解n阶大型稀疏矩阵Ax=b(n=1e+4)。

实验要求:(1)数学问题的生成:(a)使用sprand命令生成,稀疏度0.001,并通过spy观察矩阵的结构;(b)运行PPT第21页的两段代码,分别生成A,运行结果有什么区别?注意:如果用稠密方式生成矩阵,可能会导致内存不够。

(2)增大矩阵阶数到1e+6,使用MATLAB自带的pcg与“\”运算,以及分别Gauss消去法、Jacobi迭代法和Gauss-Seidel迭代法分别求解以下Sx=b,看看运算时间对比:(实验报告)b为全1向量,S为以下代码所生成:m=1000,n=m*m;eone=ones(m,1);s=spdiags([-eone,8*eone,-eone],[-1,0,1],m,m);E=speye(m);a1=blkdiag(kron(E,s));a2=spdiags([ones(n,1)],[m],n,n);A=a1-a2-a2';注意:pcg命令只适用于对称正定矩阵三、病态的线性方程组的求解实验内容:考虑方程组Hx=b的求解,其中系数矩阵H为Hilbert矩阵,首先给定解(例如取为各个分量均为1)再计算出右端b的办法给出确定的问题。

实验要求:(1)设定n=6,分别用Gauss消去法、Jacobi迭代法和Gauss-Seidel迭代法求解方程组,其各自的结果如何?各方法的误差比较如何?(实验报告)(2)逐步增大问题的维数100、1000、3000,仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(实验报告)。

迭代法求解方程问题实验报告

迭代法求解方程问题实验报告

迭代法求解方程问题实验报告姓名:殷伯旭 班级:信计0801班 学号:u200810065一. 实验目的运用数学知识与matlab 相结合,运用数学方法,建立数学模型,用matlab 软件辅助求解模型,解决实际问题。

二. 实验任务求方程1020x e x +-=的一个近似解,误差不超过410-,要求: 设计4种求解的迭代法,讨论其收敛性,并求出满足精度的近似解;三. 实验分析与求解题目要求设计四种迭代方法,我们考虑用书上的四种迭代思想:方法一:用Steffenson 迭代法,首先构造函数:2()10xe g x -=, 则迭代公式为:21(())k k k k k k kg x x x x +-=- 方法二:一般的迭代法,1210k k x e x +-=方法三:单点弦截法法,固定01()()()()0.25,f a b a f b f a a x x --==-, 其中端点120,a b ==,则迭代公式为:010()()()()k k k k k f x x x x x f x f x +=--- 方法四:双点弦截法法,迭代公式为:111()()()()k k k k k k k f x x x x x f x f x +--=--- 实验程序:function shiyan112%%%%%方法一: stefften 迭代x0=0.25;g0=(2-exp(x0))/10;gg0=(2-exp(g0))/10;x1=x0-(g0-x0)^2/(gg0-2*g0+x0);n1=0;while abs(x1-x0)>0.00001x0=x1;g0=(2-exp(x0))/10;gg0=(2-exp(g0))/10;x1=x0-(g0-x0)^2/(gg0-2*g0+x0);n1=n1+1;x(n1)=x1;endn1x0=x1%%%%%方法二: 一般迭代x20=0.25;x21=(2-exp(x20))/10;n2=0;while abs(x21-x20)>0.00001x20=x21;x21=(2-exp(x20))/10;n2=n2+1;endn2x20=x21%%%%%方法三: 单点弦截法x30=0.25;a=0;b=0.5;n3=0;fa=exp(a)+10*a-2;fb=exp(b)+10*b-2;x31=a-fa*(b-a)/(fb-fa);f30=exp(x30)+10*x30-2;f31=exp(x31)+10*x31-2;x32=x31-f31*(x31-x30)/(f31-f30); while abs(x32-x31)>0.00001x31=x32;f31=exp(x31)+10*x31-2;x32=x31-f31*(x31-x30)/(f31-f30);n3=n3+1;endn3x30=x32%%%%%%%方法四:双点弦截法x40=0.25;x41=0.5;n4=0;f40=exp(x40)+10*x40-2;f41=exp(x41)+10*x41-2;x42=x41-f41*(x41-x40)/(f41-f40);while abs(x42-x41)>0.00001x40=x41;x41=x42;f40=exp(x40)+10*x40-2;f41=exp(x41)+10*x41-2;x42=x41-f41*(x41-x40)/(f41-f40);n4=n4+1;endn4x40=x42运行结果:(1) 方法一: x =0.0905 ; 迭代次数: n1 = 2(2)方法二: x =0.0905 ; 迭代次数: n2 = 5(3) 方法三: x =0.0905 ; 迭代次数: n3 = 2(4) 方法四: x =0.0905 ; 迭代次数: n4 =33)实验总结通过自主学习matlab,编程能力有了较大提高,并将其应用于数值代数刚学的一种思想,在加深对该领域印象的同时对matlab有了更深一层的了解。

迭代——方程求解、混沌实验报告

迭代——方程求解、混沌实验报告

设计题四:求线性方程的根组员:鲁利萍章程冯山林班级:信息与计算科学081指导教师:吴梅君完成日期:12月12日目录实验二十四:迭代——方程求解、混沌 (3)一、实验指导书解读 (3)二、试验计划 (3)1、迭代序列 (3)2、方程求根 (5)3、线性方程组的迭代求解 (6)4、蜘蛛网 (6)5、Feigenbaum图 (7)6、Logistic映射 (8)7、“听一听”混沌 (8)三、实验过程与结果 (8)1、迭代序列 (8)2、方程求根 (13)3、线性方程组的迭代求解 (14)4、蜘蛛网 (15)5、Feigenbaum图 (16)6、Logistic映射 (19)7、“听一听”混沌 (20)四、实验总结: (20)实验二十四:迭代——方程求解、混沌实验报告一、实验指导书解读本实验主要做三方面的工作:一是通过若干个函数通过迭代利用计算机求函数的不动点的近似值,在有关程序中改变有关参数值、初值、函数而体会序列敛散性(速度),通过蛛网图利用函数在不动点的导数来刻画不动点的类型;二是对一个方程(组)或几个方程(组)利用迭代求根(解),观察初值对序列敛散性的影响,比较不同迭代所形成的序列的求解效果,思考或研究有效迭代的条件;三是通过Logistic迭代函数中参数a的不同取值利用计算机研究序列发散时出现的周期收敛,利用计算机进行不同次数的迭代对Feigenbaum图体会分形的层次性与自相似性。

二、试验计划1、迭代序列(1)研究函数f(x)=(25x-85)/(x+3)的蛛网图(2)给定初值1及迭代函数f(x)=x/2+1/x,迭代n次产生相应的序列(3)给定初值1,分别就f(x)=(-x+15)/(x+1),g(x)=sinx做迭代序列{Xn}实验思路改变有关参数值、初值、函数思考:观察序列的通项并判断其敛散性,通过蛛网图利用函数在不动点的导数来刻画不动点的类型。

2、方程求根用迭代序列求g(x)=x^3-2x+1的根实验思路:改变初值思考:观察实验结果,求出方程的根3、线性方程组的迭代求解对给定的矩阵M,数组f和初始向量x^0,由已知的迭代结果求出线性方程组的解实验思路改变初值思考:观察结果,求出线性方程组的解;研究矩阵M的特征值对迭代序列的收敛性有何关系。

迭代法

迭代法
3、割线法和 Newton 法要求接近,但是免去了求导运算的过程。
[附录]迭代法源程序(C 语言)
#include<stdio.h> #include<math.h> #define M 50
3
#define error 0.00005 double f(double x)//函数定义 { return x*x*x-2*x-5; } double df(double x)//导函数 {
若再粗略一点,以������[
������0,
������������ ]
=
������(������������)−������( ������0)代替微商,可得:
������������− ������0
������������+1
=
������������

(������������ − ������0)������(������������) ������(������������) − ������(������0)

计算|
������������+1−������������ (������������−������������−1)2
|结果为
0.000064,此结果趋向于
0
7
7830
8
3915
故可认为此方程 Newton 迭代得到的收敛速度为一阶收敛。
(b): ������ = 8时的迭代结果
迭代次数 近似解
8
1.901016
故可认为此方程 Newton 迭代得到的收敛速度为二阶收敛。
五、实验结论
1、迭代法的效率远高于二分法的效率,但是简单迭代法对初始区间有要求, 即其迭代格式的收敛性与区间有关,需要满足一定的条件。

数值计算线性方程迭代法实验

数值计算线性方程迭代法实验

实验报告一一、实验目的理解线性方程组直接法与迭代法思想,掌握常用算法的设计,掌握用MATLAB 实现的数值解法。

二、实验题目实验一 线性方程组迭代法实验 1、 迭代法的收敛速度用迭代法分别对n=20,n=200解方程组,b Ax =其中nn A ⨯⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛------------------=431513143151513143151513143151513143151314(1) 选取不同的初值0x 和不同的右端向量b,给定迭代误差,用两种迭代法计算,观测得到的迭代向量并分析计算结果给出结论;(2) 取定初值0x 和右端向量b,给定迭代误差,将A 的主对角元成倍放大,其余元素不变,用Jacobi 迭代法计算多次,比较收敛速度,分析计算结果并给出结论。

2、 SOR 迭代法松弛因子的选取用逐次超松弛(SOR )迭代法求解方程组,b Ax =其中 .5555551221212211212212121221121221212200199198321⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛----------=x x x x x x A (1) 给定迭代误差,选取不同的超松弛因子1>ω进行计算,观测得到的近似值向量并分析计算结果,给出你的结论;(2) 给定迭代误差,选取不同的低松弛因子1<ω进行计算,观测得到的近似值向量并分析计算结果,给出你的结论。

三、实验原理Jacobi 迭代法算法:步1 取初始点()0x ,精度要求ε,最大迭代次数N ,置0:=k ;步 2 由()n i x a b a x ni j j j ij i ii k i,,1,1,11 =⎪⎪⎭⎫⎝⎛-=∑≠=+ 或()b D x A D D x k 111)(--++-= 计算()1+k x ; 步3 若()()ε≤-∞+k k xx1,则停算,输出()1+k x作为方程组的近似解; 步4 若N k =,则停算,输出迭代失败信息;否则置1+=k k ,转布2。

迭代法实验报告

迭代法实验报告

迭代法实验报告 一. 实验目的:掌握迭代方法的用处 二. 实验环境:Cfree5.0 三. 实验时间:2013年6月20日 四. 实验地点:电子信息楼1201教室 五. 实验内容:运用编程实现迭代方法可以更好的解线性方程组,得到线性方程的解。

六. 实验理论依据:高斯-赛德尔(Gauss-Seidel )迭代公式我们注意到在雅可比迭代法中并没有对新算出的分量11k x +,12k x +,,11k i x +-进行充分利用.不妨设想,在迭代收敛的条件下,我们把(1)()()()11211331111(1)()()()22112332222(1)()()()1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++--⎧=---+⎪⎪⎪=---+⎪⎨⎪⎪⎪=---+⎪⎩式中第一个方程算出的11k x +立即投入到第二个方程中,代替()1k x 进行计算,当12k x +算出后代替()2k x 马上投入到第三个方程中计算,依次进行下去,这样也许会得到更好的收敛效果.根据这种思路建立的一种新的迭代格式,我们称为高斯-赛德尔(Gauss-Seidel )迭代公式,高斯=赛德尔迭代法的分量形式:(1)()()()11211331111(1)(1)()()22112332222(1)(1)(1)(1)1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++++++--⎧=---+⎪⎪⎪=---+⎪⎨⎪⎪⎪=---+⎪⎩高斯-赛德尔迭代法的矩阵形式:(1)(),(0,1,2,)k k x Bx f k +=+=其中1()B D L U -=-,1()f D L b -=- B 称为高斯-赛德尔迭代矩阵,f 称为高斯-赛德尔迭代常量..七. 运行代码如下:#include"stdio.h"#include"math.h"int main(){bool pan1=true;int n,n1,n2=0,k=0;doublenum[100][100],L[100][100],U[100][100],x[100],y[100],num1=0,b[100],D[100][100],x1[200][200],x2[200][200];printf("\n");printf("*******************************高斯迭代法解如下********************************");printf("输入要输入矩阵的阶数为(按Enter 输入矩阵数字):");//输入矩阵的阶数scanf("%d",&n1);for(int i=0;i<n1;i++)//输入矩阵的数{printf("输入第%d行数字为(按Enter进入下一行的输入):",i+1);for(int j=0;j<n1;j++){scanf("%lf",&num[i][j]);}}//输入矩阵的数结束for(int i=0;i<n1;i++)//求解对角线上的矩阵数{for(int j=0;j<n1;j++){if(i==j){D[i][j]=num[i][j];L[i][j]=0;U[i][j]=0;}if(i>j){L[i][j]=-num[i][j];}if(i<j){U[i][j]=-num[i][j];}}}//求解对角线上的矩阵数结束printf("=================================输出D的矩阵为==================================");for(int i=0;i<n1;i++)//输出D矩阵 {for(int j=0;j<n1;j++){printf("%10lf",D[i][j]);}printf("\n");}printf("\n");printf("=================================输出L的矩阵为==================================");for(int i=0;i<n1;i++)//输出L矩阵{for(int j=0;j<n1;j++){printf("%10lf",L[i][j]);}printf("\n");}printf("\n");printf("=================================输出U的矩阵为==================================");for(int i=0;i<n1;i++)//输出U矩阵{for(int j=0;j<n1;j++){printf("%10lf",U[i][j]);}printf("\n");}printf("输入矩阵右端常数为(以空格隔开,按回车进行下一步):");//输入b的值for(int i=0;i<n1;i++){scanf("%lf",&b[i]);}//输入b的值结束printf("输入初始化x(0)的矩阵值(以空格隔开,按回车得到结果):");//输入x的值for(int i=0;i<n1;i++){scanf("%lf",&x2[0][i]);}while(pan1)//高斯迭代法的for语句部分 {for(int i=0;i<n1;i++){for(int j=0;j<i;j++){num1+=num[i][j]*x2[k+1][j];}for(int j1=i+1;j1<n1;j1++){num1+=num[i][j1]*x2[k][j1];}x2[k+1][i]=(b[i]-num1)/num[i][i];num1=0;}for(int i=0;i<n1;i++) {if(fabsf(x2[k+1][i]-x2[k][i])<0.002) {n2++;}}if(n2==n1){pan1=false; }else{k++;pan1=true; }}//高斯迭代法的for语句部分结束printf("迭代次数k的值为:%d\n",k);//输出迭代次数printf("输出的迭代法解的结果为:\n"); for(int i=0;i<n1;i++)//输出x的解{printf("第%d个x的值为:%lf\n",i+1,x2[k][i]);}printf("\n");}八.运行结果如下:九.实验心得:高斯=赛德尔迭代法其系数矩阵是严格对角占优的,所以高斯=赛德尔迭代法有很好的收敛性。

实验报告迭代

实验报告迭代

一、实验背景随着计算机技术的不断发展,图像处理技术在各个领域得到了广泛的应用。

图像处理过程中,如何提高算法的效率和质量成为研究的热点。

迭代算法作为一种有效的算法,在图像处理领域具有广泛的应用前景。

本文以迭代算法在图像处理中的应用为研究对象,通过实验验证迭代算法在图像处理中的优越性。

二、实验目的1. 研究迭代算法在图像处理中的应用。

2. 分析迭代算法在图像处理中的性能和优势。

3. 优化迭代算法,提高图像处理效果。

三、实验原理迭代算法是一种通过不断迭代计算来逼近问题的解的方法。

在图像处理中,迭代算法可以用于图像增强、图像去噪、图像分割等任务。

本文主要研究迭代算法在图像去噪和图像分割中的应用。

1. 图像去噪图像去噪是图像处理中的基本任务之一。

迭代算法可以通过以下步骤实现图像去噪:(1)初始化去噪图像;(2)根据噪声图像计算去噪图像的梯度;(3)根据梯度信息更新去噪图像;(4)重复步骤(2)和(3)直到满足收敛条件。

2. 图像分割图像分割是将图像划分为若干个区域的过程。

迭代算法可以通过以下步骤实现图像分割:(1)初始化分割区域;(2)根据分割区域计算图像的梯度;(3)根据梯度信息更新分割区域;(4)重复步骤(2)和(3)直到满足收敛条件。

四、实验环境与数据1. 实验环境操作系统:Windows 10开发工具:Python 3.7图像处理库:OpenCV 3.4.102. 实验数据实验数据为两组彩色图像,一组为含噪声的图像,另一组为原始图像。

五、实验步骤1. 导入图像处理库;2. 读取实验数据;3. 应用迭代算法进行图像去噪;4. 应用迭代算法进行图像分割;5. 保存实验结果;6. 分析实验结果。

六、实验结果与分析1. 图像去噪实验结果如图1所示,其中(a)为含噪声的图像,(b)为迭代算法去噪后的图像。

从实验结果可以看出,迭代算法能够有效去除图像噪声,提高图像质量。

2. 图像分割实验结果如图2所示,其中(a)为原始图像,(b)为迭代算法分割后的图像。

迭代法实验报告

迭代法实验报告

迭代法实验报告迭代法实验报告引言:迭代法是一种常见的数值计算方法,通过反复迭代逼近解的过程,来解决一些复杂的数学问题。

本实验旨在通过实际操作,深入理解迭代法的原理和应用,并通过实验数据验证其有效性。

一、实验目的本实验的主要目的有以下几点:1. 掌握迭代法的基本原理和步骤;2. 熟悉迭代法在数值计算中的应用;3. 理解迭代法的收敛性和稳定性;4. 验证迭代法在实际问题中的有效性。

二、实验原理迭代法是一种通过不断逼近解的方法,其基本原理可概括为以下几步:1. 选择一个初始值作为迭代的起点;2. 根据问题的特点和要求,构造一个递推公式;3. 通过不断迭代计算,逐步逼近解;4. 判断迭代过程是否收敛,并确定最终的解。

三、实验步骤1. 选择合适的初始值。

初始值的选择对迭代的结果有重要影响,通常需要根据问题的特点进行合理选取。

2. 构造递推公式。

根据问题的数学模型,建立递推公式,将问题转化为迭代求解的形式。

3. 进行迭代计算。

根据递推公式,进行迭代计算,直到满足收敛条件或达到预定的迭代次数。

4. 判断迭代结果。

根据实际问题的要求,判断迭代结果是否满足精度要求,并进行相应的调整和优化。

四、实验结果与分析通过实验操作,我们得到了一组迭代计算的结果。

根据实验数据,我们可以进行以下分析:1. 收敛性分析。

通过观察迭代过程中的数值变化,我们可以判断迭代法的收敛性。

如果数值逐渐趋于稳定,且与理论解的误差在可接受范围内,说明迭代法收敛。

2. 稳定性分析。

迭代法的稳定性是指在初始值变化时,迭代结果是否保持稳定。

通过改变初始值,我们可以观察迭代结果的变化情况,从而评估迭代法的稳定性。

3. 精度分析。

迭代法的精度取决于迭代过程中的误差累积情况。

通过与理论解的比较,我们可以评估迭代法的精度,并对迭代过程进行优化。

五、实验结论通过本次实验,我们深入了解了迭代法的原理和应用,通过实际操作验证了迭代法在数值计算中的有效性。

实验结果表明,迭代法在解决复杂数学问题中具有较高的准确性和稳定性,能够满足实际应用的需求。

数值分析实验报告之迭代法求非线性方程的根

数值分析实验报告之迭代法求非线性方程的根

数值分析实验报告之迭代法求非线性方程的根1.实验目的掌握迭代法求非线性方程根的基本原理和使用方法,加深对数值计算方法的理解与应用。

2.实验原理迭代法是一种通过不断逼近的方法求解非线性方程的根。

根据不同的函数特点和问题需求,可以选择不同的迭代公式进行计算,如牛顿迭代法、二分法、弦截法等。

3.实验内容本次实验使用牛顿迭代法求解非线性方程的根。

牛顿迭代法基于函数的局部线性逼近,通过不断迭代逼近零点,直至满足收敛条件。

具体步骤如下:Step 1:选择初始点X0。

Step 2:计算函数f(x)在X0处的导数f'(x0)。

Step 3:计算迭代公式Xn+1 = Xn - f(Xn) / f'(Xn)。

Step 4:判断收敛准则,若满足则迭代结束,输出解Xn;否则返回Step 2,继续迭代。

Step 5:根据实际情况判断迭代过程是否收敛,并输出结果。

4.实验步骤步骤一:选择初始点。

根据非线性方程的特点,选择恰当的初始点,以便迭代公式收敛。

步骤二:计算导数。

根据选择的非线性方程,计算函数f(x)的导数f'(x0),作为迭代公式的计算基础。

步骤三:迭代计算。

根据迭代公式Xn+1=Xn-f(Xn)/f'(Xn),计算下一个迭代点Xn+1步骤四:判断收敛。

判断迭代过程是否满足收敛条件,通常可以通过设置迭代次数上限、判断前后两次迭代结果的差值是否足够小等方式进行判断。

步骤五:输出结果。

根据实际情况,输出最终的迭代结果。

5.实验结果与分析以求解非线性方程f(x)=x^3-x-1为例,选择初始点X0=1进行迭代计算。

根据函数f(x)的导数计算公式,得到导数f'(x0)=3x0^2-1,即f'(1)=2根据迭代公式Xn+1=Xn-f(Xn)/f'(Xn),带入计算可得:X1=X0-(X0^3-X0-1)/(3X0^2-1)=1-(1-1-1)/(3-1)=1-0/2=1根据收敛准则,判断迭代结果是否满足收敛条件。

牛顿迭代法实训总结

牛顿迭代法实训总结

牛顿迭代法实训总结一、实验目的及原理通过上述牛顿迭代法实验,我们可以观察到水力坡度不仅与径向压强有关,而且还与径向剪应力和切向压强有关。

因此,当对水流进行控制时,我们必须将切向压强及径向剪应力综合考虑。

设想,将水流分为上下两层:上层为较小面积的稳定层;下层为较大面积的运动层。

如图1所示,在实际工程中,人们往往把稳定层作为输水管道的中间部分。

同时,也会在稳定层内增设一定厚度的保护层,这样可以使运动层承受一部分径向压强,而运动层内的流体又被稳定层阻挡,从而使其不能全部流出。

3))按步骤实验并记录数据,得出实验结论。

1)检查设备,了解仪器的名称、功能及用途。

2)将一支标准刻度的水压力表1支,装满标准容积的量筒2只,并注明它们的正确读数。

3)称取0。

5ln 水于两只量筒中,同时记录正确读数。

在该实验中,选择“ 0。

5— 0。

9”的一段量筒,利用它与固定管直径之比,即可调节管道的水力坡度。

4)将“ 0。

5— 0。

9”的那段量筒移至管内另一端,再次将量筒水位记录于“ 0。

5— 0。

9”处,使其“水头”恰等于管道上游最高水位加“上游水头”,此时,该段量筒就成为正确的“测量杯”。

4)设计方案,测定并记录水力坡度实验时,首先应确定被测定的水力坡度( 0。

02~0。

04)。

其次,要选择合适的管道口径,以便选用合适的刻度水压表。

一般应根据所需水头,使测定的值为工程需要的最小坡度。

5)在安全的前提下,尽可能采用多个刻度水压表。

如图2所示,将一支带有圆弧形的长柄直尺(或三角尺)装在水压力表上,将“水头”标在圆弧形水压力表下方,通过改变量尺长度的方法,使量尺圆弧半径依次变大,由此得到相应的水力坡度。

这种量尺叫做“百分表”。

如果水压力表是可调节式的,则可以通过改变量尺圆弧半径,来改变量尺水头高度,以改变水力坡度。

5)处理数据,绘出图象。

6)按步骤实验并记录数据,得出实验结论。

1)检查设备,了解仪器的名称、功能及用途。

牛顿迭代法实训总结

牛顿迭代法实训总结

牛顿迭代法实训总结1。

掌握牛顿迭代法基本概念及其应用。

2。

对网上所选资料进行独立查询,并撰写报告。

3。

针对完成的实训题目和提交的实训报告,对实训过程中遇到的问题进行分析、探讨、研究。

2。

建立数据库,便于今后进一步的学习。

在建立数据库时我们发现了几个很严重的问题: 1。

虽然我们是以数学期望作为指标,但因为各个教授编写的参考书不同,因此数据库也不一样。

大多都只有模糊的印象,无法将具体的数值查找出来。

2。

由于网络的信息量太大,要想尽快找到自己需要的内容有点难度,尤其是有些文章太多,无法在网络中快速查找到相关文献。

3。

查询的结果既有英文版的,也有汉语版的,很容易造成人为差错。

由于前人留下来的资料没有经过仔细地整理,而且留下来的网址大部分都已经不存在了,因此在数据库建立之初很是困难。

这就要求我们在查询的时候尽量使用常用的搜索引擎,比如google, yahoo等等。

3。

利用网络平台,开展学术论坛。

今年4月份左右,我们在学院开展了第一次学术论坛,向老师们征集有关牛顿迭代法的网址,通过网络平台进行学术交流。

在交流中我们认识到:“建立数据库是十分必要的。

不仅可以保证查询的速度,还能节约大量的时间。

” 4。

加强网站建设,突出精品课程。

要想在科技飞速发展的信息社会拥有竞争力,高校必须加强网站建设。

而高校网站最重要的内容之一就是数据库,没有数据库,网站的价值也就体现不出来。

为此,在条件允许的情况下,应该尽可能多的开辟一些数据库,特别是精品课程。

如果某门课程的全部数据库收集齐全,那么每年的教材费就足够高校承担了,并且大量的外文数据库也将为学生的外语学习提供更好的帮助。

5。

将学术论坛与信息发布结合起来。

信息化的社会要求高校有更高的信息服务水平,我们应该充分利用好网络平台,积极主动的参与到信息服务中去。

如开辟博客、微博等形式,定期发布信息,为学生和教师提供更为优质的服务。

6。

规范教学内容,加强教学管理。

牛顿迭代法是比较新的方法,部分教师在教学时往往只介绍其基本原理,而忽略了其实际应用,而其实际应用又跟不上社会的发展速度。

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

实验五线性方程组的迭代法实验一. 实验目的(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。

(2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。

二. 实验要求建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。

三. 实验内容1. 实验题目(1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取x0={0 ,0,0,0,0-,o}t (2)分别取w=1、1.05、1.1、1.25和 1.8,用超松弛法求解上面的方程组,要求精度为。

2. 设计思想1.Jacobi迭代: Jacobi迭代的设计思想是将所给线性方程组逐步对角化,将一般形式的线性方程组的求解归结为对角方程组求解过程的重复。

2.Gauss-Seidel迭代: Gauss-Seidel迭代的设计思想是将一般形式的线性方程组的求解过程归结为下三角方程组求解过程的重复。

3.超松弛迭代:基于Gauss-Seidel迭代,对i=1,2,…反复执行计算迭代公式,即为超松弛迭代。

3. 对应程序1.Jacobi迭代:function [x,k]=Jacobimethod(A,b,x0,N,emg)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值% N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;k=0;r=max(abs(b-A*x1));while r>emgfor i=1:nsum=0;for j=1:nif i~=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;if k>Ndisp('迭代失败,返回');return;endendx=x1;2.Gauss-Seidel迭代:function [x,k]=Gaussmethod(A,b,x0,N,emg)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值% N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;r=max(abs(b-A*x1));k=0;while r>emgfor i=1:nsum=0;for j=1:nif j>isum=sum+A(i,j)*x1(j);elseif j<isum=sum+A(i,j)*x2(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;if k>Ndisp('迭代失败,返回');return;endendx=x1;3.超松弛(SOR)迭代:function [x,k]=SORmethod(A,b,x0,N,emg,w)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值% N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解%w表示松弛因子n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;r=max(abs(b-A*x1));k=0;while r>emgfor i=1:nsum=0;for j=1:nif j>=isum=sum+A(i,j)*x1(j);elseif j<isum=sum+A(i,j)*x2(j);endendx2(i)=x1(i)+w*(b(i)-sum)/A(i,i); endr=max(abs(x2-x1)); x1=x2; k=k+1; if k>Ndisp('迭代失败,返回'); return; end end x=x1;四. 实验体会 在同等精度下,Gauss-Seidel 迭代法比Jacobi 迭代法收敛速度快。

一般来说,Gauss-Seidel 迭代法比Jacobi 迭代法收敛要快,但有时反而比Jacobi 迭代法要慢,而且Jacobi 迭代法更易于优化。

因此,两种方法各有优缺点,使用时要根据所需适当选取。

当松弛因子为1时,超松弛迭代方法等同于Gauss-Seidel 迭代法,这和理论推导完全相同。

另外,超松弛迭代法的收敛速度完全取决于松弛因子的选取,一个适当的因子能大大提高收敛速度。

实验四 线方程组的直接解法一、问题提出给出下列几个不同类型的线性方程组,请用适当算法计算其解。

1、 设线性方程组12345678910423121000086536501004221321031021513119442616733238685717263502134253011610119173421224627139201240183248631x x x x x x x x x x --⎡⎡⎤⎢⎢⎥--⎢⎢⎥⎢⎢⎥---⎢⎢⎥---⎢⎢⎥⎢⎢⎥---⎢⎢⎥--⎢⎢⎥⎢⎢⎥--⎢⎢⎥---⎢⎥⎢⎥-⎢⎥⎢⎥-----⎣⎦⎣5123234613381921⎤⎡⎤⎥⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥=⎥⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎦(1,1,0,1,2,0,3,1,1,2)T x *=--2、 设对称正定阵系数阵线方程组1234567842402400022121320641141835620021614332321812241039433441114220253101142150633421945x x x x x x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎢⎥⎢⎥⎢---⎢⎥⎢⎥⎢--⎢⎥⎢⎢⎥⎣⎦⎣⎦⎣⎦⎥⎥⎥⎥ (1,1,0,2,1,1,0,2)T x *=--三对角形线性方程组123456789104100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014x x x x x x x x x x -⎡⎤⎡⎤⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎢⎥--⎢⎢⎥⎢⎢⎥-⎣⎦⎣⎦7513261214455⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥-⎣⎦*(2,1,3,0,1,2,3,0,1,1)T x =---二、要求1、 对上述三个方程组分别利用Gauss 顺序消去法与Gauss 列主元消去法;平方根法与改进平方根法;追赶法求解(选择其一);2、 应用结构程序设计编出通用程序;3、 比较计算结果,分析数值解误差的原因;4、 尽可能利用相应模块输出系数矩阵的三角分解式。

三、目的和意义1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;3、 通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。

四、实验学时:2学时 五、实验步骤:1.进入C 或matlab 开发环境; 2.根据实验内容和要求编写程序; 3.调试程序; 4.运行程序;5.撰写报告,讨论分析实验结果.实验五 解线性方程组的迭代法一、问题提出对实验四所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 方法计算其解。

二、要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,如34510,10,10ε---=由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。

三、目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤(1)k kxx ε+∞-<或k >(给予的迭代次数),对迭代法敛散性的意义;4、 体会初始解0x ,松弛因子的选取,对计算结果的影响。

四、实验学时:2学时 五、实验步骤:1.进入C 或matlab 开发环境;2.根据实验内容和要求编写程序; 3.调试程序; 4.运行程序;5.撰写报告,讨论分析实验结果.例3 例3 用平方根法分解对称正定矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=5375217522541114....A解5021241121211111.l a l a l -=-===== 5021113131.l a l ===22502542212222=-=-=..l a l()51250507522221313232....l l l a l =--=-= 1252250532322313333=--=--=...l l a l于是TLL A =,其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=151500050002...L由于A 为对称矩阵,因此,在电算时只要存储A 的下三角部分,其需要存储()121+n n 个元素,可用一维数组存放,即(){}nn n n a ,...a ,a ,...,a ,a n n A 212111121=⎥⎦⎤⎢⎣⎡+ 矩阵元素ij a 存放在()⎥⎦⎤⎢⎣⎡+121n n A 的第()j i i +-121个位置,L 的元素存放在A 的相应位置上.另外,平方根法的运算量是开平方 n 次;乘除法 nn n 31236123++次; 加减法 nn n 676123-+次. 当n 比较大时,平方根法的运算量和存贮量约为高斯消元法的二分之一,因此它是求解对称正定矩阵比较好的方法.为了避免开方运算,我们可以采用下面的分解式()24TLDL A =其中L 是单位下三角阵,D 是对角阵,由矩阵乘法,可得L 与D 的计算公式.对于n ,...,,i21=,有()2512111-=∑-=-=i ,...,,k d )l d l a (l k j kkj j ij ik ik()26112,d l a d j i j ij ii i ∑-=-=为了避免重复计算,我们引入()27jij ij d l t =于是上述公式可改写成对于n ,...,,i21=,有()2812111-=∑-=-=i ,...,,k ,l t a t k j kj ij ik ik()2921n,...,,k ,d t l kikik ==()3011,l t a d i j ij ij ii i ∑-=-=计算出LD T=的第i 行元素121-=i ,...,k ,t ik 后,存放在A 的第i 行相应位置,然后再计算L 的第i 行元素ik l 仍然存放在A 的第i 行,即用ik t 冲掉ik a ,再用ik l 冲掉ik t ,D 的对角线元素存放在A 的相应位置上.对称正定矩阵A 按TLDL 的分解和按TLL 分解其计算量差不多,但TLDL 分解不需要开方计算,它称为改进的平方根法. 四 追赶法在计算样条函数,解常微分方程边值问题,解热传导方程等都会要求解系数矩阵呈三对角线形的线性方程组,这时⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=------nn nn n n n n n n a a a a a a a a a a A 1111212322211211的LU 分解中,矩阵L 和U 分别取下二对角线和上二对角线形式,设⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=-nn nn l l l l l L 1222111 , ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=-111112n n u u U由LU A =得计算公式1111l a = n ,...,,i ,l a ii ii 3211==-- n ,...,,i ,l u l a ,ii i i ii ii 3211=+=-- 121111-==++n ,...,,i ,u l a ii i ii即1111a l =111212l a u =11--=ii ii a li i ii ii ii u l a l 11---=ii ii ii l a u 11++=n ,...,,i 32=此时,求解b Ax =等价于解两个二对角线方程组()31⎩⎨⎧==yUx b Ly自上而下解方程组b Ly =形象地称为“追”.1111l b y =()323211n,...,i ,l y l b y iii ii i i =-=--自下而上解方程组y Ux =称为“赶”.()3312111,,...,n i ,x u y x y x i ii i i nn -=-==++习惯,上述求解方法称为“追赶法”. 例4 用追赶法解三对角线方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=-+-=-120202124343232121x x x x x x x x x x 解 由三对角分解公式有21111==a l21111212-==l a u 12121-==a l2321212212222=-=-=u l a l 32222323-==l a u 13232-==a l3423323333=-=u l a l 43333434-==l a u 14343-==a l4534434444=-=u l a l而由“追”公式有211111==l b y 312212122=-=l y l b y 413323233=-=l y l b y 14434344=-=l y l b y最后,由“赶”公式得原方程组的解144==y x 143433=-=x u y x 132322=-=x u y x 121211=-=x u y x追赶法公式实际上就是把高斯消元法用到求解三对角线方程组上去的结果,这时由于A 特别简单,因此使得求解的计算公式非常简单,而且计算量仅有45-n 次乘除法,33-n 次加减法,仅占25-n 个存贮单元,所以可以在小机器上解高阶三对角线形的线性代数方程组.求解线性方程组的直接解法二 实验部分本章实验内容:实验题目:Gauss 消元法,追赶法,范数。

相关文档
最新文档