不动点迭代法上机实验报告

合集下载

c语言不动点迭代法法求方程解,不动点迭代法求方程的根.docx

c语言不动点迭代法法求方程解,不动点迭代法求方程的根.docx

c语⾔不动点迭代法法求⽅程解,不动点迭代法求⽅程的根.docx 实验报告专业班级: 学号: 姓名:实验名称:⽤不动点迭代法解⾮线性⽅程1.实验⽬的:(1)掌握不动点迭代法求根的⽅法 (2 )学会运⽤C语⾔编写出相应的循环程序,得出⽅程的解。

2?实验内容:问题:求⽅程f(x)=x3-x-1=0 在xo=1.5附近的根x*。

算法描述:1)把⽅程改写成 X = 3;⼚7的形式2) 代⼊xo=1.5,并反复利⽤迭代公式 Xk dXk 1计算3)对上式得到的序列{xk}求极限lim Xk=x*,所求得的X*即为⾮线性⽅程的根实验⽅案(程序设计说明)算法设计思路:将X0代⼊迭代公式,作为第⼀次迭代结果X1。

随着不断的迭代,迭代数值会越来越接近不动点值X。

程序中变量的类型⼩数点后的位数是⼀定的,所以,随着不断的迭代,会出现相等的两数,那么,此时的Xk可以近似看做⽅程根X*。

程序流程图F开始Xk=1.5 ,k=0N?X k=X k+1Y1PAGEPAGE #结束实验步骤或程序(经调试后正确的源程序)主要步骤与程序代码,见附件A附件A实验报告(适⽤计算机程序设计类)专业班级:学号:姓名:实验步骤或程序:程序代码:PAGEPAGE #H/iuHiHiHiHnnunnuiHiHnn"不动点迭代法求根的实现代码Kinclude ttinclude void nain()"为" 〃点〃 //动// "不" / * / / 0 /"为" 〃点〃 //动// "不" / * / / 0 / / X / "为" "值< 〃初< /^/ i / /= 〃给〃XO / ? /⽇⽦/ k 〃原"“ "设"le"1// / / / / "定od程〃 〃⼀=x⽅// 〃是xk求较〃 "数甯毗〃 〃位出做X0" 〃的△MW" "后就B% 〃点必近的// 〃数,必〃 〃⼩后可得〃./集xk代〃 "餐"3)〃回迭的迭〃 5;"函迭〃0/〃返筈枕" 1-"的⽤"1,//的鲁-// 0="梟"型过时第〃 X//所,“0+〃来K 爵对〃 k / 页⼀⼷ / X / e U / X /巳⽦⼸/ c / 1 -帀 1 / 2吩律〃ub叹,此7 bl"強〃 p〃do所况因"迭/由X / "应出〃 / rmdK/ /朮⼀才/ "⽴// "建代〃 "琴" "式次" "形⼀" "X)第" "]!(⾏"〃x=进〃 "成式〃 "写公"?⼒ / / ) /〃⾯〃 〃上 〃 〃复〃 / && / / 3 /〃等" / RD // "不" )/0 / O / X / =x"与⼔〃 //;点 S //巩〃⿀"XB=Xk;xl<= powCxO+1,1.0/3}:“输岀迭代值^收敛所得到的根泸 / cout? *⾮线性⽅程的根为-?endl ; cout?*,x*="<hiljtT^程序运⾏结果P:\C++程序\数值分析\gbug儼值分析⼼『?? = I回I—|⾮线性⽅程的根为;x*=l-32472Press any kwy to continue。

不动点迭代总结

不动点迭代总结

非线性算子不动点理论是非线性泛函分析的重要组成部分,利用迭代算法逼近非线性算子不动点的越来越广泛。

从具体的空间(如pL 空间或pl 空间)到抽象空间(如Hilbert 空间,Banach 空间,赋范线性空间);从单值映象到集值映象;从一般意义的映象(如非扩张映象,严格伪压缩映象;强伪压缩映象等)到渐进意义的映象(如渐进非扩张映象,渐进伪压缩映象,k-强渐进伪压缩映象等);从迭代序列的构造(如Mann 与Ishikawa 迭代序列,具误差(或混合误差)Mann 与Ishikawa 迭代序列, Halpern 迭代序列等)到迭代序列的强(弱)收敛性,稳定性。

可以说成果丰富。

迭代序列构成了非线性算子不动点理论中的重要问题。

在不动点理论方面,从20世纪初著名的Banach 压缩映射原理和Browder 不动点定理问世以来,特别是近30年来,由于实际需要的推动和数学工作者的不断努力,这门科学的理论及应用的研究已经取得重要的进展,并且日趋完善。

下面我们主要介绍一些近几年来不动点的迭代格式: 首先,我们先看下一算子的发展一 算子1 T 称为非扩张的,如果Tx Ty x y -≤- ,,x y C ∀∈。

2 T 称为压缩的,如果存在(0,1)α∈,使得,,Tx Ty x y x y C α-≤-∀∈:()T D T E →3 T 称为渐进非扩张的,如果存在一序列{}[0,)n k ∈∞,lim 1n n k →∞=,使得 ,,(),1n n n T x T y k x y x y D T n -≤-∈≥4 T 称为渐进伪压缩的,如果存在一序列{}[0,),lim 1n n n k k →∞∈∞=,,对任意给定的,()x y D T ∈存在()()j x y J x y -∈-,使得2,(),1n n n T x T y j x y k x y n <-->≤-∀≥5 T 称为严格渐进伪压缩的,如果存在一序列{}[0,),lim (0,1)n n n k k k →∞∈∞=∈,,对任意给定的,()x y D T ∈存在()()j x y J x y -∈-,使得2,(),1n n n T x T y j x y k x y n <-->≤-∀≥如果1,1,n k n T =∀≥ 称为伪压缩的。

非线性方程求跟—不动点迭代法(新)

非线性方程求跟—不动点迭代法(新)

非线性方程求根——不动点迭代法一、迭代法的基本思想迭代法是一种逐次逼近的方法,用某个固定公式反复校正根的近似值,使之逐步精确化,最后得到满足精度要求的结果。

例:求方程x 3-x -1=0 在x =1.5 附近的一个根。

解:将所给方程改写成31x x =+假设初值x 0=1.5是其根,代入得33101 1.51 1.35721x x =+=+=x 1≠x 0,再将x 1代入得33211 1.357211 1.33086x x =+=+=x 2≠x 1,再将x 2代入得33321 1.330861 1.32588x x =+=+=如此继续下去,结果如下:k x kk x k 01234 1.51.357211.330861.325881.324945678 1.324761.324731.324721.32472仅取六位数字,x 7与x 8相同,即认为x 8是方程的根。

x *≈x 8=1.32472这种逐步校正的过程称为迭代过程。

这里用的公式称为迭代公式,即311k k x x +=+k =0,1,2,……若x *满足f (x*)=0,称x *为ϕ(x )的一个不动点。

将连续函数方程f (x )=0改写为等价形式:x=ϕ(x ),其中ϕ(x )也是连续函数。

1()k k x x ϕ+=(k =0,1,……)不动点迭代法就是指以迭代格式二、不动点迭代法进行迭代求解的方法。

其中ϕ(x )称为迭代函数。

三、不动点迭代法的实现——MATLAB程序function[root,n]=stablepoint_solver(phai,x0,tol) if(nargin==2)tol=1.0e-5;enderr=1;root=x0;n=0;while(err>tol)n=n+1; %迭代次数r1=root;root=feval(phai,r1); %计算函数值err=abs(root-r1);end程序应用示例:function testmain% x^3-x-1=0% =>x^3=1+x% =>x=(1+x)^(1/3)ph=inline(‘(1+x)^(1/3)’,’x’);[root,n]=stablepoint_solver(ph,1)运行结果:root=1.3247n=8若对任意x 0∈[a , b ],由不动点迭代格式lim *k k x x →∞=则称迭代过程收敛,且x *=ϕ(x *)即f (x*)=0,x *为不动点。

非线性算子不动点的迭代算法的开题报告

非线性算子不动点的迭代算法的开题报告

非线性算子不动点的迭代算法的开题报告
非线性算子不动点问题是数值分析领域的一个经典问题。

在数值计算中,很多实际问题都可以归结为求解一个非线性方程或解一个非线性的算子方程,这时需要使用迭代算法来求解。

其中一种常见的方法就是通过迭代算法求解非线性算子的不动点,也就是通常所说的迭代式。

此次开题报告的主要目的是探究非线性算子不动点的迭代算法。

我们将主要从以下三个方面来进行研究:
1. 迭代算法的基本原理:介绍迭代算法的原理和基本概念,加深对于迭代算法的理解。

2. 非线性算子不动点的存在性和唯一性:介绍非线性算子不动点的定义、存在性和唯一性,并通过一些典型例子进行阐述。

3. 针对不同的问题设计迭代算法:根据不同的问题特点,设计相应的迭代算法,并对其收敛性和计算效率进行分析和比较。

在研究过程中,我们将使用数学方法进行分析和证明,并基于计算机模拟实验验证理论结论的正确性和可行性。

最终,我们期望通过本次研究,探究出一些实用的非线性算子不动点的迭代算法,为数值计算提供一些有益的理论和方法支持。

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

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

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 可得迭代结果。 迭代程序如下:
《数学实验》实验报告
班级 实验 内容 **** 学号 **** 姓名 实验 类别 **** 成绩 实验 时间

数学实验报告

数学实验报告

数学实验报告日期:2013-5-15班级数学系10A班姓名张修成学号20101611131 用不动点迭代法解方程实验名称【问题背景描述】天文学中有一类著名的方程——开普勒方程x=q*sinx+a (0<q<1,a为常数)开普勒方程是用来确定行星在其运行轨道上的位置的。

如何求解该方程并使其解达到一定精度呢?【实验目的】熟练掌握MA TLAB掌握不动点迭代法的原理【实验原理与数学模型】对于方程x=f(x),取一个初值x0 代入f(x),算得x1=f(x0),再计算x2=f(x1) ,。

,这样依次类推得到一个迭代格式Xk+1=f(Xk) , k=0,1,2,3…从而得到一个序列{Xk} ,k=0,1,2,3…通常称该序列为迭代序列,f(x) 称为迭代函数,x0 称为迭代初值。

如果有迭代格式所产生的迭代序列{Xk} 收敛,容易证明在收敛的情况下,迭代序列的极限就是x=f(x) 方程的实根。

【实验具体内容】运用不动点迭代法求解开普勒方程X=0.5*sin(x)+0.4 在[-2,2]上的解【实验过程记录】一:确定初值编写下列程序,画出函数g=x 和f=0.58*sin(x)+0.4,确定其交点大概位置>> clear;clc; clf;>> f=inline('0.5*sin(x)+0.4');>> g=inline('x')hold on>> fplot(g, [-2,2])>> fplot(f, [-2,2])>> hold off>> grid输出结果如下所示:所以,确定初值为x0=1二:不断迭代算法:第一步:将f(x0)赋值给x1第二步:确定x1-x0的绝对值大小,若小于给定的误差值,则将x1当做方程的解,否则回到第一步编写计算机程序:clearf=inline('0.5*sin(x)+0.4');x0=1;x1=f(x0);k=1;while abs(x1-x0)>=1.0e-6x0=x1;x1=f(x0);k=k+1;fprintf('k=%.0f,x0=%.9f,x1=%.9f\n',k,x0,x1)end显示结果如下:k=2,x0=0.820735492,x1=0.765823700 k=3,x0=0.765823700,x1=0.746565483 k=4,x0=0.746565483,x1=0.739560873 k=5,x0=0.739560873,x1=0.736981783 k=6,x0=0.736981783,x1=0.736027993 k=7,x0=0.736027993,x1=0.735674699 k=8,x0=0.735674699,x1=0.735543758 k=9,x0=0.735543758,x1=0.735495216 k=10,x0=0.735495216,x1=0.735477220 k=11,x0=0.735477220,x1=0.735470548 k=12,x0=0.735470548,x1=0.735468074 k=13,x0=0.735468074,x1=0.735467157 >>。

求解非线性方程实验报告

求解非线性方程实验报告

求解非线性方程实验报告一.实验目的:通过本节实验课的学习,要求我们理解并掌握二分法、不动点迭代、牛顿切线法及弦截法解非线性方程求根的原理,掌握相应的算法原理,通过计算机解决实验问题二.实验内容:1、用对分区间法方程1-x-sinx=0在区间[0,1]上的误差小于10^(-4)的一个根,并记录对方区间的次数。

2、用不动点迭代法求解方程下x-log(x)=2(x>1)要求相对误差容限e=10^(-8)。

3、用Newton法求方程x^3-x-1=0在区间[-3,3]上的误差不大于10^(-5)的根,分别取初值x0=1.5, x0=0, x0=-1进行计算,比较他们的迭代次数。

三. 实验方案(程序设计说明)[包括算法设计思路,必要的流程图,界面设计说明、使用模块及变量的说明等。

]1、二分法是对区间收索法的一种改进,具体做法为:先求一区间的中点,并计算其函数值,若恰好有函数值为0,就是方程的根,若不为0,在判断此点的函数值与两端的函数值乘积的情况,取小于0的那个端点在进行上述对分,直到满足要求为止。

2、迭代法分为两种,一种是从任何可取的初值出发都能保证收敛,称之为大范围收敛的方法。

另一类称之为局部收敛法,即为了保证收敛必须选取初值充分接近于所要求的解。

迭代法的基本思想是一种逐渐逼近的方法,首先给定一个粗造的初值,然后用一个迭代公式,反复矫正这个初值,直到满足预先给出的精确要求为止。

3、双点弦接法与Newton法不同,两者有本质的区别,它分为两步,不属于不动点迭代法。

四. 实验步骤或程序(经调试后正确的源程序)(填写主要步骤与程序代码等,不够可附页)1、f=inline('x+sin(x)-1');a=0;b=1;dlt=1.0e-4;k=1;while abs(b-a)>dltc=(a+b)/2;if f(c)==0break;elseif f(c)*f(b)<0a=c;else b=c;endfprintf('k=%d,x=%.5f\n',k,c); k=k+1;end2、eps=10^(-8);dx=1;x0=3.5;k=0;while(dx>eps)k=k+1;x=log(x0)+2;dx=abs(x-x0)/(1+abs(x));x0=x;endkx3、f=inline('x^3-x-1');df=inline('3*x^2-1');d2f=inline('6*x');a=-3;b=3;dlt=1.0e-5;if f(a)*d2f(a)>0x0=a;elsex0=b;endm=min(abs(df(a)),abs(df(b)));k=0;while abs(f(x0))>m*dltk=k+1;x1=x0-f(x0)/df(x0);x0=x1;fprintf('k=%d x=%.5f\n',k,x0); end for x0=1.5fprintf('k=%d x=%.5f\n',k,x0); end for x0=0fprintf('k=%d x=%.5f\n',k,x0); end for x0=-1fprintf('k=%d x=%.5f\n',k,x0); end 五.程序运行结果:1、k=1,x=0.50000k=2,x=0.75000k=3,x=0.62500k=4,x=0.56250k=5,x=0.53125k=6,x=0.51563k=7,x=0.50781k=8,x=0.51172k=9,x=0.50977k=10,x=0.51074k=11,x=0.51123k=12,x=0.51099k=13,x=0.51086k=14,x=0.51093 2、k =15x =3.14623、k=1 x=-2.03846 k=2 x=-1.39028k=3 x=-0.91161k=4 x=-0.34503k=5 x=-1.42775k=6 x=-0.94242k=7 x=-0.40495k=8 x=-1.70690k=9 x=-1.15576k=10 x=-0.69419 k=11 x=0.74249k=12 x=2.78130k=13 x=1.98273k=14 x=1.53693k=15 x=1.35726k=16 x=1.32566k=17 x=1.32472当x0=1.5时:k=17 x=1.50000当x0=0时:k=17 x=0.00000当x0=-1时:k=17 x=-1.000002、六.实验总结:通过实验学会理解并掌握二分法、不动点迭代、牛顿切线法及弦截法解非线性方程求根的原理,掌握相应的算法原理,通过计算机解决实验问题并通过反复的上机实验操作,解决了在实验过程中遇到的实验问题,并了解了一些函数的特殊用法,学会了用这三种基本方法解决实际遇到的问题,并了解了二分法、不动点迭代、牛顿切线法及弦截法的各种变形算法。

数值分析3(不动点迭代)

数值分析3(不动点迭代)
迭代法回顾
设f(x) = 0的根为 x*,通过迭代计算产生序列:
x0 x1 ( x0 ) L xn ( xn1 ) L
lim
n
xn
x*
二分法:
xn
( xn1 )
0.5( xn1 0.5( xn1
an1 ), bn1 ),
如果f 如果f
( xn-1 ( xn1
) )
f f
(an-1 ) 0 (bn1 ) 0
| xn x* | Ln | x0 x* |
lim
n
|
xn
x*
|
lim
n
Ln
|
x0
x*
|
0
( 0<L<1 )
所以
lim
n
xn
x*
故迭代格式收敛
| xn x* || xn xn1 xn1 x* |
04:37
11/25
04:37
12/25
如果 ( x) 有两个不同的不动点
x1*
x
* 2
则有
x1* ( x1* ) x2* ( x2* )
两式相减得
x1* x2* ( x1* ) ( x2* )
由拉格朗日中值定理知, 存在
介于
x1*和
x
* 2
之间
x1* x2* ( x1* ) ( x2* ) ( )( x1* x2* )
3 2 1.7321 1.6529 1.6288 1.6213 1.6191 1.6184 1.6181 1.6181 1.6180 1.6180 1.6180
4/25
Matlab中等号是赋值算子。即计算等式右边的 值并将值存储到左边的变量。命令计算(1+x)1/2并 用最新的结果替代以前的结果。重复上述过程得 到如下最后结果为1.6180(黄金比例 )。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国矿业大学(北京)理学院
数值分析实验报告
实验名称 不动点迭代法求方程的近似根 实验时间 2012.3.20
组长签名
龙纯鹏 班级 信息与计算
科学(1)班
学号
11107200110 成绩
组员签名
11107200101
11107200102
11107200103 11107200119
11107200120
一、实验目的,内容 二、相关背景知识介绍 三、代码
四、数值结果 五、计算结果的分析 六、计算中出现的问题,解决方法及体会
一、实验目的、内容
实验目的:熟悉掌握不动点迭代方法的思想方法,并熟悉运用MATLAB 编写相关代码求解方程的近似根; 内容:先确定方程x
e x 5
1=
的一个收敛的有根区间[a,b], 然后用不动点迭代法求x
e x 5
1=
在此有根区间的近似根,初值0x 自己确定,要求根精确到510-,并求迭代次数。

二、相关背景知识介绍 (1)算法原理或计算公式 :
不动点:将方程0)(=x f 写成等价的形式)(x x ϕ=.若要求*x 满足*)(x f =0,则小*x =
)(x x ϕ=;反之,若*)(*x x ϕ=,则满足0*)(=x f ,则称*x 为函数*)(x ϕ)的一个不动点。

不动点迭代法:求满足)(x f 的零点就等价于求)(x ϕ的不动点,选择一个初始近似值x0,将其代入x =)(x ϕ的右端,即可求得:
)(01x x ϕ=
)(12x x ϕ=
…….
可以如此反复迭代计算: )(1k k x x ϕ=+),2,1,0( =k
.如图:
)
(x y ϕ=
则x =)(x ϕ称为迭代函数。

如果对任何0x 属于[a,b],由)(1k k x x ϕ=+),2,1,0( =k 得到的序列{k x }有极限,则称迭代方程)(1k k x x ϕ=+),2,1,0( =k 收敛,且)(*x x ϕ=为φ(x)的不动点,故称 )(1k k x x ϕ=+),2,1,0( =k 为不动点迭代法。

迭代法的基本思路是一种主次逼近的方法,其基本思想是将隐式方程0)(=x f 归结为一组显式的计算公式 )(1k k x x ϕ=+),2,1,0( =k ,也就是说,迭代过程的实质上是一个逐步显式化的过程。

(2)程序设计思路: 先确定方程x e x 51=
的一个收敛的有根区间[a,b],则x e x 5
1)(=ϕ’ ),()(x x x f ϕ-=设则)(x f 在[a,b]上连续,
由以上条件,若 )()(a a a f ϕ-= 0≤ )()(b b b f ϕ-= 0≤
则方程x
e x 5
1=
的一个收敛的根在区间[a,b]上,迭代过程如下:取初值1=x , *
012x x x x O
)(01x x ϕ= =
051x e 得1151e x = )(12x x ϕ== )5
1(
e ϕ ……………… )(1k k x x ϕ=+),2,1,0( =k . 三、代码(Matlab )
clear x0=1
e=10^(-5) k=1
x1=sqrt(0.2*e^x0) while (abs(x0-x1)>e) k=k+1 x0=x1
x1=sqrt(0.2*e^x0) end x0
k = 261
x0 = 0.1691 x1 = 0.1690 k = 262
x0 = 0.1690 x1 = 0.1691 四、数值结果
在matlab 运算结果如下表: k 0x
k 0x
k 0x
100 101 102 103 104 105
0.1753 0.1630 0.1750 0.1633 0.1747 0.1636
143 145 154 158 160 178
0.1709 0.1673 0.1676 0.1702 0.1678 0.1689
250 252 253 257 260 266
0.1689 0.1691 0.1690 0.1691 0.1690 0.1691
=*x 0.1691
K=266
五、计算结果的分析 方程x
e x 5
1=
在区间[a,b]的近似根为=*x 0.1691 六、计算中出现的问题,解决方法及体会
1.着重理解不动点迭代法德思想方法,体会其用法,慢慢改进,有着深刻的映像;
2.逐渐熟悉Matlab 的用法,致使解决问题效率上升,掌握学好相关基础知识;
3.对于同样的方程, 迭代函数的构造有关,不同的迭代格式,有不同的结果; 当迭代函数不收敛时,即发散的时候,迭代没有意义。

教 师 评 语
指导教师:
2013 年 3 月 20 日。

相关文档
最新文档