时间方向的迭代matlab,牛顿迭代法的MATLAB实现

c7df0574e723eca7731ac346c3c5179b.png

c9e83b7f47d4391212686e0e9214eec1.png

3d5d1e7437d8e1b44971205644f9cf70.png

牛顿迭代法的MATLAB实现

云 磊

(襄樊学院,湖北 襄阳 441053)

摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大。文章采用了MATLAB 编程

来实现牛顿迭代法,并给出了具体的计算例子。关键词:牛顿迭代法;MATLAB ;方程求根中图分类号:O242.23 文献标识码:A 文章编号:1673-1131(2011)06-0020-2

Abstract: Newton's method is a good way to ?

nd a root for an equation,however, when it comes to a complex equation,the calculation is a hardwork. In this paper, by using matlab, Newton's method is easily realized,and it also gives some demonstration.

Keywords:

Newton's method ; MATLAB ;root a.选定初始值。

在MATLAB中输入如下程序:x=-1:0.01:1;y=x.^2+2*x.*exp(x)+exp(2*x);plot(x,y),grid on 得到下图

由图知,该方程的根在-1~0之间,可设迭代初始值为0。b.求出迭代函数

用MATLAB求出f'(x ): syms x

diff(x ^2+2*x*exp(x)+exp(2*x),x,1)ans =

2*x+2*exp(x)+2*x*exp(x)+2*exp(2*x)故迭代函数为y=x-(x.^2+2*x.*exp(x)+exp(2*x))/(2*x+2*exp(x)+2*x.*exp(x)+2*exp(2*x))

c.用MATLAB实施迭代,程序为:clear; x=0.0;for i=1:20x=x-(x.^2+2*x.*exp(x)+exp(2*x))/(2*x+2*exp(x)+2*x.*exp(x)+2*exp(2*x))

end

可算得迭代数列的前20项为-0.2500,-0.3986,-0.4802, -0.5230,-0.5449,-0.5560,-0.5615,-0.5643,-0.5657,-0.5664,-0.5668,-0.5670,-0.5671,-0.5671,-0.5671,说明迭代是收敛的,

且第五次迭代时误差就不超过10-3

牛顿迭代法是方程求根中的一种重要方法,适用范围广

泛,步骤简单。但如同所有的迭代法一样,它需要大量计算。而MATLAB是一种强大的计算工具,利用MATLAB来实施牛顿法的计算可以大大节省时间。

1 牛顿迭代法原理及收敛性

(1)设已知方程f (x )=0,要求其根,现考虑用迭代法。将

其化为等价方程x =g (x ),令g(x)=x +h (x )f (x ),

h (x )≠0为待定函数。x =g (x )和f (x )=0应有共同的根,设此根为s ,利用条

件g'(x )=0来确定h (x ),有g'(x )=1+h'(x )f (x )+h (x )f'(x )=1+h (x )f'(x )=0,由此知h (x )应该满足,显然取就可

以满足此条件且有h (s )≠0。于是g (x )确定为

,它满足g'(s )=0。

由此得到迭代格式x n+1=

n =0,1,2...这就是著名的牛顿迭代公式。

(2)计算可得

,设x *是f (x )=0的单根,有

f (x*)=0,f'(x*)≠0,则 ,故在x*附近,有

。根据不 。

2 牛顿迭代法的几何解析

设方程f (x )=0的根s ,为求出s ,先估取一个靠近的s 实根x n ,在x n 处作曲线的切线,切线方程为y =f (x n )+f'(x n )(x -x n )。令y =0,可得切线与x轴的交点坐标x n +1=x n -f(x n )/f'(x n ),由图知x n+1比x n 更靠近S 。因为这种几何背景,牛顿法又称“切线法”。

3 用MATLAB 实现牛顿迭代实例

(1)用牛顿迭代法求方程x 2+2xe x +e 2x =0的根。

动点原理知牛顿迭代法收敛。2011 年第 6 期(总第 116 期)

信 息 通 信

INFORMATION & COMMUNICATIONS

2011

(Sum. No 116)

(下转第22页)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牛顿是一种求解非线性方程的常用数值方,可以用于解决各种实际问题。以下是几个利用Matlab实现牛顿解决实际问题的例子: 1. 解决方程组 假设有如下方程组: x^2 + y^2 = 25 x^2 - y^2 = 7 可以将其转化为非线性方程组的形式: f1(x,y) = x^2 + y^2 - 25 = 0 f2(x,y) = x^2 - y^2 - 7 = 0 然后使用牛顿求解,具体的Matlab代码如下: syms x y; f1 = x^2 + y^2 - 25; f2 = x^2 - y^2 - 7; J = jacobian([f1,f2],[x,y]); invJ = inv(J); x0 = [1;1]; tol = 1e-6; maxit = 100; for k = 1:maxit f = [subs(f1,[x,y],x0'), subs(f2,[x,y],x0')]; delta = -invJ*double(f'); x1 = x0 + delta; if norm(x1-x0) < tol break; end x0 = x1; end x1, k 其中,syms x y;定义了x和y为符号变量,f1和f2是方程组的表达式,J是雅可比矩阵,invJ是雅可比矩阵的逆矩阵,x0是初始值,tol是代的精度要求,maxit是最大代次数,k是代次数计数器。 2. 拟合曲线 假设有一组数据点(x,y),要求拟合出一条曲线y=f(x),可以将其转化为非线性方程组的形式: f(x) - y = 0 其中,f(x)是拟合曲线的表达式。然后使用牛顿求解,具体的Matlab代码如下: x = [1,2,3,4,5,6,7]; y = [1.2,1.5,2.1,2.5,2.8,3.6,4.2]; syms a b c; f = a*x.^2 + b*x + c; J = jacobian(f,[a,b,c]); invJ = inv(J); p0 = [0,0,0]; tol = 1e-6; maxit = 100; for k = 1:maxit fval = double(subs(f,[a,b,c],p0') - y'); delta = -invJ*double(fval); p1 = p0 + delta'; if norm(p1-p0) < tol break; end p0 = p1; end p1, k 其中,x和y是数据点的坐标,syms a b c;定义了a、b和c为符号变量,f是拟合曲线的表达式,J是雅可比矩阵,invJ是雅可比矩阵的逆矩阵,p0是初始值,tol是代的精度要求,maxit是最大代次数,k是代次数计数器。 3. 求解微分方程 假设要求解如下微分方程: y'' + y' + y = sin(x), y(0) = 0, y'(0) = 0 可以将其转化为非线性方程组的形式: f1(y,y',x) = y' = z f2(y,z,x) = z' = sin(x) - y - z 然后使用牛顿求解,具体的Matlab代码如下: syms y z x; f1 = z; f2 = sin(x) - y - z; J = jacobian([f1,f2],[y,z]); invJ = inv(J); y0 = 0; z0 = 0; tol = 1e-6; maxit = 100; for k = 1:maxit f = [subs(f1,[y,z,x],[y0,z0,x]), subs(f2,[y,z,x],[y0,z0,x])]; delta = -invJ*double(f'); y1 = y0 + delta(1); z1 = z0 + delta(2); if norm([y1,z1]-[y0,z0]) < tol break; end y0 = y1; z0 = z1; end y1, k 其中,syms y z x;定义了y、z和x为符号变量,f1和f2是微分方程的表达式,J是雅可比矩阵,invJ是雅可比矩阵的逆矩阵,y0和z0是初始值,tol是代的精度要求,maxit是最大代次数,k是代次数计数器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值