我不知道在這裏數學,但你只需要一個功能,應該看起來像這樣:
function r = halley(fun,x0,acc)
syms x
fp = diff(fun);
fpp = diff(fp);
x_new = symfun(x - 2*(fun(x))*(fp(x))/2*(fp(x).^2) -(fun(x))*(fpp(x)),x);
xold = x0;
xnew = x_new(xold);
while abs(fun(xold)) < acc && abs(xold-xnew) > acc
tmp = xnew;
xnew = x_new(xold);
xold = tmp;
end
r = xnew;
end
,然後你從腳本與其他功能輸入調用:
acc = 1.0e-8;
x0 = -5;
syms x
fun = symfun(exp(x) -3*x.^2 +1,x);
r = halley(fun,x0,acc)
然而,在這項工作中,它說,該函數的輸入應該是一個功能手柄,像@fun
,所以也許你不應該使用象徵性的數學? 我希望這可以讓事情更清楚,但我不知道這種方法應該如何工作。
來源
2016-08-21 20:55:28
EBH
我真的不明白什麼叫做如何。如果只有'x_new',返回值'f','fp'和'fpp'是什麼意思?如果你的功能是「有趣」,那麼它就不是「有趣(x)」而是? –
'f','fp'和'fpp'是符號形式的第一個函數的輸出。 'x_new'是第二個函數的輸出。是的意思是「有趣(x)」,不幸的是錯字。 –