matlab 牛顿迭代法

matlab 牛顿迭代法,第1张

format long

xk = 0.5

XK = xk

iter_num = 1

DD = iter_num

exit_flag = 1

while(exit_flag)

xk1 = xk-(xk*exp(xk)-1)/(xk*exp(xk)+exp(xk))

if abs(xk1-xk)<1e-4

exit_flag = 0

end

xk = xk1

XK =[XK xk]

iter_num = iter_num+1

DD = [DD iter_num]

end

[DD XK]

plot(DD,XK,'--+')

两次迭代就满足退出条件了

对于求平方根,变成方程模式为f(x)=x^2-a,即求此方程的实根

下面编写了两个function函数,可以直接调用.

二分法:

function x=sqrt_bisect(a)

f=@(x)x^2-a

if a0

xb=x

elseif f(xa)*f(x)>0

xa=x

else

break

end

end

end

x

牛顿迭代法

function x=sqrt_newton(a)

f=@(x)x^2-a

df=diff(sym('x^2-a'))

if a1e-6

x0=x1

x1=x0-f(x0)/subs(df,x0)

end

end

x=x1

调用格式为:

sqrt_bisect(3)

ans =

1.7321

或者

sqrt_newton(2)

ans =

1.4142


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12034967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存