用牛顿法求解非线性方程教学内容
- 格式:doc
- 大小:105.00 KB
- 文档页数:14
1. 非线性方程组求解1.分别用牛顿法,及基于牛顿算法下的Steffensen 加速法。
(1) 求ln(sin )x x +的根。
初值0x 分别取0.1,1,1.5,2,4进行计算。
(2) 求sin =0x 的根。
初值0x 分别取1,1.4,1.6,1.8,3进行计算。
分析其中遇到的现象与问题。
(1)牛顿法牛顿法实质上是一种线性化方法,其基本思想是将非线性方程()0f x =逐步归结为某种线性方程来求解。
将已知方程()0f x =在近似值k x 附近展开,有()()()()'0k k k f x f x f x f x x ≈+-=,构造迭代公式,则1k x +的计算公式为:()()1',0,1,,k k k k f x x x k f x +=-= (1-1)根据Taylor 级数的几何意义我们可以从几何上形象的看牛顿迭代法的求解()0f x =的过程,第一次迭代()()'1000/x x f x f x =-,其中()()'00/f x f x 的几何意义很明显,就是0x 到1x 的线段长度(这可以从直角三角形的知识得到)。
第二次迭代()()'2111/x x f x f x =-,其中()()'11/f x f x 的几何意义很明显,就是1x 到2x 的线段长度。
同理可以进行第三次迭代第四次迭代,可以明显的看出x 的取值在不断逼近真实解*x 。
如图1-1所示:图1-1○1求ln(sin )=0x x +的根时,迭代公式为()1ln(sin )sin 1cos k k x x x x x x x+++=++,0示。
计算结果见附录1表F.1-1所示。
初值取1.5,2,4进行计算时结果不收敛。
表 1-1 牛顿法计算结果○2求sin =0x 的根时,迭代公式为1cos k k x x x+=+,初值0x 分别取1、1.4、1.6、1.8、3计算时结果收敛,误差小于510-时,近似解如表1-2所示。
求解非线性方程组的非精确牛顿法摘要:在经典牛顿法的基础上,给出了求解非线性方程组的非精确牛顿法。
在一定的条件下,证明了该算法的超线性收敛性,并且这个收敛性是二阶的。
关键词:非线性方程组;非精确牛顿法;收敛性对于无约束问题: minf(x) (1) 其中x∈Rn,f∶Rn→R是一个连续可微函数。
求解无约束优化问题方法大都属于迭代法,这类算法特点是:每一次迭代都要求函数值有所下降,因此人们称这类算法为下降法。
当下降方向取为负梯度时,此时函数值下降量最大,人们称它为最速下降法。
它是无约束最优化问题中最简单的方法,它具有全局收敛性,并且存储最较少,因此它适合于解决大型优化问题。
但它的缺点是收敛速度慢,在最优点处附近容易产生锯齿现象,为了改善收敛速度,人们提出了牛顿法。
牛顿法的基本思想是,在极小点附近用二阶Taylor多项式近似目标函数f(x),进而求出极小点的估计值。
设f(x)是二次可微实函数,x∈Rn。
又设x(k)是f(x)的极小点的一个估计,把f(x)在x(k)展成Taylor级数,并取二阶近似:f(x)≈Φ(x)=f(x(k))+ f(x(k))T(x-x(k))+12(x-x(k))T 2f(x(k))(x-x(k)) (2) 令Φ(x)=0,可得:x(k+1)=x(k)- 2f(x(k))-1 f(x(k)) (3)运用牛顿法时,初点的选择十分重要。
如果初始点靠近极小点,则可能很快收敛;如果初始点远离极小点,迭代产生的点列可能不收敛于极小点。
为了克服这个缺点,可以改进迭代公式(3):x(k+1)=x(k)+λkd(k)(4)其中d(k)=- 2f(x(k))-1 f(x(k))为牛顿方向,λk是由一维搜索得到的步长,即满足:f(x(k)+λkd(k))=minλf(x(k)+λd(k)) 这样修改后的算法称为阻尼牛顿法。
由于阻尼牛顿法含有一维搜索,因此每次迭代目标函数值一般有所下降(绝不会上升)。
解非线性方程的牛顿迭代法及其应用一、本文概述非线性方程是数学领域中的一个重要研究对象,其在实际应用中广泛存在,如物理学、工程学、经济学等领域。
求解非线性方程是一个具有挑战性的问题,因为这类方程往往没有简单的解析解,需要通过数值方法进行求解。
牛顿迭代法作为一种古老而有效的数值求解方法,对于求解非线性方程具有重要的应用价值。
本文旨在介绍牛顿迭代法的基本原理、实现步骤以及在实际问题中的应用。
我们将详细阐述牛顿迭代法的基本思想,包括其历史背景、数学原理以及收敛性分析。
我们将通过具体实例,展示牛顿迭代法的计算步骤和实际操作过程,以便读者能够更好地理解和掌握该方法。
我们将探讨牛顿迭代法在各个领域中的实际应用,包括其在物理学、工程学、经济学等领域中的典型应用案例,以及在实际应用中可能遇到的问题和解决方法。
通过本文的介绍,读者可以深入了解牛顿迭代法的基本原理和应用技巧,掌握其在求解非线性方程中的实际应用方法,为进一步的研究和应用提供有力支持。
二、牛顿迭代法的基本原理牛顿迭代法,又称为牛顿-拉夫森方法,是一种在实数或复数域上近似求解方程的方法。
其基本原理是利用泰勒级数的前几项来寻找方程的根。
如果函数f(x)在x0点的导数f'(x0)不为零,那么函数f(x)在x0点附近可以用一阶泰勒级数来近似表示,即:这就是牛顿迭代法的基本迭代公式。
给定一个初始值x0,我们可以通过不断迭代这个公式来逼近f(x)的根。
每次迭代,我们都用当前的近似值x0来更新x0,即:这个过程一直持续到满足某个停止条件,例如迭代次数达到预设的上限,或者连续两次迭代的结果之间的差小于某个预设的阈值。
牛顿迭代法的收敛速度通常比线性搜索方法快,因为它利用了函数的导数信息。
然而,这种方法也有其局限性。
它要求函数在其迭代点处可导,且导数不为零。
牛顿迭代法可能不收敛,如果初始点选择不当,或者函数有多个根,或者根是重根。
因此,在使用牛顿迭代法时,需要谨慎选择初始点,并对迭代过程进行适当的监控和调整。
《MATLAB 程序设计实践》课程考核1. 编程实现以下科学计算算法,并举一例应用之。
(参考书籍《精通MAT LAB科学计算》,王正林等著,电子工业出版社,2009 年)“牛顿法非线性方程求解”解:弦截法本质是一种割线法,它从两端向中间逐渐逼近方程的根;牛顿法本质上是一种切线法,它从一端向一个方向逼近方程的根,其递推公式为:-=+n n x x 1)()('n n x f x f初始值可以取)('a f 和)('b f 的较大者,这样可以加快收敛速度。
和牛顿法有关的还有简化牛顿法和牛顿下山法。
在MA TLAB 中编程实现的牛顿法的函数为:NewtonRoot 。
功能:用牛顿法求函数在某个区间上的一个零点。
调用格式:root=NewtonRoot )(```eps b a f 其中,f 为函数名; a 为区间左端点; b 为区间右端点 eps 为根的精度;root 为求出的函数零点。
,牛顿法的matlab程序代码如下:function root=NewtonRoot(f,a,b,eps)%牛顿法求函数f在区间[a,b]上的一个零点%函数名:f%区间左端点:a%区间右端点:b%根的精度:eps%求出的函数零点:rootif(nargin==3)eps=1.0e-4;endf1=subs(sym(f),findsym(sym(f)),a);f2=subs(sym(f),findsym(sym(f)),b);if (f1==0)root=a;endif (f2==0)root=b;endif (f1*f2>0)disp('两端点函数值乘积大于0 !');return;elsetol=1;fun=diff(sym(f)); %求导数fa=subs(sym(f),findsym(sym(f)),a);fb=subs(sym(f),findsym(sym(f)),b);dfa=subs(sym(fun),findsym(sym(fun)),a);dfb=subs(sym(fun),findsym(sym(fun)),b);if(dfa>dfb) %初始值取两端点导数较大者root=a-fa/dfa;elseroot=b-fb/dfb;endwhile(tol>eps)r1=root;fx=subs(sym(f),findsym(sym(f)),r1);dfx=subs(sym(fun),findsym(sym(fun)),r1); %求该点的导数值 root=r1-fx/dfx; %迭代的核心公式tol=abs(root-r1);endend例:求方程3x^2-exp(x)=0的一根解:在MATLAB命令窗口输入:>> r=NewtonRoot('3*x^2-exp(x)',3,4)输出结果:X=3.7331流程图:2、编程解决以下科学计算问题1)二自由度可解耦系统的振动模态分析。
一、求根方法原理把非线性函数f(x)=0在x0处展开成泰勒级数取其线性部分,作为非线性方程的近似方程,则有 , 设,则其解为,再把f(x)在x1处展开为泰勒级数,取其线性部分为的近似方程,若,则得,如此继续下去,得到牛顿法的迭代公式:,通过迭代,这个式子必然在的时候收敛。
整个过程如下图:牛顿法收敛很快,而且可求复根,缺点是对重根收敛较慢,要求函数的一阶导数存在。
二、求解步骤1. 选取一个接近函数零点的自变量 x 值作为起始点。
2. 使用如下的迭代公式更新近似解。
3. 如果得出的解满足误差要求,终止迭代,所得的值即视为方根根的近似解。
三、自定的非线性方程使用牛顿迭代法近似求解如下方程在[-1, 1]之间的根:四、源程序代码clear, close allclcf = @(x) cos(x) -x.^3;f_prime = @(x) -sin(x) -3*x.^2;error = 1; %初始化误差变量iter = 0; %初始化迭代次数变量max_iter = 5000; %定义最大允许迭代次数tol = 1e-8; %定义循环终止误差x0 = 0.5; %初始值while error > tol && iter <= max_iterx = x0 - f(x0)/f_prime(x0); %更新x的值error = abs((x-x0)/x0); %计算相对误差iter = iter +1; %更新迭代次数x0 = x; %计算出的x赋值给x0,继续迭代,直到达到误差条件。
end五、上机运行结果截图六、结论1.迭代法是求解非线性方程组的一种很好的方法,它可以反复校验根的近似值,直到得出符合精度的解。
从几何角度上来解释可以解释为两个函数的无限逼近2.我们为了加快迭代的速度,引入了牛顿法,牛顿法的收敛速度很快,但是其收敛性取决于牛顿法的取值。
3.。
科学计算与数学建模实验报告牛顿法求解非线性方程一、引言非线性方程是数学中的一个重要研究内容,其求解方法有很多,其中之一就是牛顿法。
牛顿法是一种迭代方法,通过不断逼近函数的零点来求解非线性方程。
在本实验中,我们将使用牛顿法来求解给定的非线性方程,并验证其有效性。
二、实验方法1.确定问题:给定非线性方程f(x)=0,需要求解方程的根。
2.初始化:选择一个初始解x_0,并给定停止准则,如迭代次数、函数误差等。
3.迭代计算:a)计算函数f(x)在x_i处的导数f'(x_i)。
b)利用牛顿迭代公式进行迭代计算:x_{i+1}=x_i-f(x_i)/f'(x_i)。
c)检查迭代终止条件,若满足条件则停止迭代,否则返回步骤a)继续迭代。
4.输出结果:输出迭代过程中的迭代次数和解x。
三、实验结果我们选择一个较为简单的非线性方程f(x)=x^2-2来进行牛顿法求解。
初始解选取为x_0=1,停止准则为函数误差小于等于0.0001根据上述计算方法,我们进行迭代计算,并记录迭代次数和解x的变化情况。
具体结果如下表所示:迭代次数解x-----------------11.521.416731.414241.4142(收敛)从表中可以看出,当迭代4次时,解x已经收敛于1.4142,符合停止准则,因此我们可以认为此时已经找到了方程的根。
四、实验讨论通过上述实验可以发现,牛顿法是一种有效的求解非线性方程的方法。
它利用了函数在特定点处的导数的信息来逼近函数的零点,从而实现了迭代计算。
同时,牛顿法的收敛速度比较快,迭代次数较少,可以在较短的时间内找到方程的根。
然而,牛顿法也存在一些不足之处。
首先,它对初始解的选择较为敏感,不同的初始解可能导致迭代结果的差异。
其次,牛顿法可能出现发散现象,即迭代过程无法收敛到方程的根。
因此,对于一些复杂的非线性方程,我们需要选择合适的方法来求解。
五、总结通过本次实验,我们了解了牛顿法求解非线性方程的基本过程,并验证了其有效性。