大学数学实验报告----迭代(一)——方程求解

合集下载

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

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

附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。

2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。

3.实验原理:简要说明本实验项目所涉及的理论知识。

4.实验环境:实验用的软、硬件环境。

5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。

概括整个实验过程。

对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。

对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。

对于创新性,还应注明其创新点、特色。

6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。

7.实验结论(结果):根据实验过程中得到的结果,做出结论。

8.实验小结:本次实验心得体会、思考和建议。

9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。

实验报告四 线性方程组的求解-迭代

实验报告四 线性方程组的求解-迭代

浙江大学城市学院实验报告课程名称科学计算实验项目名称线性方程组的求解-迭代法实验成绩指导老师(签名)日期2012-4-6一.实验目的和要求1.掌握Jacobi 迭代方法,Gauss-Seidel 迭代方法,SOR 迭代方法的编程思想,能够分别用分量形式和矩阵形式编写相关程序。

2.观察SOR 迭代法中松弛因子变化情况对收敛的影响。

3.了解Hilbert 矩阵的病态性和作为线性方程组系数矩阵的收敛性。

二.实验内容和原理编程题2-1要求写出Matlab 源程序(m 文件),并有适当的注释语句;分析应用题2-2,2-3,2-4要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上。

2-1编程注释设11121121222212,n n n n nn n a a a b a a a b A b a a a b ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦ 对下述求解线性方程组的Matlab 程序添上注释语句,其中A 和b 分别为线性方程组的系数矩阵和右端向量;0x 为迭代初始向量(0)X;max N 为容许迭代最大次数,eps 为迭代终止条件的精度(容许误差),终止条件为前后两次迭代解的差的向量2-范数。

1)Jacobi 迭代:Jacobimethod(A,b,x0,Nmax,eps)2)Gauss-Seidel 迭代:GaussSeidelmethod(A,b,x0,Nmax,eps)3)松弛迭代:SORmethod(A,b,x0,Nmax,eps,w)2-2分析应用题利用2-1中的程序来分析用下列迭代法解线性方程组:123456410100014101050141012101410501014120010146x x x x x x --⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥----=⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦的收敛性,并求出使(1)()20.0001k k X X +-≤的近似解及相应的迭代次数,其中取迭代初始向量(0)X为零向量。

数值分析实验报告--解线性方程组的迭代法及其并行算法

数值分析实验报告--解线性方程组的迭代法及其并行算法

disp('请注意:高斯-塞德尔迭代的结果没有达 到给定的精度,并且迭代次数已经超过最大迭 代次数max1,方程组的精确解jX和迭代向量X 如下: ') X=X';jX=jX' end end X=X';D,U,L,jX=jX'
高斯-塞德尔的输入为:
A=[10 2 3;2 10 1;3 1 10]; b=[1;1;2]; X0=[0 0 0]'; X=gsdddy(A,b,X0,inf, 0.001,100) A=[10 2 3;2 10 1;3 1 10]; 请注意:因为对角矩阵 D 非奇异,所以此方程组有解.
0.0301 0.0758 0.1834
8.心得体会:
这已经是第三次实验了, 或多或少我已经对 MATLAB 有了更多的了 解与深入的学习。通过这次实验我了解了雅可比迭代法和高斯- 塞德尔迭代法的基本思想,虽然我们不能熟练编出程序,但还是 能看明白的。运行起来也比较容易,让我跟好的了解迭代法的多 样性,使平常手算的题能得到很好的验证。通过这次实验让我对 MATLAB 又有了更深一层的认识,使我对这门课兴趣也更加浓厚。
运行雅可比迭代程序输入: A=[10
b=[1;1;2];X0=[0 0 0]'; X=jacdd(A,b,X0,inf,0.001,100)
2 3;2 10 1;3 1 10];
结果为:
k= 1 X=
0.1000 k= 2 X= 0.0200 k= 3 X= 0.0400 k= 4 X= 0.0276 k= 5 X= 0.0314 k= 6 X= 0.0294 k= 7 X= 0.0301 k= 8 X= 0.0297
6、 设计思想:先化简,把对角线的项提到左边,其它项

数学实验“线性方程组的j迭代,gs迭代,sor迭代解法”实验报告(内含matlab程序代码)【最新精

数学实验“线性方程组的j迭代,gs迭代,sor迭代解法”实验报告(内含matlab程序代码)【最新精

西京学院数学软件实验任务书实验四实验报告一、实验名称:线性方程组的J-迭代,GS-迭代,SOR-迭代。

二、实验目的:熟悉线性方程组的J-迭代,GS-迭代,SOR-迭代,SSOR-迭代方法,编程实现雅可比方法和高斯-赛德尔方法求解非线性方程组12123123521064182514x x x x x x x x +=⎧⎪++=⎨⎪++=-⎩的根,提高matlab 编程能力。

三、实验要求:已知线性方程矩阵,利用迭代思想编程求解线性方程组的解。

四、实验原理:1、雅可比迭代法(J-迭代法):线性方程组b X A =*,可以转变为:迭代公式(0)(1)()k 0,1,2,....k k J XXB X f +⎧⎪⎨=+=⎪⎩ 其中b M f U L M A M I B J 111),(---=+=-=,称J B 为求解b X A =*的雅可比迭代法的迭代矩阵。

以下给出雅可比迭代的分量计算公式,令),....,()()(2)(1)(k n k k k X X X X =,由雅可比迭代公式有b XU L MXk k ++=+)()1()(,既有i ni j k i iji j k iij k iij b X aXa X a +--=∑∑+=-=+1)(11)()1(,于是,解b X A =*的雅可比迭代法的计算公式为⎪⎩⎪⎨⎧--==∑∑-=+=+)(1),....,(111)()()1()0()0(2)0(1)0(i j n i j k j ij k j ij i ii k iTn X a X a b a X X X X X 2、 高斯-赛德尔迭代法(GS-迭代法):GS-迭代法可以看作是雅可比迭代法的一种改进,给出了迭代公式:⎪⎩⎪⎨⎧--==∑∑-=+=+++)(1),....,(111)1()1()1()0()0(2)0(1)0(i j n i j k j ij k j ij i ii k iTn X a X a b a X X X X X 其余部分与雅克比迭代类似。

实验3 线性方程组的数值解—迭代法1

实验3 线性方程组的数值解—迭代法1

实验3 线性方程组数值解-迭代法一、实验目的:掌握Jaccobi 迭代法、Guass-Sidel 迭代法、松弛法求解线性方程组的数值解。

二、实验内容:1.1题目分别用雅格比法与高斯-赛德尔迭代法解下列方程组Ax =b ,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。

(1)A 行分别为A 1=[6,2,-1],A 2=[1,4,-2],A 3=[-3,1,4]; b 1=[-3,2,4]T , b 2=[100,-200,345]T , (2) A 行分别为A 1=[1,0.8,0.8],A 2 [0.8,1,0.8],A 3=[0.8,0.8,1];b 1=[3,2,1] T , b 2=[5,0,-10]T , (3)A 行分别为A 1=[1,3],A 2=[-7,1];b =[4,6]T , 1.2原理和思路1.2.1 基本原理(1)Jacobi 迭代法设有n 阶方程组A x=b ,若系数矩阵非奇异,且0≠ii a (i = 1, 2,…, n ),将方程组改写成同解方程组:()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧----=----=----=--11,221112323122221213132121111111n n n n n n nn n n n n n x ax a x a b a x x a x a x a b a x x a x a x a b a x然后写成迭代格式:()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧----=----=----=--+++)(11,)(22)(11)1()(2)(323)(121122)1(2)(1)(313)(212111)1(1111k n n n k n k n n nn k n k n n k k k k n n k k k x a x a x a b a x x a x a x a b a x x a x a x a b a x上式也可以简单地写为:),,2,1(1)(1)1(n i x a b a x k j n i j j ij i iik i =⎪⎪⎪⎭⎫ ⎝⎛-=∑≠=+对以上两式给定一组任意初值(0)(0)(0)(0)12(,,)Tn x x x x =后,经反复迭代可得到一向量序列()()()1(,)k k k Tn x x x =,如果x (k )收敛于****12(,,)T n x x x x =,则),,2,1(*n i x i =就是方程组A x=b 的解,该方法称为雅克比(Jacobi)迭代法。

Newton迭代法求方程的根

Newton迭代法求方程的根

《计算方法》实验报告一一、上机实验的问题和要求:用Newton 法求方程:x 7-28x 4+14=0在(0.1,1.9)中的近似值(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

二、程序设计的基本思想,原理和算法描述:(包括程序的结构,数据结构,输入/输出设计,符号名说明等) Newton 迭代法的公式和使用条件:设函数在有限区间[a ,b]上二阶导数存在,且满足条件:1. )(a f )(b f <0;2. )(,,x f 在区间[a ,b]上不变号;3. )(,x f ≠0;4.)(,)(c f c f ≤,其中c 是a ,b 中使min ()(,a f ,)(,b f )达到的一个。

则对任意的初始近似值x0∈[a ,b],由Newton 迭代过程 x k+1=ψ(x k )=x k -)()(,kk x f x f ,k=0,1,2,…所生成的迭代序列{x k }平方收敛于方程f (x )=0在区间[a ,b]上的唯一解α。

设计思路:此程序比较简单,在设计时先把)(x f 和)(,x f 的表达式用c 语言表示出来,然后在经过一个while 循环做迭代,求出迭代后的解:x k+1=ψ(x k )=x k -)()(,kk x f x f ,当x k+1- x k 的绝对值小于0.00001时,循环终止。

循环结束时,方程的近似解已求出。

三、源程序及注释:#include "stdio.h" #include "math.h" main() {double x,x0=5,f,df; 给x0赋一个初值,程序使满足进入循环的条件 printf(" Please input x,x=[0.1,1.9]:\n x="); 输入一个端点a 或b scanf("%lf",&x);df=7*pow(x,6)-28*4*pow(x,3); 算出)(,x fwhile(fabs(x-x0)>=0.00001&&df!=0) 在迭代中如果|x-x0|<0.00001或)(,x f =0,则停止迭代 {x0=x; 迭代计算:x k+1=ψ(x k )=x k -)()(,kk x f x fx=x-(pow(x,7)-28*pow(x,4)+14)/(7*pow(x,6)-28*4*pow(x,3)); df=7*pow(x,6)-28*4*pow(x,3); }printf("\n The root is %lf",x); 打印出计算结果 getch(); }四、运行输出结果:输入x=0.1时的解 输入x=0.4时的解 输入x=1.9时的解五、调试和运行程序过程中产生的问题及采取的措施:调试程序时会报错,运行时一开始运行结果不正确,得不到理想结果,只有经过反复检查语言彻底消除错误。

Jacobi迭代法求解线性方程组实验报告

Jacobi迭代法求解线性方程组实验报告

仿真平台与工具应用实践Jacobi迭代法求解线性方程组实验报告院系:专业班级:姓名:学号:指导老师:一、实验目的熟悉Jacobi迭代法原理;学习使用Jacobi迭代法求解线性方程组;编程实现该方法;二、实验内容应用Jacobi迭代法解如下线性方程组:, 要求计算精度为三、实验过程(1)、算法理论迭代格式的引出是依据迭代法的基本思想: 构造一个向量系列, 使其收敛至某个极限, 则就是要求的方程组的准确解。

Jacobi迭代将方程组:在假设, 改写成如果引用系数矩阵, 及向量, , ,方程组(1)和(2)分别可写为: 及, 这样就得到了迭代格式用迭代解方程组时, 就可任意取初值带入迭代可知式, 然后求。

但是, 比较大的时候, 写方程组和是很麻烦的, 如果直接由, 能直接得到, 就是矩阵与向量的运算了, 那么如何得到, 呢?实际上, 如果引进非奇异对角矩阵将分解成:要求的解, 实质上就有而是非奇异的, 所以存在, 从而有我们在这里不妨令就得到迭代格式:(2)算法框图(3)、算法程序m 文件:function x=jacobi(A,b,P,delta,n)N=length(b); %返回矩阵b的最大长度for k=1:nfor j=1:Nx(j)=(b(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);enderr=abs(norm(x'-P)); %求(x'-P)模的绝对值P=x';if(err<delta) %判断是否符合精度要求break;endendE=eye(N,N); %产生N行N列矩阵D=diag(diag(A));f=A*inv(D); %f是A乘D的逆矩阵B=E-f;Px=x';k,errBMATLAB代码:>> clear allA=[4, -1, 1;4, -8, 1;-2, 1, 5];b=[7, -21, 15]';P=[0,0,0]';x=jacobi(A,b,P,1e-7,20)(4)、算法实现用迭代法求解方程组:正常计算结果是2, 3, 4 , 下面是程序输出结果:P =2.00004.00003.0000k =17err =9.3859e-008B =0 -0.1250 -0.2000-1.0000 0 -0.20000.5000 0.1250 0x =2.00004.00003.0000四、实验体会五、MATLAB是非常实用的软件, 能够避免大量计算, 简化我们的工作, 带来便捷。

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

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

1 / 8数值分析实验六:解线性方程组的迭代法2016113 张威震1 病态线性方程组的求解1.1 问题描述理论的分析表明,求解病态的线性方程组是困难的。

实际情况是否如此,会出现怎样的现象呢?实验内容:考虑方程组Hx=b 的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(),,,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。

通过首先给定解(例如取为各个分量均为1)再计算出右端b 的办法给出确定的问题。

实验要求:(1)选择问题的维数为6,分别用Gauss 消去法、列主元Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2)逐步增大问题的维数(至少到100),仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(3)讨论病态问题求解的算法1.2 算法设计首先编写各种求解方法的函数,Gauss 消去法和列主元高斯消去法使用实验5中编写的函数myGauss.m 即可,Jacobi 迭代法函数文件为myJacobi.m ,GS 迭代法函数文件为myGS.m ,SOR 方法的函数文件为mySOR.m 。

1.3 实验结果1.3.1 不同迭代法球求解方程组的结果比较选择H 为6*6方阵,方程组的精确解为x* = (1, 1, 1, 1, 1, 1)T ,然后用矩阵乘法计算得到b ,再使用Gauss 顺序消去法、Gauss 列主元消去法、Jacobi 迭代法、G-S 迭代法和SOR 方法分别计算得到数值解x1、x2、x3、x4,并计算出各数值解与精确解之间的无穷范数。

Matlab 脚本文件为Experiment6_1.m 。

迭代法的初始解x 0 = (0, 0, 0, 0, 0, 0)T ,收敛准则为||x(k+1)-x(k)||∞<eps=1e-6,SOR方法的松弛因子选择为w=1.3,计算结果如表1。

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

Do M n , n, 2, 100
运行结果:
M n_Integer : Module y, k , m 2; k m ^ n 1 ;
x Mod k, n ;
Print n, " ", PrimeQ n , " ", x, "
", GCD m, n
Do M n , n, 2, 100
2 True 0 2 3 True 1 1 4 False 0 2 5 True 1 1 6 False 2 2 7 True 1 1 8 False 0 2 9 False 4 1 10 False 2 2 11 True 1 1 12 False 8 2 13 True 1 1 14 False 2 2 15 False 4 1 16 False 0 2 17 True 1 1 18 False 14 2 19 True 1 1 20 False 8 2 21 False 4 1 22 False 2 2 23 True 1 1 24 False 8 2 25 False 16 1 26 False 2 2 27 False 13 1 28 False 8 2 29 True 1 1 30 False 2 2 31 True 1 1 32 False 0 2 33 False 4 1 34 False 2 2 35 False 9 1 36 False 32 2 37 True 1 1 38 False 2 2 39 False 4 1 40 False 8 2
99 False 3 27 100 False 1 67 Null2
m=4 时
输入程序:
M n_Integer : Module y, k , m 4; k m ^ n 1 ; x Mod k, n ; Print n, " ", PrimeQ n , " ", GCD m, n , " ", x Do M n , n, 2, 100
从运行结果可以发现:当 n 为素数时,2^n-1 被 n 整除所得的余数都是 1。
m=3 时
输入程序:
M n_Integer : Module y, k , m 3; k m ^ n 1 ; x Mod k, n ; Print n, " ", PrimeQ n , " ", GCD m, n , " ", x Do M n , n, 2, 100
与上节介绍的方程求解的方法是类似的。假设我们可以将方程组(7)
改写成 x=Mx+f
其中 M (mij ) 是 n 阶距阵, f ( f1,, fn )T 是 n 维列向量。任意给定
初始向量 x 0 ,由迭代 xn1 Mx n f
(9)
确定向量序列 xn , n 0,1,. 如果 x n 收敛到向量 x* ,则有 x* Mx* f ,
运行结果:
M n_Integer : Module y, k , m 4; k m ^ n 1 ; x Mod k, n ; Print n, " ", PrimeQ n , " ", GCD m, n , " ", x Do M n , n, 2, 100
2 True 2 3 True 1 4 False 4 5 True 1 6 False 2 7 True 1 8 False 4 9 False 1 10 False 2 11 True 1 12 False 4 13 True 1 14 False 2 15 False 1 16 False 4 17 True 1 18 False 2 19 True 1 20 False 4 21 False 1 22 False 2 23 True 1 24 False 4 25 False 1 26 False 2
或写成距阵的形式 Ax=b,
(6) (7)
其中 A (aij ) 是 n 阶方程, x (x1,, xn )T 及 b (b1,, bn )T 均为 n 维列 向量。熟知,当距阵 A 的行列式非零时方程(7)有唯一的解。迭代法
是求解这些问题的有效方法之一。用迭代的方法求解线性方程组的思想
55 False 1 4 56 False 1 3 57 False 3 9 58 False 1 3 59 True 1 1 60 False 3 27 61 True 1 1 62 False 1 3 63 False 3 9 64 False 1 43 65 False 1 16 66 False 3 45 67 True 1 1 68 False 1 27 69 False 3 9 70 False 1 13 71 True 1 1 72 False 3 27 73 True 1 1 74 False 1 3 75 False 3 69 76 False 1 27 77 False 1 25 78 False 3 9 79 True 1 1 80 False 1 27 81 False 3 0 82 False 1 3 83 True 1 1 84 False 3 75 85 False 1 81 86 False 1 3 87 False 3 9 88 False 1 75 89 True 1 1 90 False 3 63 91 False 1 1 92 False 1 27 93 False 3 9 94 False 1 3 95 False 1 24 96 False 3 75 97 True 1 1 98 False 1 59
运行结果:
M n_Integer : Module y, k , m 3; k m ^ n 1 ;
x Mod k, n ;
Print n, " ", PrimeQ n , " ", GCD m, n , "
", x
Do M n , n, 2, 100
2 True 1 1 3 True 3 0 4 False 1 3 5 True 1 1 6 False 3 3 7 True 1 1 8 False 1 3 9 False 3 0 10 False 1 3
实验五素数实验名称迭代一方程求解实验目的用迭代法求解方程及线性方程组实验环境mathematica40系统实验方程求根给定实数域上光滑的实值函数fx以及初值称为fx的一个迭代序列
数学实验 报告
实验五 迭代(一)——方程求解
学院:数学与信息科学学院 班级:09 级数学(4)班 姓名:*** 学号:***
0 1
0 1
4 1
0 7
4 1
4 1
4 1 0 1 16 1 4 16 4 1 16 6 4
27 False 1 7 28 False 4 8 29 True 1 1 30 False 2 4 31 True 1 1 32 False 4 0 33 False 1 16 34 False 2 4 35 False 1 11 36 False 4 16 37 True 1 1 38 False 2 4 39 False 1 16 40 False 4 24 41 True 1 1 42 False 2 16 43 True 1 1 44 False 4 20 45 False 1 16 46 False 2 4 47 True 1 1 48 False 4 16 49 False 1 29 50 False 2 44 51 False 1 16 52 False 4 12 53 True 1 1 54 False 2 34 55 False 1 36 56 False 4 32 57 False 1 16 58 False 2 4 59 True 1 1 60 False 4 4 61 True 1 1 62 False 2 4 63 False 1 16 64 False 4 0 65 False 1 61 66 False 2 34 67 True 1 1 68 False 4 64 69 False 1 16 70 False 2 64
即 x* 是方程组(7)的解。
一、方程求根
1、考察用迭代函数 f(x)=2sin(x)求解方程 g(x)=2sin(x)-x=0 的解的
实验 情况。
的内 (1)在同一直角坐标系中,画出 y=f(x)及 y=x 的图像。从图上观察,
容与 方程 x=2sin(x)有几个解?
步骤
在计算机中打开 Mathematica4.0 系统; 点击鼠标进入工作区后,输入以下语句
实验五 素数
实 验 迭代(一)——方程求解
名称
实 验 用迭代法求解方程及线性方程组
目的
实 验 Mathematica4.0 系统
环境
1、 方程求根
给定实数域上光滑的实值函数 f(x)以及初值 x0 定义数列
xn1 f (xn ), n 0,1,,
(1)
xn , n 0,1,, 称为 f(x)的一个迭代序列。
实验 的基 本理 论与 方法
给 定 迭 代 函 数 f(x) 以 及 一 个 初 值 x0 利 用 ( 1 ) 迭 代 得 到 数 列
xn , n 0,1,, 如果数列 xn 收敛于一个 x* ,则有
x* f (x*) .
(2)
即 x* 是方程 x=f(x)的解。由此启发我们用如下的方法球方程 g(x)=0
(如 3,4,5),观察 mn-1 被 n 整除的情况:观察当 n 为素数时的结果。
m=2 时
输入程序:
M n_Integer : Module y, k , m 2; k m ^ n 1 ;
x பைடு நூலகம்od k, n ;
Print n, " ", PrimeQ n , " ", x, "
相关文档
最新文档