关于牛顿迭代法的课程设计实验指导
用牛顿定律解决问题教案

用牛顿定律解决问题教案一、教学目标:1. 让学生了解并掌握牛顿定律的基本概念和原理。
2. 培养学生运用牛顿定律解决实际问题的能力。
3. 培养学生进行科学探究和团队协作的能力。
二、教学内容:1. 牛顿定律的基本概念和原理。
2. 运用牛顿定律解决实际问题的方法和步骤。
三、教学过程:1. 导入:通过一个简单的例子,引导学生思考物体运动的原因。
2. 讲解:介绍牛顿定律的基本概念和原理,解释物体运动的原因。
3. 实践:让学生通过实验或模拟,体验物体在力的作用下运动的变化。
4. 应用:引导学生运用牛顿定律解决实际问题,如计算物体的加速度、制动距离等。
四、教学评价:1. 学生对牛顿定律的基本概念和原理的理解程度。
2. 学生运用牛顿定律解决实际问题的能力。
3. 学生进行科学探究和团队协作的能力。
五、教学资源:1. 教材或教辅资料。
2. 实验器材或模拟软件。
3. 教学PPT或黑板。
4. 作业和练习题。
六、教学策略:1. 采用问题驱动的教学方法,通过提出问题和解决问题的方式,激发学生的学习兴趣和探究欲望。
2. 利用实验和模拟软件,让学生亲身体验和观察物体在力的作用下运动的变化,增强学生对牛顿定律的理解。
3. 提供丰富的实际问题案例,让学生分组讨论和合作解决,培养学生的团队协作能力和科学探究能力。
4. 采用多元化的评价方式,包括学生口头报告、实验报告和作业练习,全面评估学生对牛顿定律的掌握程度。
七、教学实施:1. 在课堂上,教师提出一个问题,如“为什么物体在推力的作用下会加速运动?”引导学生思考和讨论。
2. 教师接着讲解牛顿定律的基本概念和原理,解释物体运动的原因。
3. 学生分组进行实验或使用模拟软件,观察和记录物体在力的作用下运动的变化。
4. 学生分组讨论和合作解决实际问题,如计算物体在给定推力下的加速度和制动距离。
5. 学生进行口头报告,分享他们的解题过程和结果。
八、教学反馈:1. 教师通过观察学生的实验操作和讨论过程,了解学生对牛顿定律的理解程度和运用能力。
实验三牛顿迭代法和牛顿下山法

实验三牛顿迭代法和牛顿下山法(2学时)
牛顿迭代法和牛顿下山法是求解非线性方程的有效方法,要求熟练掌握牛顿迭代公式和牛顿下山法,并能够针对不同的非线性方程构造其迭代公式。
一、实验目的
1 .能熟练掌握牛顿迭代法和牛顿迭代法。
2 .掌握迭代的收敛性。
二、实验要求
1 .上机前作好充分准备,比较不用的方法解决相同问题的不同。
2 .编写Fortran程序,记录调试过程及结果。
3 .程序调试完后,在机器上检查运行结果。
4 .给出本实验的实验报告。
三、实验内容
1 .求解方程:f(x)=x3-x-1 的根。
2 .编写牛顿迭代法程序,取初值x0=1.3,迭代收敛的条件为前后迭代结果的差小于10—6。
3 .编写牛顿下山法程序,取初值0.6,迭代的收敛条件为前后迭代结果的差小于10—6。
4 .并用上述几种算法程序计算出上面方程的解。
四、实验步骤
•根据实验题目,给出解决问题的程序代码。
•上机输入和调试自己所编的程序。
•上机结束后,应整理出实验报告。
五、实验报告要求及记录、格式
按《数值计算方法》课程实验报告要求格式填写。
牛顿迭代法的数值实验和仿真

牛顿迭代法的数值实验和仿真牛顿迭代法是一种广泛应用于求解非线性方程的方法。
它的基本思想是通过不断接近方程的根,使得函数在根附近的一段区间内表现出线性的特征,从而不断逼近方程的解。
在本文中,我们将介绍牛顿迭代法的数值实验和仿真,并通过实例来展示该方法在实际问题中的应用。
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 表示最大的迭代次数,如果迭代次数超过了该限制,则停止迭代。
我们可以通过调用该程序,输入相应的参数来进行数值实验。
验证牛顿运动定律教材实验及实验创新

验证牛顿运动定律教材实验及实验创新牛顿运动定律是物理学中非常重要的理论之一,它分为三个定律,描述了物体在力的作用下的运动规律。
验证牛顿运动定律是物理实验课程中的一个重要内容。
在实验中,学生们可以通过搭建实验装置,进行数据采集、分析,验证牛顿三大定律的正确性,从而深入理解物体在力的作用下的运动规律。
一、牛顿第一定律牛顿第一定律也称为惯性定律,它指出:物体静止时会继续保持静止状态,物体匀速直线运动时会保持匀速直线运动状态,直到有外力作用改变其状态。
为验证牛顿第一定律,可以进行下面这个简单的实验。
1.1 实验装置:一根水平摆放的光滑桌面、一个小木块、一根细线、一个吊钩。
1.2 实验步骤:(1)在桌面上放置一根水平摆放的光滑桌面,并将小木块放在桌面上。
(2)在小木块上方悬挂一根细线,细线的另一端连接一个吊钩。
(3)用手轻轻拉动小木块,使其开始运动。
(4)在拉动完成后,迅速用手去除细线,观察小木块的运动状态。
1.3 实验结果:在实验中,观察到小木块在细线被去掉之后,会继续沿着之前的方向做匀速直线运动,直至受到外力作用停止。
二、牛顿第二定律牛顿第二定律描述了物体在力的作用下的运动规律,它的数学表达式为:F=ma。
即物体所受的力等于物体的质量与加速度的乘积。
为验证牛顿第二定律,可以进行下面这个实验。
2.2 实验步骤:(1)在光滑水平轨道上放置小车,并将小铅球悬挂在载有磁铁的垂直支架上。
(2)调整小铅球的高度,使其与小车相碰。
(3)用手轻轻拉动小车,使小车在光滑水平轨道上做匀速直线运动。
(4)在小车运动的过程中,用手松开小铅球,让其撞击小车。
2.3 实验结果:在实验中,观察到小车在被小铅球撞击后,会受到一个力的作用,产生加速度,加速度的大小与小铅球的质量、高度以及与小车碰撞的时间等因素有关。
2.4 实验分析:从实验结果来看,小车在受到小铅球撞击后会产生加速度,这符合牛顿第二定律的描述。
即物体所受的力等于物体的质量与加速度的乘积。
牛顿迭代法收敛定理

关于牛顿迭代法的课程设计实验指导非线性方程(或方程组)问题可以描述为求 x 使得f (x ) = 0。
在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值解的一种重要的方法。
牛顿是微积分创立者之一,微积分理论本质上是立足于对世界的这种认识:很多物理规律在微观上是线性的。
近几百年来,这种局部线性化方法取得了辉煌成功,大到行星轨道计算,小到机械部件设计。
牛顿迭代法正是将局部线性化的方法用于求解方程。
一、牛顿迭代法及其收敛速度牛顿迭代法又称为牛顿-拉夫逊方法(Newton-Raphson method ),是一种在实数域和复数域上通过迭代计算求出非线性方程的数值解方法。
方法的基本思路是利用一个根的猜测值x 0做初始近似值,使用函数f (x )在x 0处的泰勒级数展式的前两项做为函数f (x )的近似表达式。
由于该表达式是一个线性函数,通过线性表达式替代方程中的求得近似解x 1。
即将方程f (x ) = 0在x 0处局部线性化计算出近似解x 1,重复这一过程,将方程f (x ) = 0在x 1处局部线性化计算出x 2,求得近似解x 2,……。
详细叙述如下:假设方程的解x *在x 0附近(x 0是方程解x *的近似),函数f (x )在点x 0处的局部线化表达式为)()()()(000x f x x x f x f '-+≈由此得一次方程 0)()()(000='-+x f x x x f求解,得 )()(0001x f x f x x '-= 如图1所示,x 1比x 0更接近于x *。
该方法的几何意义是:用曲线上某点(x 0,y 0)的切线代替曲线,以该切线与x 轴的交点(x 1,0)作为曲线与x 轴的交点(x *,0)的近似(所以牛顿迭代法又称为切线法)。
设x n 是方程解x *的近似,迭代格式)()(1n n n n x f x f x x '-=+ ( n = 0,1,2,……) 就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解。
牛顿迭代法实验报告

1)x1=x0-F0/F0’,
2)计算F1=f(x1);F1’=f’(x1)
3)若F1’=0,则输出“方法失败”并结束。
3.控制:若|x1-x0|<EPS或|F1|<DELTA,则输出近似解x1和迭代次数k并结束;否则,x0=x1;F0=F1;F0’=F1’。
4.k>N时输出“经N次迭代无满足要求的近似解”结束。
输入DELTA:1e-7
输入N:100
x(1)=3.000000 x(2)=2.200000 x(3)=1.830151 x(4)=1.737795 x(5)=1.732072
最终结果为1.732051Press any key to continue
六、分析和讨论
1.输入不同的初值x0,迭代次数的变化情况
四、实验步骤
1)完成牛顿迭代法的程序设计及录入;
2)完成程序的编译和链接,并进行修改;
3)用书上的例子对程序进行验证,并进行修改;
4)分别输入两组不同的根的误差限,观察运算次数的变化;
5)分别取不同的初时值x0,观察运算结果的变化;
6)完成实验报告。
五、实验结果
1.经编译、链接及例子验证结果正确的源程序:
#include<stdio.h>
#include<math.h>
float f(float x)
{
float a;
a=x*x*x+x*x-3*x-3;
return a;
}
float f1(float x)
{
float b;
b=3*x*x+2*x-3;
return b;
}
牛顿迭代法
实验十七 牛顿迭代法【实验目的】1. 了解牛顿迭代法的基本概念。
2. 了解牛顿迭代法的收敛性和收敛速度。
3. 学习掌握MATLAB 软件有关的命令。
【实验内容】用牛顿迭代法求方程0123=-++x x x 的近似根,误差不超过310-。
【实验准备】1.牛顿迭代法原理设已知方程0)(=x f 的近似根0x ,则在0x 附近)(x f 可用一阶泰勒多项式))((')()(000x x x f x f x p -+=近似代替.因此, 方程0)(=x f 可近似地表示为0)(=x p .用1x 表示0)(=x p 的根,它与0)(=x f 的根差异不大.设0)('0≠x f ,由于1x 满足,0))((')(0100=-+x x x f x f 解得)(')(0001x f x f x x -= 重复这一过程,得到迭代格式 )(')(1n n n n x f x f x x -=+ 这就是著名的牛顿迭代公式,它相应的不动点方程为)(')()(x f x f x x g -=. 2. 牛顿迭代法的几何解析 在0x 处作曲线的切线,切线方程为))((')(000x x x f x f y -+=。
令0=y ,可得切线与x 轴的交点坐标)(')(0001x f x f x x -=,这就是牛顿法的迭代公式。
因此,牛顿法又称“切线法”。
图17.1 牛顿迭代法3.牛顿迭代法的收敛性 计算可得2)]('[)(")()('x f x f x f x g -=,设*x 是0)(=x f 的单根,有0)(',0)(**≠=x f x f ,则 0)]('[)(")()('2****=-=x f x f x f x g , 故在*x 附近,有1)('<x g .根据不动点原理知牛顿迭代法收敛.4.牛顿迭代法的收敛速度定理(牛顿法收敛定理) 设)(x f 在区间],[b a 上有二阶连续导数,且满足0)()(<b f a f ,)("x f 在],[b a 上不变号,)('x f 在],[b a 上不等于0,令,)("max ,)(min x f M x f m bx a b x a ≤≤≤≤== 有Mm a b 2<-.则对任意],[0b a x ∈,牛顿迭代格式收敛于0)(=x f 在],[b a 中的唯一实根*x ,并且: (1) .12,2*02*<-=≤-x x m M q q M m x x n n (2) .221*--≤-n n n x x mM x x (3) )('2)(")(lim **2**1x f x f x x x x nn n =--+∞→,牛顿迭代法为2阶收敛. 5.迭代过程的加速对不动点方程)(x g x =,它导出的迭代过程有可能发散,也可能收敛得非常缓慢.这时,我们有没有办法改进不动点方程,让迭代过程收敛得快一些呢?(1) 一个简单办法 注意到x x =和)(x g x =都是不动点方程,他们的加权平均x x g x h )1()()(λλ-+=也是不动点方程,而且)(x h 与)(x g 有完全相同的不动点.适当选取λ的值,可以使发散的迭代过程变得收敛,使收敛慢的迭代过程变得收敛迅速.(2)加速的原因 在下面的实验中我们可以看到,)(x h 在不动点*x 附近的导数值在很大程度上决定了迭代过程的收敛性.)('x h 的绝对值越小,收敛性越好.因此,选择λ使得0)('=x h .计算得到理想的λ值为)('11x g -=λ,相应可计算出)('1)(')()(x g x xg x g x h --=. (3) λ的选取 由于理想的λ值为)('11x g -=λ,当)('x g 变换不大时可以取)('0x g 近似计算λ.(4) 回到牛顿迭代法的讨论 为求解方程0)(=x f ,可以使用不动点方程)(x f x x +=,相应的迭代函数为)()(x f x x g +=.对)(x g 进行加速)(')()]('1[1)]('1[)]([)('1)(')()(x f x f x x f x f x x f x x g x xg x g x h -=+-+-+=--=, 所以,牛顿迭代法是对基本迭代格式进行加速的结果.6. 迭代的MATLAB 命令MATLAB 中主要用for, while 等控制流命令实现迭代.【实验方法与步骤】练习1 用牛顿迭代法求方程0123=-++x x x 在5.0=x 附近的近似根,误差不超过310-.牛顿迭代法的迭代函数为1231)(')()(223++-++-=-=x x x x x x x f x f x x g , 相应的MA TLAB 代码为:>>clear;>>x=0.5;>>for i=1:3>>x=x-(x^3+x^2+x-1)/(3*x^2+2*x+1)>>end可算得迭代数列的前3项0.5455, 0.5437, 0.5437.近三次迭代,就大大超过了精度要求.练习2用牛顿迭代法求方程)0(2>=a a x .的近似正实根,由此建立一种求平方根的计算方法.由计算可知,迭代格式为)(21)(x a x x g +=.,在实验12的练习4种已经进行了讨论. 练习3用牛顿迭代法求方程1=x xe 的正根.牛顿迭代法的迭代函数为,)1(1)(')()(x x ex xe x x f x f x x g +--=-= 如果取初值为00=x ,相应的MA TLAB 代码为:>>clear;>>x=0.0;>>for i=1:6>>x=x-(x*exp(x)-1)/((x+1)*exp(x))>>end可算得迭代数列的前6项1, 0.6839, 0.5775, 0.5672, 0.5671, 0.5671,说明迭代是收敛的.如果取初值为100=x ,相应的MA TLAB 代码为:>>clear;>>x=10.0;>>for i=1:20>>x=x-(x*exp(x)-1)/((x+1)*exp(x))>>end可算得迭代数列的前20项为9.0909, 8.1900, 7.2989, 6.4194, 5.5544, 4.7076, 3.8844, 3.0933, 2.3487, 1.6759,1.1195, 0.7453, 0.5902, 0.5676, 0.5671, 0.5671, 0.5671, 0.5671, 0.5671, 0.5671说明迭代是收敛的.如果取初值为10-=x ,或5.10-=x ,可算得(MATLAB 代码略去)迭代数列是发散的.请根据函数图形分析原因,练习4求方程x e x -=在5.0=x 附近的根,精确到510-.先直接使用x e x g -=)(的迭代格式, 相应的MA TLAB 代码为:>>n=0; eps=1.0e-5; x=0.5;>>while abs(x-exp(-x))>eps>>p(-x); n=n+1;>>end>>x, n结果为x= 0.5671, n = 17,说明迭代17次后达到精度要求.为加快收敛速度,用x x g x h )1()()(λλ-+=构造迭代格式,由实验的预备知识中可知取625.0)5.0('11≈-=g λ, 相应的MA TLAB 代码为: >>n=0; eps=1.0e-5; x=0.5;>>while abs(x-0.625*exp(-x)-0.375*x)>eps>>x=0.625*exp(-x)+0.375*x; n=n+1;>>end>>x, n结果为x= 0.5671, n = 3,说明迭代3次后达到精度要求..练习5对练习中方程x e x -=,用加快后的迭代格式)('1)(')()(x g x xg x g x h --=求在5.0=x 附近的根,精确到510-. 计算可得xxe e x x g x xg x g x h --++=--=1)1()('1)(')()(, 相应的MATLAB 代码为: >>n=0; eps=1.0e-5; x=0.5;>>while abs(x-(x+1)*exp(-x)/(1+exp(-x)))>eps>>x=(x+1)*exp(-x)/(1+exp(-x)); n=n+1;>>end>>x, n结果为x= 0.5671, n =2,说明迭代2次后达到精度要求.【练习与思考】1. 用牛顿迭代法求方程1ln =x x 的近似根.2. 为求出方程013=--x x 的根,在区间]2,1[内使用迭代函数进行迭代,记录迭代数据,问迭代是否收敛?对迭代进行加速,对比加速前的数据,比较加速效果.3. 使用在不动点*x 的泰勒公式,证明牛顿迭代法收敛定理.。
实验十七 牛顿迭代法
实验十七 牛顿迭代法
2 x 练习2 用牛顿迭代法求方程 a(a 0) 的近
实验十七 牛顿迭代法
练习1 用牛顿迭代法求方程 x x x 1 0 3 在x=0.5附近的近似根,误差不超过 10 。 牛顿迭代法的迭代函数为
3 2
f ( x) x x x 1 g ( x) x x 2 f ( x) 3x 2 x 1
3 2
实验十七 牛顿迭代法Fra bibliotek数学实验
实验十七 牛顿迭代法
河西学院数学系
实验十七 牛顿迭代法
【实验目的】 1.了解牛顿迭代法的基本概念。 2.了解牛顿迭代法的收敛性和收敛速度。 3.学习、掌握MATLAB软件的有关命令。
实验十七 牛顿迭代法
【实验内容】 用牛顿迭代法求方程 x3 x2 x 1 0 的近似根,误 差不超过 103 。 【实验准备】 1.牛顿迭代法原理 2.牛顿迭代法的几何解析 3.牛顿迭代法的收敛性 4.牛顿迭代法的收敛速度 5.迭代过程的加速 6.迭代的MATLAB命令 MATLAB中主要用for,while等控制流命令实现迭代。
似正实根,由此建立一种求平方根的计算 方法。 1 a 由计算可知,迭代格式为 g ( x) ( x ) 2 x 在实验12的练习4中已经进行了讨论。
【练习与思考】
物理教学设计牛顿定律实验设计与讲解
02
牛顿第三定律表述
阐述牛顿第三定律的内容和意义,强调两个物体间的作用力和反作用力
总是大小相等、方向相反。
03
实验设计与演示
设计实验,如通过弹簧秤测量两个物体间的相互作用力,验证牛顿第三
定律。同时,可以引导学生思考生活中牛顿第三定律的应用实例。
04
学生实验操作与指导
实验操作规范与安全注意事项
实验操作规范
小车
用于承载砝码并沿斜面下滑。要求小车质 量适中,以减小空气阻力对实验结果的影 响。
细绳
用于连接小车和砝码,传递作用力。要求 细绳结实且不易伸长,以保证作用力的稳 定传递。
砝码
用于提供作用力,使小车沿斜面下滑。要 求砝码质量精确,以便准确测量作用力的 大小。
实验过程与记录
实验过程
按照实验步骤进行操作,注意观察和 记录实验现象和数据。在实验过程中 要保持安静,避免干扰实验结果。
操作步骤
详细讲解实验的操作步骤,确保学生了解并掌握每个步骤的操作方 法和注意事项。例如,如何调整实验装置、如何测量和记录数据等 。
问题解决
在实验过程中,鼓励学生提出问题和遇到困难时寻求帮助。教师应及 时解答学生的问题,并引导学生思考问题的解决方法。
学生实验数据记录与处理
数据记录
要求学生认真记录实验数据,包括原始数据和处理后的数 据。强调数据记录的重要性,以便后续的数据分析和实验 结论的得出。
物理教学设计牛顿定律实验设计与 讲解
汇报人:XX
2024-01-17
• 引言 • 牛顿定律实验设计 • 牛顿定律实验讲解 • 学生实验操作与指导 • 实验结果分析与讨论 • 教学反思与总结
01
引言
目的和背景
newton法程序设计
Newton法程序设计一、什么是Newton法Newton法,又称为牛顿迭代法或牛顿-拉弗森法,是一种求解非线性方程的数值方法。
它基于泰勒展开定理,通过不断迭代逼近函数的根。
Newton法在科学、工程和数学领域有着广泛的应用。
二、原理与推导2.1 原理介绍Newton法基于以下的思想:对于一个已知函数f(x),如果我们能够找到一个初始估计值x0,使得f(x0)=0,那么函数f(x)的根就是x0。
我们可以通过不断迭代的方式,逐渐逼近根的真实值。
2.2 推导过程假设我们要求解方程f(x)=0的根,首先我们需要找到一个初始估计值x0。
假设x0位于方程的一个解附近,即f(x0)≈0。
我们可以通过泰勒展开定理将f(x)在x0处展开,得到如下的表达式:f(x) = f(x0) + (x-x0)f’(x0) + (x-x0)²f’’(x0)/2! + …忽略高阶项后,我们可以将方程简化为:0 ≈ f(x0) + (x-x0)f’(x0)将f(x0)≈0代入上述式子,可以得到:0 ≈ (x-x0)f’(x0)这个式子可以重写为:x ≈ x0 - f(x0)/f’(x0)通过迭代计算,我们可以逐渐逼近x的真实值。
三、算法设计3.1 算法流程Newton法的算法流程如下:1.初始化初始估计值x0。
2.计算f(x0)和f’(x0)。
3.计算下一个近似解x1 = x0 - f(x0)/f’(x0)。
4.判断是否满足终止条件,如果满足则输出x1,否则回到步骤2。
5.结束。
3.2 算法实现下面是一个用Python实现的Newton法算法的示例代码:def newton_method(f, df, x0, tol, max_iter):"""Newton法求解非线性方程的根:param f: 函数f(x):param df: 函数f(x)的导数:param x0: 初始估计值:param tol: 精度要求:param max_iter: 最大迭代次数:return: 近似解"""x = x0for i in range(max_iter):fx = f(x)if abs(fx) < tol:return xdfx = df(x)if dfx == 0:return Nonex = x - fx / dfxreturn None四、示例运用假设我们要求解方程x²-3=0的根,可以通过Newton法进行求解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
yx O x * x 1 x 0关于牛顿迭代法的课程设计实验指导非线性方程(或方程组)问题可以描述为求 x 使得f (x ) = 0。
在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值解的一种重要的方法。
牛顿是微积分创立者之一,微积分理论本质上是立足于对世界的这种认识:很多物理规律在微观上是线性的。
近几百年来,这种局部线性化方法取得了辉煌成功,大到行星轨道计算,小到机械部件设计。
牛顿迭代法正是将局部线性化的方法用于求解方程。
一、牛顿迭代法及其收敛速度牛顿迭代法又称为牛顿-拉夫逊方法(Newton-Raphson method ),是一种在实数域和复数域上通过迭代计算求出非线性方程的数值解方法。
方法的基本思路是利用一个根的猜测值x 0做初始近似值,使用函数f (x )在x 0处的泰勒级数展式的前两项做为函数f (x )的近似表达式。
由于该表达式是一个线性函数,通过线性表达式替代方程中的求得近似解x 1。
即将方程f (x ) = 0在x 0处局部线性化计算出近似解x 1,重复这一过程,将方程f (x ) = 0在x 1处局部线性化计算出x 2,求得近似解x 2,……。
详细叙述如下:假设方程的解x *在x 0附近(x 0是方程解x *的近似),函数f (x )在点x 0处的局部线化表达式为)()()()(000x f x x x f x f '-+≈由此得一次方程 0)()()(000='-+x f x x x f求解,得 )()(0001x f x f x x '-= 如图1所示,x 1比x 0更接近于x *。
该方法的几何意义是:用曲线上某点(x 0,y 0)的切线代替曲线,以该切线与x 轴的交点(x 1,0)作为曲线与x 轴的交点(x *,0)的近似(所以牛顿迭代法又称为切线法)。
设x n 是方程解x *的近似,迭代格式)()(1n n n n x f x f x x '-=+ ( n = 0,1,2,……) 就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解。
牛顿迭代法的最大优点是收敛速度快,具有二阶收敛。
以著名的平方根算法为例,说明二阶收敛速度的意义。
例1.已知4.12≈,求2等价于求方程f (x ) = x 2 – 2 = 0的解。
由于x x f 2)(='。
应用牛顿迭代法,得迭代计算格式)/2(211n n n x x x +=+,(n = 0,1,2,……) 取x 0= 1.4为初值,迭代计算3次的数据列表如下 迭代次数 近似值 15位有效数误差 01.4 1.41421356237310 -1.42e-002 11.41428571428571 1.41421356237310 7.21e-005 21.41421356421356 1.41421356237310 1.84e-009 31.41421356237309 1.41421356237310 -2.22e-016图1 牛顿迭代法示意图其中,第三栏15位有效数是利用MA TLAB 的命令sqrt(2)计算结果。
观察表中数据,第一次迭代数据准确到小数点后四位,第二次迭代数据准确到小数点后八位,……。
二阶收敛速度可解释为,每迭代一次,近似值的有效数位以二倍速度递增。
对于计算任意正数C 的平方根,牛顿迭代法计算同样具有快速逼近的性质。
二、牛顿迭代法的收敛性牛顿迭代法在使用受条件限制,这个限制就是通常所说的牛顿迭代法的局部收敛性。
定理 假设f (x )在x *的某邻域内具有连续的二阶导数,且设f (x *)=0,0)(*≠'x f ,则对充分靠近x *的初始值x 0,牛顿迭代法产生的序列{x n }收敛于x *。
下面例子是牛顿迭代法不收敛的反例。
反例说明,牛顿迭代法局部收敛性要求初始点要取得合适,否则导致错误结果。
例2用牛顿迭代法解方程 f (x ) = x 3 – x – 3 = 0。
分析:利用MA TLAB 求多项式零点命令roots(p),计算得三次方程的三个根如下表 r 1 r 2 r 31.6717 -0.8358 - 1.0469i -0.8358 + 1.0469i1为了使用牛顿迭代法计算,对于 f (x ) = x 3 – x – 3 ,首先求导数,得13)(-='x x f 。
取x 0 = 0和x 0 = 1取分别用牛顿迭代法计算,得 x 00 1 x 1-3.0000 2.5000 x 2-1.9615 1.9296 x 3-1.1472 1.7079 x 4-0.0066 1.6726 x 5-3.0004 1.6717 x 6-1.9618 1.6717 …… …… ……对于迭代初值取x 0=0,0附近,算法将陷入死循环。
x 0 yx 1x 2 x 3 y=x 3 – x – 3x图2 牛顿迭代法初值不收敛示意图而迭代初值取x 0=1,可以使牛顿迭代法得到收敛。
三、特殊代数方程的牛顿迭代法收敛区域将牛顿迭代法用于求解高阶代数方程时,首先回顾一个代数基本定理,即“一个n 阶多项式在复数域内有n 个根”。
根据牛顿迭代法的局部收敛性质,任意取一个数据做为牛顿迭代的初值,可能导致迭代不收敛,即使这一个初值可以使迭代法收敛,下一个有趣的问题是“迭代序列将收敛于哪一个根”,其规律如何?例3牛顿迭代法的收敛区域问题:Newton 迭代法可以用于求解复数方程 z 3 – 1 = 0,该方程在复平面上三个根分别是11=z ,i z 23212--=,i z 23213+-= 选择中心位于坐标原点,边长为4的正方形内的任意点作初始值,进行迭代,将不收敛的点定义为第一类,给它们标一种颜色;再把收敛到三个根的初值分为三类,并分别标上不同颜色。
对充分多的初始点进行实验,绘出牛顿迭代法对该方程的收敛域彩色图。
图3 牛顿迭代法收敛区域色图问题分析:记f (z ) = z 3 – 1,则23)(z z f =',所以牛顿迭代公式为 3/)/1(21n n n n z z z z --=+由于牛顿迭代法的二阶收敛速度,对于一个取定的初值z 0,如果z 0是一个可以导致迭代收敛的初值,则迭代10次已经达到足够精度,故可以取迭代次数为10。
考虑以坐标原点为中心的正方形区域}22,22|),{(≤≤-≤≤-=y x y x Ω取步长h =0.02,在区域内取离散网格点⎩⎨⎧⨯+-=⨯+-=h k y h j x kj 22,( j ,k =0,1,…,200) 由此可以构造出规则的复数z jk = x j + i y k ,( j ,k =0,1, (200)对于这些点,逐一用牛顿迭代法取初值进行迭代实验,判断是否收敛?如果收敛,到底以该点为初值的迭代序列收敛到哪方程的一个根?为了记录实验结果,构造四个阶数均为201×201矩阵:Z 0、Z 1、Z 2、Z 3,开始时这四个矩阵都设为全零矩阵。
如果以z jk 为初值的迭代实验结果是不收敛,则将Z 0的第j 行第k列的元素改写为1;如果以z jk为初值的迭代实验结果是收敛到第一个根,则将Z1的第j行第k列的元素改写为1;如果以z jk为初值的迭代实验结果是收敛到第二个根,则将Z2的第j行第k列的元素改写为1;如果以z jk为初值的迭代实验结果是收敛到第三个根,则将Z3的第j行第k列的元素改写为1。
首先分析矩阵Z0的数据,由于该矩阵在开始时刻为全零矩阵,而在迭代实验结束后,不收敛的点对应元素被改写为“1”。
所以,矩阵的元素只可能是“0”或“1”,根据该矩阵的全部的非零元素所在的位置可以使用MA TLAB的图形绘制命令spy()或pcolor()等显示出一个特殊的图形。
根据Z0数据绘的图形如下所示图4 牛顿迭代法不收敛区域色图导致牛顿迭代法不收敛的初始点所形成的平面点集是一个著名的集合,称为茹莉亚集(为纪念法国女数学家茹莉亚而命名)。
为了得到全局的收敛或不收敛情况,需要对四个矩阵进行叠加。
如果直接相加将导致一个全“1”矩阵,不可能得出希望的结果。
故,对矩阵做如下组合处理,令Z = Z0 + 2Z1 + 3Z2 + 4Z3则矩阵Z的元素由“1”、“2”、“3”、“4”这四个元素组成。
该矩阵的某一位置上数据为“1”,说明这一位置上的复数做初值导致牛顿迭代法不收敛;位置上数据为“2”,说明这一位置上的复数做初值导致牛顿迭代法收敛到第一个根;位置上数据为“3”,说明这一位置上的复数做初值导致牛顿迭代法收敛到第二个根;位置上数据为“4”,说明这一位置上的复数做初值导致牛顿迭代法收敛到第三个根。
所以该矩阵包含了矩阵区域内离散点集合做为牛顿迭代法收敛实验结果的全部信息。
将这一矩阵用MA TLAB作图命令pcolor()作用,将绘出图3所示的收敛区域色图。
导致牛顿迭代法收敛到第一个根的初始点所形成的平面点集,可以根据Z1数据绘图形四、关于实验的注记1.MA TLAB相关命令介绍(1)求多项式零点命令roots()该命令用于求多项式P(x) = a1x n + a2 x n-1 + …+ a n x + a n+1的全部零点。
例如z3– 1 = 0的三个零点,只需用命令:roots([1 0 0 -1]),可得ans =-0.5000 + 0.8660i-0.5000 - 0.8660i1.0000(2)绘伪彩色图命令pcolor()该命令主要用于绘制矩阵色图,根据矩阵中元素数据的大小不同绘不同颜色。
常常与命令shading interp结合使用效果会更好。
在MATLAB命令窗口中键入help pcolor,可获得英文帮助信息。
2. 例题3所用MA TLAB 程序及注释:X=roots([1,0,0,-1]); %利用MATLAB 命令求三次方程的根r1=X(1);r2=X(2);r3=X(3);h=0.02;N=1+4/h; %确定网格步长及网格点规模z0(N,N)=0;z1=z0;z2=z0;z3=z0; %定义四个大矩阵为全零矩阵t=(-2:h:2)+eps;[x,y]=meshgrid(t); %确定网格点坐标z=x+y*i;for j=1:Nfor k=1:Np=z(j,k); %提取迭代初始点for n=1:10p=p-(p-1/p^2)/3; %牛顿迭代操作endif abs(p-r1)<0.01z1(j,k)=1; %确定收敛到第一个根的初始点elseif abs(p-r2)<0.01z2(j,k)=1; %确定收敛到第二个根的初始点elseif abs(p-r3)<0.01z3(j,k)=1; %确定收敛到第三个根的初始点elsez0(j,k)=1; %确定不收敛的初始点endendendZ=z0+2*z1+3*z2+4*z3;figure(1)pcolor(x,y,Z),shading interp %绘牛顿迭代法收敛域figure(2)pcolor(x,y,z0),shading interp %绘牛顿迭代法不收敛域课程设计实验题目1.牛顿迭代法解复方程z n + 1 = 0的收敛域问题。