非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较
- 格式:doc
- 大小:222.47 KB
- 文档页数:9
非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较申林坚(南昌航空大学 测试与光电工程学院 江西 南昌 330063)摘要:本文针对一个具体的非线性方程032=-x e x 进行研究,首先作出了了函数xe x xf -=23)(的图像,大体判定其零点(即方程解)在(3,4)区间内, 接着用牛顿迭代法和斯特芬森迭代法进行求解分析,牛顿法的迭代公式为)()(1k k k k x f x f x x '-=+, 斯特芬森迭代法公式为),(),(,2)(21k k k k kk k k k k k y z x y x y z x y x x ϕϕ==+---=+记录两种方法求得指定精度解所需迭代次数及所需计算时间,并对其优缺点 进行了分析。
关键词:非线性方程;牛顿迭代法;斯特芬森迭代法引言非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化得到的,为得到更符合实际的解答,往往需要直接研究非线性模型,从而产生非线性科学,它是21世纪科学技术发展的重要支柱。
本论文通过对特定非线性方程032=-x e x 进行求解,介绍了两种常用的迭代法牛顿迭代法和斯特芬森迭代法,详尽阐述了其各自的数学几何原理及优缺点比较,从而更深入的理解非线性方程的迭代法求解。
正文一.作出)(x f 的图像,确定隔根区间 在Matlab 中输入以下指令并回车:x=(-10:0.001:10); y=3*x.^2-exp(x); plot(x,y);grid on ;-10-8-6-4-202468104图1得到图1所示)(x f 的图像,易知,当10-<x 及10>x 时,)(x f 无零点 将y 轴方向放大,输入命令axis([-10 10 -2 2]),得到图2-10-8-6-4-20246810-2-1.5-1-0.500.511.52图2可知函数有三个零点,隔根区间为(-2,0),(0,2),(2,4) 将x 轴方向放大,输入命令axis([-2 4 -2 2]),得到图3-2-101234-2-1.5-1-0.500.511.52图3可将隔根区间进一步缩小为(-1,0),(0,1),(3,4)二.牛顿迭代法求区间(3,4)中的根对于方程0)(=x f ,如果)(x f 是线性函数,则它的求根是容易的。
求解非线性方程的三种新的迭代法非线性方程是指未知数的高次幂或三角函数、指数函数等构成的方程。
非线性方程的求解是数值计算中的一个重要问题,常用的方法有迭代法、试位法、牛顿法等。
下面介绍三种新的迭代法。
1. 牛顿法的改进牛顿法是一种求解非线性方程的常用方法,通过选择合适的初始值,可以得到方程的一个根。
在某些情况下,牛顿法的收敛速度较慢,甚至可能发散。
为了克服这个问题,有人提出了牛顿法的改进方法。
改进的思想是在每一步的迭代中引入一个修正因子,使得每一步的迭代都能够加速收敛。
这个修正因子可以选择为方程导数的逆矩阵,或者通过数值计算方法来估计。
通过引入修正因子,可以使得牛顿法的收敛速度更快,提高求解非线性方程的效率。
2. 弦截法弦截法是一种求解非线性方程的迭代法,它可以看作是牛顿法的一种变形。
在牛顿法中,通过选择切线与x轴的交点作为新的逼近解,而在弦截法中,通过选择切线与两个初始逼近解的连线的交点作为新的逼近解。
弦截法的迭代公式为:Xn+1 = Xn - f(Xn) * (Xn - Xn-1) / (f(Xn) - f(Xn-1))在每一步迭代中,选择两个初始逼近解Xn和Xn-1,代入上述迭代公式即可求得新的逼近解Xn+1。
通过不断迭代,可以逐渐接近方程的根。
3. 牛顿-拉夫逊法牛顿-拉夫逊法是一种变步长的牛顿法,它的主要思想是通过动态调整迭代步长的大小来提高求解非线性方程的效率。
在牛顿-拉夫逊法中,首先根据初始解得到牛顿法的逼近解,然后根据逼近解和方程的误差,动态调整迭代步长。
如果逼近解接近方程的根,将步长增加,以加快收敛速度;如果逼近解偏离方程的根,将步长减小,以避免迭代发散。
λ为步长调整因子,可以根据迭代过程中的收敛情况进行动态调整。
牛顿法的改进、弦截法和牛顿-拉夫逊法是三种求解非线性方程的新的迭代法。
这些方法通过引入修正因子、变化逼近解和动态调整步长等方法,可以提高求解非线性方程的效率和收敛速度。
非线性方程组求解方法的比较研究在数学中,非线性方程组是指其中一个或多个方程不满足线性关系的方程组。
尽管有解析解的一些特殊情况,但大多数非线性方程组需要使用数值方法来计算近似解。
本文将比较介绍几种非线性方程组求解方法,包括牛顿法,拟牛顿法,全局优化方法和粒子群算法。
1. 牛顿法牛顿法是求解非线性方程组最常用的迭代方法之一。
它基于局部线性逼近,每次迭代使用当前解的一阶导数信息来计算下一次迭代的更新方向。
令F(x)表示非线性方程组,J(x)=∇F(x)表示F(x)的雅可比矩阵。
给定一个当前近似解x_k,牛顿法的更新方程可以表示为:x_(k+1) = x_k - J(x_k)^(-1)F(x_k)其中,J(x_k)^(-1)是J(x_k)的逆矩阵。
如果J(x_k)是奇异的,则牛顿法不适用。
与其他迭代方法相比,牛顿法通常收敛更快,因为它基于二次局部逼近,而其他方法通常只适用于一次局部逼近。
但是,牛顿法要求计算和存储雅可比矩阵的逆,这可能是一个瓶颈。
2. 拟牛顿法拟牛顿法是一类不需要精确计算和存储雅可比矩阵逆的牛顿法。
它使用最小化当前近似解和实际解之间差异的信息来逼近Hessian矩阵的逆。
拟牛顿法的基本思想是建立一个称为拟Hessian矩阵的对称正定矩阵B_k,B_k的逆用于计算更新方向。
拟Hessian矩阵通过对不同x_k和x_(k+1)的F(x_k)和F(x_(k+1))差的比较来构建。
在每个迭代步骤k,拟牛顿法将F(x_k)和F(x_(k+1))的差异的值的与相对应的x_k和x_(k+1) 的差异相关联的拟Hessian方程式称为:B_k(x_(k+1) - x_k) = ∇F(x_(k+1))- ∇F(x_k)其中∇F(x) 是F(x)的梯度。
这个拟Hessian方程的解,将给出优化的下降方向。
拟牛顿法不需要计算和存储雅可比矩阵的逆,但它需要存储一个两倍于原始变量数的矩阵B_k。
3. 全局优化方法全局优化方法是一类寻找非线性方程组所有可能解的算法。
非线性方程求解方法的研究与比较分析非线性方程是数学中一类重要的方程,它们的求解对很多实际问题具有重要的意义。
然而,非线性方程由于其非线性特性,使得其求解更加困难和复杂。
本文旨在研究和比较非线性方程的求解方法,通过对不同求解方法的分析和比较,来评估它们的优缺点和适用范围。
首先,我们介绍一些常用的非线性方程求解方法。
目前常用的求解方法主要包括迭代法、牛顿法、二分法等。
迭代法是一种比较简单的求解非线性方程的方法。
其基本思想是通过不断迭代逼近方程的解。
具体的迭代公式可以选择不同的形式,如固定点迭代法、牛顿迭代法等。
迭代法的优点是简单易懂,但是其收敛速度较慢,而且在某些情况下可能无法收敛到解。
牛顿法是一种较为常用的非线性方程求解方法。
它利用函数的一阶导数和二阶导数信息,通过不断的迭代逼近方程的解。
牛顿法的优点是收敛速度快,但是在某些情况下可能会出现迭代发散的情况。
二分法是一种比较简单但是有效的非线性方程求解方法。
其基本思想是通过不断地缩小解的搜索范围,直到找到满足方程的解。
二分法的优点是简单易懂,而且收敛性和精度较好,但是其收敛速度相对较慢。
在对以上几种方法进行比较分析之前,我们需要明确一些评价指标。
首先是收敛性,即方法是否能够收敛到解。
其次是收敛速度,即方法迭代到解所需的时间。
还有精度,即方法得到的解与真实解之间的误差。
最后是稳定性,即方法对初始值的选择是否敏感。
通过对以上几种方法的比较分析,我们可以得出以下结论:首先,迭代法是一种简单但是不稳定的求解方法。
其收敛性和精度较差,而且对初始值的选择较为敏感。
因此,在实际应用中,迭代法通常只适用于简单的非线性方程求解。
其次,牛顿法是一种较为常用的求解方法。
它具有收敛速度快、精度高的优点,但是在某些情况下可能会出现迭代发散的情况。
此外,牛顿法对函数的一阶导数和二阶导数的计算要求较高,所以在某些情况下可能不适用。
最后,二分法是一种简单而有效的求解方法。
它具有收敛性好、精度高的优点,但是其收敛速度相对较慢。
《数值计算方法》实验报告实验名称:实验1 非线性方程的简单迭代法和Steffensen 迭代法 实验题目:分别用简单迭代法和Steffensen 迭代法求方程 010423=-+x x在 [1, 2] 的一个实根.实验目的:理解并掌握简单迭代法和Steffensen 迭代法 基础理论:简单迭代法和Steffensen 迭代法1).简单迭代法的原理:将一元非线性方程:0)(=x f 改写成等价方程:)(x x ρ= ,对此,从某个初始值x0开始,对应式)(x x ρ= 构成迭代公式 ,...1,0),(1==+k x x k k ρ ,这样就可以确定序列 {}k x (k=0,1,2…)。
如果 {}k x 有极限*lim x x k k =∞→ ,由式 ,...1,0),(1==+k x x k k ρ 两边取极限可得 )(**x x ρ= ,可知 *x 为方程0)(=x f 的近似解。
2)Steffensen 迭代法的原理:通过把改进的Aitken 方法应用于根据不动点迭代所得到的线性收敛序列,将收敛速度加速到二阶。
()⎪⎪⎪⎩⎪⎪⎪⎨⎧+---===+k k k k k k k k k k k x y z x y x x y z x y 2)()(21ρρ[]x x x x x x x +---=)(2)(()()(2ρρρρψ实验环境:操作系统:Windows 7;实验平台:Turbo C++实验过程:写出算法→编写程序→调试运行程序→计算结果1)简单迭代法的算法:Input:初始近似值x0,精度要求del,最大迭代次数NOutput:近似解x 或失败信息1. n ←12. While n≤N do;3. x ←f(x0);4. if | x-x0|<del then5. | return x;6. end7. n←n+1;8. X0←x;9. End10. return False;// 超出最大迭代次数2)Steffensen迭代法的算法:Input : 区间端点a,b;精度要求del;最大迭代次数N Output:近似解或失败信息1. n←12. while n ≤N do;3. y←f(x0);4.z←f(y);5.x←x0-()202xyzxy+--;6.If |x-x0|<del then;7.| return x;8.end9.n←n+1;10.x0←x;11.end12.return False;实验结果a,用简单迭代法计算的结果结果约为1.365230b.用Steffensen迭代法计算的结果:近似解为:1.365230给出程序:1,简单迭代法的程序(C++)#include "stdio.h"#include "math.h"#define phi(x) 0.5*sqrt(10-x*x*x)void main(){int n=1,N;float x,x0,del;printf("x0="); scanf("%f",&x0); printf("\ndel=:"); scanf("%f",&del); printf("\nN="); scanf("%d",&N);printf("\nk x(k)");printf("\n %2d %f ",0,x0);while (n<N){ x=phi(x0);if(fabs(x-x0)<del){ printf("\n \n=近似解= %f \n",x);return;}printf("\n %2d %f ",n,x0);n=n+1; x0=x;}printf("\n \n%d次迭代后未达到精度要求.\n",N); }2,Steffensen迭代法的程序(C++)#include "stdio.h"#include "math.h"#define phi(x) 0.5*sqrt(10-x*x*x);void main(){int n=1,N;float x,x0,del,y,z,a,b;printf("x0="); scanf("%f",&x0);printf("\ndel=:"); scanf("%f",&del);printf("\na="); scanf("%f",&a);printf("\nb="); scanf("%f",&b);printf("\nN="); scanf("%d",&N);printf("\nk x(k)");printf("\n %2d %f ",0,x0);while (n<N){ y=phi(x0);z=phi(y);x=x0-(y-x0)*(y-x0)/(z-2*y+x0);if(fabs(x-x0)<del){ printf("\n \n=近似解= %f \n",x);return;}printf("\n %2d %f ",n,x0);n=n+1; x0=x;}printf("\n \n%d次迭代后未达到精度要求.\n",N);}结果分析:1.用简单迭代法和Steffensen迭代法都能求出非线性方程的近似解,且用简单迭代法和Steffensen迭代法求出的近似解基本一样。
非线性方程组的求解方法及其应用非线性方程组是数学中一类非常重要的问题,其中每个方程都不是线性的。
与线性方程组不同,非线性方程组的求解通常需要借助于数值方法。
本文将讨论一些常见的非线性方程组求解方法,并介绍它们在实际应用中的一些应用。
1. 牛顿法牛顿法是一种非常常见的非线性方程组求解方法。
该方法基于牛顿迭代法原理,将非线性方程组转化为一系列的线性问题。
牛顿法的基本思想是:通过不断地使用一阶导数和二阶导数的信息来逼近方程组的解。
具体地说,在每一轮迭代中,求解一个方程组:$$F(x^{k})+J(x^{k})\Delta x^{k} =0$$其中$F(x)$表示非线性方程组,$x^k$表示第$k$轮迭代的解,$J(x^k)$表示$F(x)$在$x^k$处的雅可比矩阵,$\Delta x^k$表示下降方向,满足$\|\Delta x^k\|\rightarrow 0$。
值得注意的是,牛顿法在每轮迭代中都需要求解一次雅可比矩阵,这需要大量的计算资源。
因此,在实际应用中,牛顿法通常只适用于相对较小的方程组。
2. 信赖域方法相比于牛顿法,信赖域方法更具有通用性。
信赖域方法的基本思想是:在每轮迭代中,通过构造二次模型来逼近目标函数,并在一个信赖域内搜索下降方向。
具体地说,我们在每轮迭代中将非线性方程组$F(x)$在$x^k$处转化为二次模型:$$m_k(\Delta x)=F(x^k)+\nabla F(x^k)^\top \Deltax+\frac{1}{2}\Delta x^\top B_k\Delta x$$其中,$\nabla F(x^k)$是$F(x)$在$x^k$处的梯度,$B_k$是二阶导数信息。
在这里我们假设$B_k$为正定矩阵。
显然,我们希望在$m_k(\Delta x)$的取值范围内找到一个适当的$\Delta x$,使得$m_k(\Delta x)$最小。
因此,我们需要设定一个信赖域半径$\Delta_k$,并在$B_k$所定义的椭圆范围内查找最优的$\Delta x$。
求解非线性方程的三种新的迭代法随着科技的发展,求解非线性方程逐渐成为了计算数学领域中的热门问题之一。
在日常生活中,我们可能经常会遇到许多非线性方程,例如:x^2 - 3x + 1 = 0、e^x - x - 1 = 0等。
那么,在解决这些方程时,我们通常会采用哪些迭代法呢?下面,我将介绍三种新的迭代法,它们分别是:Halley法、Chebyshev法和Brouncker法。
一、Halley法Halley法是一种高阶迭代法,它能够同时逼近函数的根和导数的值,因此在求解非线性方程时非常有效。
该方法的基本思想是利用牛顿法的基础上,通过引入更高阶的泰勒级数,以加快收敛的速度。
具体来说,假设我们要求解方程f(x) = 0的解,那么可以先利用泰勒级数表示出f(x)的近似:f(x) ≈ f(x0) + f'(x0)(x - x0) + f''(x0)/2(x - x0)^2然后,在此式的基础上,我们可以用以下公式来计算出下一个近似解x1:在实际使用中,如果我们要求解的非线性方程只有单个根,那么该法一般很快就能收敛到准确解。
二、Chebyshev法Chebyshev法(切比雪夫法)是一种基于最小化误差的迭代法,它不需要计算导数,且具有高阶迭代、迭代次数少的优点。
该方法的基本思想是:我们可以将待求解方程转化为一个无穷大的级数,然后利用级数的递推公式来迭代求解。
具体来说,假设我们要求解方程f(x) = 0的解,那么我们可以将其转化为如下形式:x = g(x) = a0 + a1x + a2x^2 + ⋯其中,系数a0、a1、a2等可以通过传统的求根方法(如牛顿法、二分法等)来确定。
然后,我们可以利用以下递推公式来迭代求解:xn+1 = (g(xn)+xn)/2在实际使用中,如果我们要求解的非线性方程满足某些条件(如单峰性、单调性等),那么该法的效果将更加显著。
三、Brouncker法Brouncker法是一种较为简单的迭代法,它基于有理分式逼近的思想,能够高效地求解非线性方程的单根。
牛顿迭代法与其他迭代法迭代法是一种常见的数值计算方法,用于求解方程的近似解。
其中,牛顿迭代法是一种较为常用且有效的迭代法。
本文将对牛顿迭代法与其他迭代法进行比较和探讨。
一、牛顿迭代法的原理和步骤牛顿迭代法是由英国物理学家牛顿在17世纪提出的一种寻找方程近似解的方法。
其基本思想是通过不断逼近函数的零点,找到方程的根。
牛顿迭代法的步骤如下:1.选择一个初始值x0;2.根据当前的近似解x0,利用函数的导数计算切线的斜率;3.通过切线与x轴的交点得到下一个近似解x1;4.重复步骤2和步骤3,直到满足精度要求为止。
牛顿迭代法的优点在于它通常具有较快的收敛速度,尤其在接近根的地方。
然而,牛顿迭代法可能会收敛到局部极值点,而不是全局极值点,这是其存在的一个不足之处。
二、牛顿迭代法与其他迭代法的比较除了牛顿迭代法,还存在着其他常用的迭代法,比如二分法和割线法。
下面将对牛顿迭代法与这两种方法进行比较。
1. 牛顿迭代法 vs. 二分法二分法是一种简单而广泛使用的迭代法。
它通过不断将搜索区间二分来逐步逼近方程的根。
二分法的步骤如下:- 选择一个初始的搜索区间[a, b],使得方程的根位于[a, b]之间;- 计算搜索区间的中点c=(a+b)/2;- 比较函数在c处的取值与零的关系来确定下一步搜索的区间,即更新[a, b]为[a, c]或者[c, b];- 重复上述步骤,直到满足精度要求。
与牛顿迭代法相比,二分法的收敛速度较慢。
然而,二分法具有简单易懂、稳定可靠的特点,在某些情况下仍然被广泛使用。
2. 牛顿迭代法 vs. 割线法割线法是一种类似于牛顿迭代法的迭代法,它通过直线的割线逼近方程的根。
割线法的步骤如下:- 选择两个初始值x0和x1,使得x0和x1分别位于方程的根的两侧;- 计算通过(x0, f(x0))和(x1, f(x1))两点的直线的方程;- 求解该直线与x轴的交点得到下一个近似解x2;- 重复上述步骤,直到满足精度要求。
非线性方程求解算法比较在数学和计算机科学领域中,非线性方程是一种无法简单地通过代数方法求解的方程。
因此,研究和开发高效的非线性方程求解算法是至关重要的。
本文将比较几种常见的非线性方程求解算法,包括牛顿迭代法、割线法和二分法。
通过对比它们的优缺点和适用范围,可以帮助人们选择最适合的算法来解决特定的非线性方程问题。
一、牛顿迭代法牛顿迭代法是一种常用的非线性方程求解算法。
它基于泰勒级数展开,使用函数的导数信息来逼近方程的根。
具体步骤如下:1. 选择初始近似值$x_0$。
2. 计算函数$f(x_0)$和导数$f'(x_0)$。
3. 根据牛顿迭代公式$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}$,计算下一个近似解$x_{n+1}$。
4. 重复步骤2和步骤3,直到达到预设的收敛条件。
牛顿迭代法的收敛速度很快,通常二次收敛。
然而,它对于初始值的选择非常敏感,可能会陷入局部极值点,导致找到错误的根。
因此,在使用牛顿迭代法时,需要根据具体问题选择合适的初始近似值。
二、割线法割线法是另一种常见的非线性方程求解算法。
它是对牛顿迭代法的改进,使用两个近似解来逼近方程的根。
具体步骤如下:1. 选择初始近似值$x_0$和$x_1$。
2. 计算函数$f(x_0)$和$f(x_1)$。
3. 根据割线公式$x_{n+1}=x_n-\frac{f(x_n)(x_n-x_{n-1})}{f(x_n)-f(x_{n-1})}$,计算下一个近似解$x_{n+1}$。
4. 重复步骤2和步骤3,直到达到预设的收敛条件。
与牛顿迭代法相比,割线法不需要计算导数,因此更加灵活。
然而,割线法的收敛速度比牛顿迭代法慢,通常是超线性收敛。
与牛顿迭代法一样,割线法也对初始近似值的选择敏感。
三、二分法二分法是一种简单直观的非线性方程求解算法。
它利用函数在根附近的特性,通过不断缩小区间范围来逼近方程的根。
具体步骤如下:1. 选择初始区间$[a,b]$,其中$f(a)$和$f(b)$异号。
非线性方程的求解方法一、引言在数学领域中,非线性方程是指未知量与其对自身的各次幂、指数以及任意函数相乘或相加得到的方程。
求解非线性方程是数学中一个重要而又具有挑战性的问题。
本文将介绍几种常见的非线性方程求解方法。
二、牛顿迭代法牛顿迭代法是一种经典的非线性方程求解方法,它利用方程的切线逼近根的位置。
设f(x)为非线性方程,在初始点x0附近取切线方程y=f'(x0)(x-x0)+f(x0),令切线方程的值为0,则可得到切线方程的解为x1=x0-f(x0)/f'(x0)。
重复这个过程直到满足精确度要求或迭代次数达到指定次数。
三、二分法二分法是一种简单而又直观的非线性方程求解方法。
它利用了连续函数的中间值定理,即若f(a)和f(b)异号,则方程f(x)=0在[a, b]之间必有根。
根据中值定理,我们可以取中点c=(a+b)/2,然后比较f(a)和f(c)的符号,若同号,则根必然在右半区间,否则在左半区间。
重复这个过程直到满足精确度要求或迭代次数达到指定次数。
四、割线法割线法是一种基于切线逼近的非线性方程求解方法,它与牛顿迭代法相似。
由于牛顿迭代法需要求解导数,而割线法不需要。
设f(x)为非线性方程,在两个初始点x0和x1附近取一条直线,该直线通过点(x0,f(x0))和(x1, f(x1)),它的方程为y=f(x0)+(f(x1)-f(x0))/(x1-x0)*(x-x0),令直线方程的值为0,则可得到直线方程的解为x2 = x1 - (f(x1)*(x1-x0))/(f(x1)-f(x0))重复这个过程直到满足精确度要求或迭代次数达到指定次数。
五、试位法试位法是一种迭代逼近的非线性方程求解方法。
它利用了函数值的变化率来逼近根的位置。
设f(x)为非线性方程,选取两个初始点x0和x1,然后计算f(x0)和f(x1)的乘积,如果结果为正,则根位于另一侧,否则根位于另一侧。
然后再选取一个新的点作为下一个迭代点,直到满足精确度要求或迭代次数达到指定次数。
非线性方程牛顿迭代法与斯特芬森迭代法的研究与比较申林坚(南昌航空大学 测试与光电工程学院 江西 南昌 330063)摘要:本文针对一个具体的非线性方程032=-x e x 进行研究,首先作出了了函数xe x xf -=23)(的图像,大体判定其零点(即方程解)在(3,4)区间内,接着用牛顿迭代法和斯特芬森迭代法进行求解分析,牛顿法的迭代公式为)()(1k k k k x f x f x x '-=+, 斯特芬森迭代法公式为),(),(,2)(21k k k k kk k k k k k y z x y x y z x y x x ϕϕ==+---=+记录两种方法求得指定精度解所需迭代次数及所需计算时间,并对其优缺点 进行了分析。
关键词:非线性方程;牛顿迭代法;斯特芬森迭代法引言非线性是实际问题中经常出现的,并且在科学与工程计算中的地位越来越重要,很多我们熟悉的线性模型都是在一定条件下由非线性问题简化得到的,为得到 更符合实际的解答,往往需要直接研究非线性模型,从而产生非线性科学,它是21世纪科学技术发展的重要支柱。
本论文通过对特定非线性方程032=-x e x 进行求解,介绍了两种常用的迭代法牛顿迭代法和斯特芬森迭代法,详尽阐述了其各自的数学几何原理及优缺点比较,从而更深入的理解非线性方程的迭代法求解。
正文一.作出)(x f 的图像,确定隔根区间 在Matlab 中输入以下指令并回车:x=(-10:0.001:10); y=3*x.^2-exp(x); plot(x,y);grid on ;-10-8-6-4-202468104图1得到图1所示)(x f 的图像,易知,当10-<x 及10>x 时,)(x f 无零点 将y 轴方向放大,输入命令axis([-10 10 -2 2]),得到图2-10-8-6-4-20246810-2-1.5-1-0.500.511.52图2可知函数有三个零点,隔根区间为(-2,0),(0,2),(2,4) 将x 轴方向放大,输入命令axis([-2 4 -2 2]),得到图3-2-101234-2-1.5-1-0.500.511.52图3可将隔根区间进一步缩小为(-1,0),(0,1),(3,4)二.牛顿迭代法求区间(3,4)中的根对于方程0)(=x f ,如果)(x f 是线性函数,则它的求根是容易的。
牛顿法实质上是一种线性化方法,其基本思想是将非线性方程0)(=x f 逐步归结为某种非线性方程来求解。
设已知方程0)(=x f 有近似根k x (假定0)(≠'k x f ),将函数在点k x 展开,有))(()()(k k k x x x f x f x f -'+≈,于是方程0)(=x f 可近似表示为0))(()(=-'+k k k x x x f x f .这是个线性方程,记其根为1+k x ,则1+k x 的计算公式为,...,1,0,)()(1='-=+k x f x f x x k k k k 这就是牛顿法。
牛顿法有明显的几何解释。
方程0)(=x f 的根*x 可解释为曲线)(x f y =与x 轴的交点的横坐标。
设k x 是根*x 的某个近似值,过曲线)(x f y =上横坐标为k x 的点k P 引切线,并将该切线与x 轴的交点的横坐标1+k x 作为*x 的新的近似值。
注意到切线方程为))(()(k k k x x x f x f y -'+=这样求得的值1+k x 必满足0))(()(=-'+k k k x x x f x f 。
由于这种几何背景,牛顿法亦称切线法。
下面列出牛顿法的计算步骤:步骤1 准备 选定初始近似值0x ,计算)(00x f f =,)(00x f f '=' 步骤2 迭代 按公式0001f f x x '-= 迭代一次,得到新的近似值1x ,计算)(),(1111x f f x f f '='=步骤3 控制 如果1x 满足哦1εδ<或21ε<f ,则终止迭代,以1x 作为所求的根;否则转步骤4.此处21,εε是允许误差,而时,当时当C x x x x C x x x ≥-<-=111101,,,δ 其中C 是取绝对误差或相对误差的控制常数,一般可取C=1.步骤 4 修改 如果迭代次数达到预先指定的次数N ,或者01='f ,则方法失败;否则以),,(111f f x '代替),,(000f f x '转步骤2继续迭代Matlab 计算程序如下,取初始迭代值0x =3:i=0; y=3; z=1;while (i<=100&&z>=10^(-8)) x=y;y=x-(3*x^2-exp(x))/(6*x-exp(x)); if abs(y)<1 z=abs(y-x); elsez=abs((y-x)/y); end i=i+1; endformat long ; disp(y); disp(i);输出结果为y= 3.733079028632816,i=9可知,使用牛顿迭代法,初值为3时,需迭代9次可使eps<10^-8,近似解为3.73307903三.斯特芬森迭代法求区间(3,4)中的根埃特金方法不管原序列{k x }是怎样产生的,对{k x }进行加速计算,得到序列{k x }。
如果把埃特金加速技巧与不动点迭代结合,可得到如下的迭代法:,...1,0,),(),(2)(12=-===+--+k x x y z x y k k k k k x y z x y k k k k k k ϕϕ称为斯特芬森迭代法。
它可以这样理解,我们要求)(x x ϕ=的根*x ,令x x x -=)()(ϕε,0)()(***=-=x x x ϕε,已知*x 的近似值k x 及k y ,其误差分别为kk k k k kk k k k y z y y y x y x x x -=-=-=-=)()()()(ϕεϕε把误差“外推到零”,即过())(,k k x x ε及())(,k k y y ε两点做线性插值函数,它与x 轴交点就是1+k x ,即方程0)()()()(=---+k kk k k k x x x y x y x εεε的解122)()()()()(+=+---=---=k kk k k k k k k k k k k x x y z x y x x y x y x x x εεε斯特芬森迭代法的另一种表达方式如下:,...,1,0),(1==+k x x k k ψ其中()[].)(2))(()(2xx x x x x x +---=ϕϕϕϕψ实验表明,即便用不动点迭代法不收敛,用斯特芬森迭代法仍可能收敛。
1.取)3ln()(2x x =ϕ,迭代初值为3进行迭代,Matlab 程序如下:i=0; y=3; z=1;while (i<=1000&&z>=10^(-8)) x=y;y1=log(3*x^2);y=x-(y1-x)^2/(log(3*y1^2)-2*y1+x); if abs(y)<1 z=abs(y-x); elsez=abs((y-x)/y); end i=i+1; endformat long ; disp(y); disp(i);输出结果为y= 3.733079028632815,i=4;可知,使用斯特芬森迭代法,取不动点函数为)3ln()(2x x =ϕ,初值为3时,需迭代4次可使eps<10^-8,近似解为3.73307903,与牛顿迭代法结果吻合。
2.取x e x x x +-=23)(ϕ,迭代初值为3进行迭代,Matlab 程序如下:i=0; y=3; z=1;while (i<=1000&&z>=10^(-8)) x=y;y1=3*x^2-exp(x)+x;y=x-(y1-x)^2/(3*y1^2-exp(y1)+y1-2*y1+x); if abs(y)<1 z=abs(y-x); elsez=abs((y-x)/y); end i=i+1; endformat long ; disp(y); disp(i);输出结果为y= 3.733079028632814,i=147;可知,使用斯特芬森迭代法,取不动点函数为x e x x x+-=23)(ϕ,初值为3时,需迭代147次可使eps<10^-8,近似解为3.733079033.取3)(xe x =ϕ,迭代初值为3进行迭代,Matlab 程序如下:i=0; y=3; z=1;while (i<=1000&&z>=10^(-8)) x=y;y1=sqrt(exp(x)/3);y=x-(y1-x)^2/(sqrt(exp(y1)/3)-2*y1+x); if abs(y)<1 z=abs(y-x); elsez=abs((y-x)/y); end i=i+1; endformat long ; disp(y); disp(i);输出结果为y= 3.733079028632815,i=10;可知,使用斯特芬森迭代法,取不动点函数为3)(xe x =ϕ,初值为3时,需迭代10次可使eps<10^-8,近似解为3.73307903由以上三种不同迭代函数可知,迭代函数不同,斯特芬森迭代法的迭代次数不同。
综合比较牛顿法的迭代函数固定,收敛速度较快,但求)(x f '可能比较繁琐斯特芬森迭代法收敛速度快,但要选择合适的迭代函数,因次如何构造一个合适的迭代函数成为关键。
参考文献[1]蔡旭晖 刘卫国 蔡立燕 MATLAB 基础与应用教程 北京:人民邮电出版社 2009 [2]李庆扬 王能超 易大义 数值分析(第5版) 北京:清华大学出版社 2008[3]高成 赖志国 Matlab 图像处理与应用(第2版) 北京:国防工业出版社 2007The research and comparison of Newton's iterative method andSteffen Sen iteration method for nonlinear equationShen Linjian(Nanchang Institute of test and opto electronic engineering, Jiangxi University ofAeronautics and Astronautics, Nanchang 330063)Abstract : In this paper, a specific nonlinear equation is studied, firstly, the function of the image, generally determine its zero (the equation solution) in the (3,4) interval, followed by Newton iterative method and Steffen Sen iteration method for analysis, Newton iterative formula for, Steffen Sen iterative formula for the record of the two methods to obtain the specified accuracy of the required number of iterations and the required calculation time, and its advantages and disadvantages are analyzed.Key words : nonlinear equation; Newton iterative method; Steffen Sen iteration method个人心得体会首先,我觉得课堂教学条件比较差,那么大的一个教室坐满了人,不能保证每个学生能够听清,看清每一个知识点。