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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)