非线性方程迭代法实验题
迭代法求非线性方程的根讲解

迭代法是求解非线性方程近似根的一 种方法,这种方法的关键是确定迭代函数 (x),简单迭代法 用直接的方法从原方程 中隐含的求出x,从而确定迭代函数(x), 这种迭代法收敛速度较慢,迭代次数多, 因此常用于理论中,Newton迭代法采用另一 种迭代格式, 具有较快的收敛速度,由牛顿 迭代法可以得到很多其他迭代格式。
( p ) ( )
p!
用条件(*),则有 ( x
k
) (x )
*
( xk x * ) p
*
注意到 ( xk ) xk 1, ( x * )
( p) ( ) * p * x x ( x x ) 由上式得 k 1 k x p!
11
下一页
返回
ek 1 ( p ) ( x*) 因此对迭代误差有: p 。这表明迭代过程 p! ek
1
下一页
迭代法
• • • • • • • 一、简单迭代法的概念与结论 二、 Newton迭代法的基本思想 三、牛顿法的几何意义 四、牛顿迭代法的步骤 五、例题 六、其他注意的事项
2
一、简单迭代法的概念与结论
• 简单迭代法又称逐次迭代法,基本思想是构造不动点方程,以求 得近似根。即由方程f(x)=0变换为x=(x), 然后建立迭代格式, •
x0 均收敛。证毕。 R
下一页
14
返回
二. Newton迭代法的基本思想
• 设X K 是f(x)=0的一个近似根,把f(x)在 X K 处作泰勒展开
的邻近连续,并且 / ( x* ) ( x* ) ( p1) ( x* ) 0 (*) ( p ) ( x * ) 0
则该迭代过程在点 x * 邻近是P阶收敛的。
非线性方程求根—牛顿迭代法(新)

非线性方程求根——牛顿迭代法一、牛顿迭代法的基本思想基本思想:将非线性方程逐步归结为某种线性方程求解。
设方程f (x )=0有近似根x k (f `(x k )≠0),将f (x )在x k 展开:(ξ在x 和x k 之间)2()()()()()()2!k k k k f f x f x f x x x x x ξ'''=+-+-()()()()k k k f x f x f x x x '≈+-可设记该线性方程的根为x k +1,则()()()0k k k f x f x x x '+-=1()()k k k k f x x x f x +=-'故f (x )=0可近似表示为即为Newton 法迭代格式。
(k =0,1,……)例:用Newton 迭代法求方程310x x --=在x 0=1.5附近的近似实根。
解:32()1,()31f x x x f x x '=--=-迭代公式为312131kk k k k x x x x x +--=--计算步骤如下:(1)取初值x 0=1.5;(2)按照迭代公式计算x 1;(3)若|x 1-x 0|<=0.00001,终止迭代;否则,x 0=x 1;转(2);(4)输出迭代次数和近似根.二、牛顿迭代法的实现MATLAB求解程序设计:方程及一阶导数函数:function[fun,dfun]=fun0(x)fun=x^3-x-1;%求原函数的值dfun=3*x^2-1;%求一阶导数的值计算主程序:clearx0=1.5;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=1;while abs(x1-x0)>1e-5x0=x1;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=i+1;enddisp('the solution is x1=')x1disp('the iter time is ')i计算结果为:the solution is x1=x1 =1.3247the iter time isi =4可见经过4次迭代即到达要求的精度,原方程的一个近似实数根为1.3247.三、牛顿迭代法的收敛性牛顿迭代法的迭代函数:)()()(x f x f x x '-=ϕ222)]([)()()]([)()()]([1)(x f x f x f x f x f x f x f x '''='''-'-='ϕ设f (x *)=0,f `(x *)≠0,则ϕ`(x *)=0,故Newton 迭代法在x *附近至少平方收敛。
数值分析第四章 解非线性方程的迭代法

即
(xk+1-α)2≈(xk-α)(xk+2-α) xk+12-2xk+1α+α2≈xkxk+2-(xk+xk+2)α+α2
解得
x k x k + 2 x k2+1 α≈ x k + 2 2 x k +1 + x k
( x k +1 x k ) 2 = xk x k + 2 2 x k +1 + x k
可见,|xk-xk-1|充分小可保证|xk-α|充分小, 而且对任 一ε>0,要使|xk-α|<ε, 只要 k > ln ε (1 L) ÷ ln L x1 x 0
证 记(x)=(x)-x,则(a)=(a)-a≥0, (b)=(b)b≤0, 由(x)的连续性,必存在α∈[a,b]使(α)=(α)-α=0, 即α=(α), 又′(x)=′(x)-1<0, 所以x=(x)的根唯一. |xk+1-xk|=|(xk)-(xk-1)| =|′(ξ)(xk-xk-1)|≤L|xk-xk-1| |xk+1-α|=|(xk)-(α)|=|′(ξ)(xk-α)|≤L|xk-α| |xk-α|=|(xk-xk+1)+(xk+1-α)| ≤|xk-xk+1|+|xk+1-α|≤L|xk-xk-1|+L|xk-α| 于是有:
k 0 1 2 3 4 5 xk 0.5 0.60653 0.54524 0.57970 0.56006 0.57117 |xk-xk-1| 0.10653 0.06129 0.03446 0.01964 0.01111 k 6 7 8 9 10 xk 0.56486 0.56844 0.56641 0.56756 0.56691 |xk-xk-1| 0.00631 0.00358 0.00203 0.00115 0.00065
牛顿迭代法的数值实验和仿真

牛顿迭代法的数值实验和仿真牛顿迭代法是一种广泛应用于求解非线性方程的方法。
它的基本思想是通过不断接近方程的根,使得函数在根附近的一段区间内表现出线性的特征,从而不断逼近方程的解。
在本文中,我们将介绍牛顿迭代法的数值实验和仿真,并通过实例来展示该方法在实际问题中的应用。
1. 牛顿迭代法的原理牛顿迭代法的原理是利用泰勒级数来逼近函数的根。
具体来说,对于非线性方程 f(x) = 0,我们首先可以通过牛顿迭代公式:$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$来计算出一个初始解 $x_0$,然后不断通过公式进行迭代,直到满足一定的收敛条件。
其中,$f'(x)$ 表示 $f(x)$ 对 $x$ 的导数,也就是函数的斜率。
这个公式的推导是通过将函数在 $x_n$ 处进行一阶泰勒展开得到的。
2. 牛顿迭代法的数值实验为了验证牛顿迭代法的有效性,我们可以进行一些简单的数值实验。
现在考虑求解方程 $x^3 - 5x^2 + 3x -7 = 0$ 在 $[1,2]$ 中的解。
我们首先可以通过图像观察到该方程在1 到2 之间有一个根。
我们可以用 Matlab 程序来实现迭代计算,代码如下:function [x,it] = newton(f,df,x0,tol,maxit)for it = 1:maxitx = x0-f(x0)/df(x0);if abs(x-x0) < tol, return, endx0 = x;enderror('Maximum number of iterations reached')在代码中,f(x) 和 df(x) 分别表示要求解的方程和其一阶导数。
tol 表示迭代的停止条件,如果$|x_{n+1}-x_n|<tol$,则停止迭代。
maxit 表示最大的迭代次数,如果迭代次数超过了该限制,则停止迭代。
我们可以通过调用该程序,输入相应的参数来进行数值实验。
非线性方程的二分法-迭代法-松弛迭代法-Aitken迭代法-Steffensen迭代法

err=input('请输入最大极限err=\n');
k=0;
y=fun(x0)
z=fun(y)
x1=x0-(y-x0)^2/(z-2*y+x0)
cha=abs(y2-y1);
y1=y2;
x2=x3;
ifk>N
disp('超过迭代次数!');
break;
end
end
x=x2;
k;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[x,k]=Steffensen()
x0=input('输入初值x0=\n');
b=c;
elseifyb*yc>0
b=c;
yb=yc;
else
a3;b)/2;
k;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[x,k]=diedai1()
x0=input('输入初值x0=\n');
N=input('请输入最大迭代次数N=\n');
【实验内容】
1、二分法
假定方程 在区间 内有唯一的实根 。此时, 即为有根区间。
1.1基本思想:
首先确定有根区间,然后平分有根区间,通过判断区间端点处的函数值符号,逐步将有根区间缩小,直至有根区间足够地小,便可求出满足给定精度要求的根 的近似值。
1.2算法过程:
取 ,将 代入方程 ,判断它的正负号,并用 替换与它同方向的区间端点,依次循环得到:
2、迭代法
2.1基本思想:
非线性方程组迭代法

实验二 非线性方程的数值解法1.1 实验内容和要求在科学研究和工程技术中大量的实际问题是非线性的,求非线性方程()0f x =满足一定精确度的近似根是工程计算与科学研究中诸多领域经常需要解决的问题。
实验目的:进一步理解掌握非线性方程求根的简单迭代法、埃特金Aitken 加速法、牛顿迭代法的思想和构造。
实验内容: 求方程2320x x x e -+-=的实根。
要求:(1)设计一种简单迭代法,要使迭代序列收敛,然后再用埃特金Aitken 加速迭代,计算到-8110k k x x --<为止。
(2)用牛顿迭代法,同样计算到-8110k k x x --<(3)输出迭代初值、迭代次数k 及各次迭代值,并比较算法的优劣。
1.2 算法描述普通迭代法计算步骤:(1)给定初始近似值0x ,eps 为精确度。
(2)用迭代公式x =x 2+2−e x 3进行迭代,直到-8110k k x x --<为止。
埃特金Aitken 加速迭代法计算步骤:(1)将()0f x =化成同解方程()x x ϕ=()k k y x ϕ= ,()k k z y ϕ=21()2k k k k k k k y x x x z y x +-=--+=22k k k k k kx z y z y x --+ (2)计算到-8110k k x x --<为止。
牛顿法计算步骤:给定初始近似值0x ,1ε为根的容许误差,2ε为()f x 的容许误差,N 为迭代次数的容许值。
计算00(),()f x f x '(1)如果0()0f x '=或者迭代次数大于N ,则算法失败,结束;否则执行(2)(2)按公式0100()()f x x x f x =-'迭代一次,得到新的近似值1x ,计算11(),()f x f x ' (3)如果101x x ε-<或者12()f x ε<,则迭代终止,以1x 作为所求的根,结束;否则执行(4)(4)以111(,(),())x f x f x '代替000(,(),())x f x f x ',转步骤(1)继续迭代。
7、解非线性方程的迭代法

(1.1)
2. 超越方程, 如 : x e x 0.
如果f ( x)可以分解为 f ( x) ( x x*)m g ( x), 其中0 | g ( x*) | , m为正整数. 则称x * 为f ( x)的m重零点.
此时 f ( x*) f ( x*) f ( m 1) ( x*) 0, f ( m) ( x*) 0.
k 0 1 2 3 4 5 6 7 xk 1.5 1.35721 1.33086 1.32588 1.32494 1.32476 1.32473 1.32472
3 (2) xk 1 xk 1, x0 1.5, x1 2.375, x2 12.39, .
二、不动点的存在性与迭代法的收敛性
二、斯蒂芬森迭代法
把不动点迭代与埃特金加速技巧结合,得到斯蒂芬森 ( Steffensen)迭代法 yk ( xk ), zk ( yk ),
( yk xk ) 2 xk 1 xk zk 2 yk xk
改写为另一种不动.4)
k 0 1 2 3 ׃ xk x0 x1 x2 x3 ׃ 迭代法(1) 2 3 9 87 ׃ 迭代法(2) 2 1.5 2 1.5 ׃ 迭代法(3) 2 1.75 1.73475 1.732631 ׃ 迭代法(4) 2 1.75 1.732143 1.732051 ׃
定义2 设迭代过程xk 1 ( xk )收敛于x*,误差ek xk x*, 若 lim
例6 求方程3x 2 e x 0在[3,4]中的解.
解: 取对数得x 2 ln x ln 3 g ( x), 构造迭代法 xk 1 2 ln xk ln3 2 2 ( x) , max ( x) 1, 当x [3,4], ( x) [3,4], x 3 x 4 3 由定理2迭代收敛. x0 3.5, x16 3.73307 .
实验五 用Newton法计算方程的根

五. 讨论分析当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下例如求020sin 35=-+-x x e x 的根,其中控制精度1010-=eps ,最大迭代次数40=M ,在steffensen 加速迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。
利用以上程序,我们只需输入:phi=inline('exp(5*x)-sin(x)+(x)^3-20');[x_star,index,it]=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败六. 改进实验建议根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newton 法或者Steffensen 中进行求解。
当然,我们可以用其他数学软件实现Newton 迭代法,我们可以用z-z 超级画板,其操作流程为:牛顿迭代法的公式是:x n+1=x n-f(x n)/f'(x n)。
下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。
(一)观察方程f(x)=0的零点位置(1)显示坐标系的坐标刻度。
(2)作出函数y=ln(x)+2*x-6的图像,如下图所示:可以观察到方程的根在区间[2,3]上,我们可以设定近似解的初始值为2。
(二)设计求方程近似解的程序(1)在程序工作区中输入:f(x){ln(x)+2*x-6;}执行后,返回结果为:>> f(x) #这表示在计算机已经完成了函数f(x)的定义。
(2)定义f(x)的导函数g(x),在程序工作区中输入:Diff(f(x),x);执行后,返回结果为:>> 2+1/x #得到了f(x)的导函数。