通用牛顿法函数文件 Matlab

General Newton Method Function File Matlab

我对 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));

然后我将它放入命令 window [c]=Q3(g(x),1,n) 希望它能工作,但显然我的代码需要工作。 谢谢

这应该可以解决问题,函数 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.