数值分析上机作业(六)

时间:2025-07-09

非线性方程组数值解,包含Steffensen加速方法、Newton方法,及相应的MATLAB程序

数值分析上机作业(六)

非线性方程组求根

一、题目要求

请用以下方法求方程

x3+2x2+10x 20=0

在x0=1附近的根。(精确值为x*=1.368808107)要求精度要求达到10 8。(1)xk+1=

20

xk2+2xk+10

20 2xk2 xk3

(2)xk+1=;

10

(3)方法(1)的Steffensen加速方法;(4)方法(2)的Steffensen加速方法;(5)Newton方法二、方法设计

(1)不动点迭代法

对于方程f(x)=0,将它改写成

x= (x)

*

*

(1)

若要求x满足f(x*)=0则x*= (x*);反之亦然。称x为 (x)的一个不动点。求f(x)的零点的就等价于求 (x)的不动点,选择一个初始近似值,将它代入式(1)右端,即可求得

x1= (x0)

可以如此反复迭代计算

xk+1= (xk),k=0,1,2,

(x)称为迭代函数。如果对任何x0∈[a,b],由式(1)得到的序列{xk}有极限

limxk=x*

k→∞

则称迭代方程(1)收敛,且x= (x)为 (x)的不动点,故称(1)为不动点迭代法。

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

**

非线性方程组数值解,包含Steffensen加速方法、Newton方法,及相应的MATLAB程序

(2)Steffensen加速方法

Seteffensen加速方法过程如下:

yk= (xk),zk= (yk)

(yk xk)2

xk+1=xk z 2y+x

kkk

k=0,1,

(2)

它可以理解为:要求x= (x)的根x*,令ε(x)= (x) x,ε(x)= (x) x=0。已知

***

x*的近似值xk及yk,其误差分别为

ε(xk)= (xk) xkε(yk)= (yk) yk

把误差“外推到零”,即过(xk,ε(xk)),(yk,ε(yk))两点作线性插值函数,它与x轴的交点即(2)式中的xk+1。

实际上(2)式可以写成另一种不动点迭代形式

xk+1=ψ(xk)

其中

[ (x) x]2

ψ(x)=x

( (x)) 2 (x)+x

(3)Newton方法

Newton方法实质上是一种线性化方法。其基本思想是将非线性方程f(x)=0逐步归结为某种线性方法来求解。

设已知方程f(x)=0有近似根xk(假定f(xk)≠0),将函数f(x)在点xk展开,有

f(x)≈f(xk)+f'(xk)(x xk)

于是f(x)=0可以近似表示为

f(xk)+f'(xk)(x xk)=0

这是个线性方程。记其根为xk+1,则

xk+1=xk

这就是Newton方法。

f(xk)

,k=0,1,2, f'(xk)

非线性方程组数值解,包含Steffensen加速方法、Newton方法,及相应的MATLAB程序

三、方案实现(1)xk+1=

20

xk2+2xk+10

这里已给出迭代公式,可通过如下程序实现其迭代过程

x(1)=1;

X0=1.368808107;tol=1e-8;max1=1000;formatlongfori=1:max1

x(i+1)=20/(x(i)^2+2*x(i)+10);err=abs(X0-x(i+1));iferr<tol

breakendend

count=i+1X=x(count)x'

运行这段程序,将显示出迭代次数、最终计算结果、以及详细的迭代过程。将这段程序保存为interation_1.m。

20 2xk2 xk3

(2)xk+1=

10

这里已给出迭代公式,可通过如下程序实现其迭代过程

x(1)=1;

X0=1.368808107;tol=1e-8;max1=1000;formatlongfori=1:max1

x(i+1)=(20-2*x(i)^2-x(i)^3)/10;err=abs(X0-x(i+1));iferr<tol

breakendend

count=i+1X=x(count)x'

运行这段程序,将显示出迭代次数、最终计算结果、以及详细的迭代过程。将这段程序保存为interation_2.m。

非线性方程组数值解,包含Steffensen加速方法、Newton方法,及相应的MATLAB程序

(3)方法(1)的Steffensen加速方法

在前面已对Steffensen加速方法进行了详细的讨论,且已给出了迭代公式,这里可通过如下程序来实现其迭代过程:

x(1)=1;

X0=1.368808107;tol=1e-8;max1=1000;formatlongfori=1:max1

y(i)=20/(x(i)^2+2*x(i)+10);z(i)=20/(y(i)^2+2*y(i)+10);

x(i+1)=x(i)-(y(i)-x(i))^2/(z(i)-2*y(i)+x(i));err=abs(X0-x(i+1));iferr<tol

breakendend

count=i+1X=x(count)x'运行这段程序,将显示出迭代次数、最终计算结果、以及详细的迭代过程。将这段程序保存为interation_steffensen_1.m。

(4)方法(2)的Steffensen加速方法

在前面已对Steffensen加速方法进行了详细的讨论,且已给出了迭代公式,这里可通过如下程序来实现其迭代过程:

x(1)=1;

X0=1.368808107;tol=1e-8;max1=1000;formatlongfori=1:max1

y(i)=(20-2*x(i)^2-x(i)^3)/10;z(i)=(20-2*y(i)^2-y(i)^3)/10;

x(i+1)=x(i)-(y(i)-x(i))^2/(z(i)-2*y(i)+x(i));err=abs(X0-x(i+1));iferr<tol

breakendend

count=i+1X=x(count)x'运行这段程序,将显示出迭代次数、最终计算结果、以及详细的迭代过程。将这段程序保存

非线性方程组数值解,包含Steffensen加速方法、Newton方法,及相应的MATLAB程序

为interation_steffensen_2.m。

(5)Newton方法

前面已对Newton方法进行了详细的讨论。这里直接编程如下,以实现迭代计算:

x(1)=1;

X0=1.368808107;tol=1e-8;max1=1000;fori=1:max1

x(i+1)=x(i)-(x(i)^3+2*x(i)^2+10*x(i)-20)/(3*x(i)^2+4*x(i)+10);err=abs(x(i+1)-X0);iferr<tol

breakendend

count=i+1X=x(count)x'

在使用Newton方法时,需要用到f(x)的导数。f'(x)=3x+4x+10。

运行这段程序,将显示出迭代次数、最终计算结果、以及详细的迭代过程。将这段程序保存为newton.m。

四、实验结果、分析与讨论

(1)第一种迭代公式及其Steffensen加速

采用第一种方法,可知迭代23次后得到满足要求的结果。 …… 此处隐藏:2247字,全部文档内容请下载后查看。喜欢就下载吧 ……

数值分析上机作业(六).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219