1
我对Matlab的知识非常有限,我试图做一个普通的牛顿Raphson函数,但每次出现错误说没有足够的输入参数。我的代码需要三个输入,f(函数),c0(初始猜测)和n(步数)。这是到目前为止我的代码:通用牛顿方法函数文件Matlab
function [c] = Q3(f,c0,n)
for i=1:n
c(0)=c0;
f=f(x);
fp=diff(f,x);
c(i)=c(i-1)-subs(f,x,c(i-1))/subs(fp,c(i-1));
end
disp(c)
我已经这个函数写在脚本文件
[email protected](x)(sin((pi.*x)/2)+(1/x)-(10.*x));
然后把这到命令窗口并[c] = Q3(G(X),1 ,n)希望它能工作,但显然我的代码需要工作。 感谢
该代码是错误的。 'subs'用于符号替换,如果你想评估函数,你需要做'f(c(i-1))'。除其他事项外......大部分代码都是错误的。 –
可能唯一缺少的是在'f = f(x)'之前声明'x'作为符号,以便正确地将'f'从函数改为符号表达式。 – LutzL
@LutzL是的,但是NR是一种数字方法,所以拥有一个NR符号并不是一个非常聪明的想法。如果你有象征性的表达,你可以用'solve'来解决它。 –