matlab分半方法,急~~

matlab分半方法,急~~,第1张

function root=HalfInterval(f,a,b,eps)

if(nargin==3)

eps=1.0e-4

end

f1=subs(sym(f),findsym(sym(f)),a)

f2=subs(sym(f),findsym(sym(f)),b)

if(f1==0)

root=a

end

if(f2==0)

root=b

end

if(f1*f2>0)

disp('两端点函数值乘积大于0!')

return

else

root=FindRoots(f,a,b,eps)

end

function r=FindRoots(f,a,b,eps)

f_1=subs(sym(f),findsym(sym(f)),a)

f_2=subs(sym(f),findsym(sym(f)),b)

mf=subs(sym(f),findsym(sym(f)),(a+b)/2)

if(f_1*mf>0)

t=(a+b)/首升粗2

r=FindRoots(f,t,b,eps)

else

if(f_1*mf==0)

r=(a+b)/2

else

if(abs(b-a)<=eps)

r=(b+3*a)/4

else

s=(a+b)/2

r=FindRoots(f,a,s,eps)

end

end

end

这个程序是笑颤二分法者镇的,

matlab只支持离散数字,但是明神不支持连续的,可以直接表示为矩阵,参陵猛考如下:尺槐桥

x=[0.5 3.5 4.510.5 6.5 7.5]

low=x(1,:)

up=x(2,:)

matlab的区间是不能写在迅羡一起的,要用&或|将两个区间合为一个,所以把你的代码改为下亩如拍面的即可:

if 0.52<t&t<0.555

n=3,T_0=t/橡丛(2.16*n)

elseif 0.555<t&t<0.60

n=4,T_0=t/(2.16*n)

elseif 0.60<t&t<0.635

n=5,T_0=t/(2.16*n)

else disp('系统阶次大于5')

end

你可以试试,应该没啥问题了。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存