小组计算方法课程实验.docx

上传人:b****4 文档编号:4675336 上传时间:2022-12-07 格式:DOCX 页数:8 大小:106.73KB
下载 相关 举报
小组计算方法课程实验.docx_第1页
第1页 / 共8页
小组计算方法课程实验.docx_第2页
第2页 / 共8页
小组计算方法课程实验.docx_第3页
第3页 / 共8页
小组计算方法课程实验.docx_第4页
第4页 / 共8页
小组计算方法课程实验.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

小组计算方法课程实验.docx

《小组计算方法课程实验.docx》由会员分享,可在线阅读,更多相关《小组计算方法课程实验.docx(8页珍藏版)》请在冰豆网上搜索。

小组计算方法课程实验.docx

小组计算方法课程实验

牛顿法、不动点迭代

实验报告

Mathematica语言

一、收敛的迭代法(二分法不动点)求方程的根。

1)二分法构造过程

设方程f(x)=0在(a,b)内只有一实根,取[a,b]区间二等分的中点x0=(a+b)/2。

若f(x0)=0,则x0是f(x)=0的实根x*,输出近似根x0,终止;否则如果f(a)f(x0)<0成立,则根x*必在区间(a,x0)内,取a1=a,b1=x0;否则根x*必在区间(x0,b)内,取a1=x0,b1=b。

这样,得到新区间[a1,b1],其长度为[a,b]的一半,如此继续下去,进行k次等分后,得到一组不断缩小的区间序列:

[a,b],[a1,b1],…...,[ak,bk],…和对应区间的中点数列:

xk=(ak+bk)/2,k=0,1,2,….。

其中每个区间都含有根x*,满足:

[a,b][a1,b1]…..[ak,bk]…

且每个区间都是前一个区间长度的一半。

由于[ak,bk]的长度为(b-a)/2k,当k不断变大时,则有这些区间将收敛于一个点x*,该点即为所求的根。

当做到第k步时,有

为给定精度,此时xkx*即为满足要求的近似根。

2)二分法算法

1. 计算[a,b]区间的中点存放在变量x0中:

x0(a+b)/2

2. 如果函数值f(x0)=0,则x0是f(x)=0的实根x*,输出根x0,终止

3. 如果函数值f(a)f(x0)<0,则bx0,否则ax0

4. 如果b-a(为给定的精度),则输出根的近似值(a+b)/2,终止,否则转1。

3)二分法程序(mathematica语言)

Clear[x]

f[x_]=Input[“键入函数f(x)=”];

a=Input[“键入左端点a=”];

b=Input[“键入右端点b=”];

Print[“a=”,a,“b=”,b,“f(x)=”,f[x]]

e1=10^(-10);

eps=Input[“键入根的误差限eps=”];

n=0;

While[b-a>eps,

x=(a+b)/2;

n=n+1;

w=f[x];

If[Abs[w]

p=f[a]*w//N;

If[p<0,b=x,a=x];

Print[“n=”,n,“x=”,x//N,“eps=”,b-a//N]

]

注:

本程序用于求非线性方程f(x)=0在区间[a,b]内的根,这里要求f(x)在区间[a,b]连续,且f(a)f(b)<0。

程序执行后,先通过键盘输入函数f(x)和区间左端点a和右端点b及根的精度要求e,程序即可给出每次二分的次数和对应的点列xk,其中最后输出的结果即为所求的根。

4)程序中变量说明

x:

存放初值x0和二分法中的xk

a:

存放含根区间的左端点ak

b:

存放含根区间的右端点bk

e1:

描述f(xk)=0的微小值,这里用|f(xk)|

n:

存放二分次数

注:

语句If[p<0,b=x,a=x]中p的一定要是算出的数值,否则会出现错误。

本程序中用“p=f[a]*w//N”而不用“p=f[a]*w”就是这个原因。

补充Mathematica程序为:

二、用Newton法求方程的根

Newton迭代法也称切线法,是非线性方程求根方法中收敛的最快的方法,其涉及的近似处理方法很有代表性。

1)Newton迭代法构造过程

将方程f(x)=0线性化处理为近似方程,然后用近似方程获得求根的迭代计算公式。

具体为:

设xk是f(x)=0的一个近似根,把f(x)在xk处作泰勒展开,得:

取前两项来近似代替f(x)(称为f(x)的线性化),则得近似线性方程:

设f(xk)0,令其解为xk+1,得:

上式称为求f(x)=0根的Newton(牛顿)迭代格式。

2)Newton迭代法算法

1.输入初值x0、迭代精度eps、函数f(x)和迭代最大次数Nmax

2.Fork=1,2,…,Nmax

1.1  如果|f(x0)|

1.2  xx0-f(x0)/f(x0)

1.3  如果|x-x0|

1.4  x0x

2.输出迭代失败,终止。

3)Newton迭代法程序

Clear[x,f,g];

f[x_]=Input["f[x]="];

g[x_]=D[f[x],x];

x0=Input["输入迭代初值"];

eps1=0.00000000001;

nmax=500;

eps=Input["输入精度控制eps="];

Do[u1=g[x0];

If[Abs[u1//N]

x=x0-f[x0]/u1;

u1=Abs[x-x0]//N;

Print["x=",x,"n=",n,"eps=",u1];

If[u1

{n,1,nmax}];

If[u1>eps,Print["迭代失败"]]

说明:

本程序用于求非线性方程f(x)=0在x0附近的根。

程序执行后,先通过键盘输入迭代函数f(x)和迭代初值x0及根的精度要求eps,程序即可给出每次迭代的次数和对应的点列xk,其中最后输出的结果即为所求的根。

如果迭代超出500次还没有求出满足精度的根则输出迭代失败提示。

4)程序中变量说明:

x0:

存放初值和迭代过程中的xk

x:

存放迭代过程中的xk+1

nmax:

存放迭代允许的最大次数

u1:

临时变量

注:

迭代最大次数可以修改为其他数字。

三、题目解答(Abs[x(k)-x(k-1)]<0.001)

题1。

(x-2)*Exp[x]=1,取x0=2.5.

解:

用Mathematica程序直接迭代结果为:

用牛顿不动点迭代法得到的结果为:

题2。

2*Cos[x]-3*x+12=0,取x0=4.

解:

用Mathematica程序直接迭代结果为:

 

用牛顿不动点迭代法得到的结果为:

题3。

3*x^2-Exp[x]=0,取x0=-1.

解:

用Mathematica程序直接迭代结果为:

用牛顿不动点迭代法得到的结果为:

题4.用Newton迭代法求方程xex–1=0的根,取x0=0.5,要求误差不超过10-3。

解:

用二分法求方程xex-1=0在[0,1]内的根,要求误差不超过10-3。

令f(x)=xex–1,因为f(0)=-1<0,f

(1)=e-1>0,所以可以用二分法。

执行二分法程序后,在输入的四个窗口中按提示分别输入

x*Exp[x]-1、0、1、0.001

每次输入后用鼠标点击窗口的“OK”按扭,输出计算结果:

a=0b=1f(x)=-1+exx

n=1x=0.5e=0.5

n=2x=0.75e=0.25

n=3x=0.625e=0.125

n=4x=0.5625e=0.0625

n=5x=0.59375e=0.03125

n=6x=0.578125e=0.015625

n=7x=0.570312e=0.0078125

n=8x=0.566406e=0.00390625

n=9x=0.568359e=0.00195312

n=10x=0.567383e=0.000976562

此结果说明共二分10次,求得的近似根为x=0.567383,其误差为e=0.000976562。

执行Newton迭代法程序后在输入的三个窗口中按提示分别输入

x*Exp[x]-1、0.5、0.001

每次输入后用鼠标点击窗口的“OK”按扭,输出计算结果:

x=0.57102n=1eps=0.0710204

x=0.567156n=2eps=0.00386487

x=0.567143n=3eps=0.0000122782

x=0.567143n=4eps=1.2347710-10

此结果说明迭代4次,求得误差为e=1.2347710-10的近似根,最后显示的近似根结果为x=0.567143,它只是部分表示,要看该近似根更详细的表示(如看其中前10位数)可以再键入命令N[x,10]后有近似根的为0.5671432904。

题5。

x^3-x^2-1=0,取x0=1.5.

解:

用Mathematica程序直接迭代结果为:

用牛顿不动点迭代法得到的结果为:

题6。

Exp[x]+10*x-2=0,取x0=0.

解:

用Mathematica程序直接迭代结果为:

用牛顿不动点迭代法得到的结果为:

实验小结与分析:

观察几道题的计算结果,二分法的迭代次数比牛顿迭代法的多,收敛速度较慢。

牛顿法一个主要优点:

当初始点充分靠近x*时,牛顿法收敛很快。

但是从程序中我们可以发现,牛顿迭代法要求导数,牛顿迭代法的计算量比二分法大。

最后,我们发现牛顿法是一个局部方法,仅当初始点x0充分靠近x*时,方法才是有效的,如果初始点x0远离x*,牛顿法将收敛很慢,甚至不收敛。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1