[問題]請問Matlab的不同版本算拋物線法
想請問利用MATLAB算拋物線法時
function [x,minf] = minPWX(f,a,b,eps)
format long;
if nargin == 3
eps = 1.0e-6;
end
t0 = (a+b)/2;
k = 0;
tol = 1;
while tol>eps
fa = subs(f,findsym(f),a);
fb = subs(f,findsym(f),b);
ft0 = subs(f,findsym(f),t0);
tu = fa*(b^2 - t0^2)+fb*(t0^2 - a^2)+ft0*(a^2 - b^2);
td = fa*(b - t0)+fb*(t0 - a)+ft0*(a - b);
t1 = tu/2/td;
ft1 = subs(f,findsym(f),t1);
tol = abs(t1 - t0);
if ft1 <= ft0
if t1<= t0
b = t0;
t0 = t1;
else
a = t0;
t0 = t1;
end
k = k+1;
else
if t1<= t0
a = t1;
else
b = t1;
end
k = k+1;
end
end
x = t1;
minf = subs(f,findsym(f),x);
format short;
將以上程式碼儲存成minPWX的m file
來計算f=t^2-log(t)-5
區間為[0.5,4]
算完的結果發現
當使用matlab 2010版本時可得到0.7071的結果
但當使用matlab 2013時 程式會發散 得不到結果
對於版本對影響結果的差異不甚了解
想請問版上的高手了
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.57.49
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章