我不知道在这里数学,但你只需要一个功能,应该看起来像这样:
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)”,不幸的是错字。 –