通用牛顿法函数文件Matlab

时间:2017-03-09 15:48:26

标签: matlab math newtons-method

我对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)希望它能工作但显然我的代码需要工作。 感谢

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题,函数g的定义如下所述:

g=@(x)(sin((pi.*x)/2)+(1/x)-(10.*x));

但您也应该定义nc0,例如:

clearvars

g=@(x)(sin((pi.*x)/2)+(1/x)-(10.*x));

n=10
c0=1

c=Q3(g,c0,n)

在另一个文件中,你为NR编写了函数:

function [c] = Q3(f,c0,n)

h=1e-4;
c(1)=c0;

for i=1:n 
    g=f(c(i));
    gp=(f(c(i)+h)-f(c(i)-h))/(2*h)
    c(i+1)=c(i)-g/gp
end

disp(c)

在这种情况下,我选择h=1e-4作为数值导数近似值,但您可以更改它。我建议h<1e-2