【发布时间】:2017-03-10 03:46:09
【问题描述】:
我对 Matlab 的了解非常有限,我正在尝试制作一个通用的 Newton Raphson 函数,但每次都会出现错误,提示输入参数不足。我的代码需要三个输入,f(函数)、c0(初始猜测)和 n(步数)。到目前为止,这是我的代码:
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)
我在脚本文件中写了这个函数
g=@(x)(sin((pi.*x)/2)+(1/x)-(10.*x));
然后我将其放入命令窗口 [c]=Q3(g(x),1,n) 希望它可以工作,但显然我的代码需要工作。 谢谢
【问题讨论】:
-
代码错误。
subs用于符号替换,如果你想评估函数,你需要做f(c(i-1))。除其他外......大部分代码都是错误的。 -
可能唯一缺少的是将
x声明为f=f(x)之前的符号,以便正确地将f从函数更改为符号表达式。 -
@LutzL 是的,但是 NR 是一种数字方法,因此象征性地使用 NR 并不是一个非常聪明的主意。如果你有符号表达式,你可以用
solve解决它。
标签: matlab math newtons-method