通用牛顿法函数文件 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));
但你也应该定义n
和c0
,例如:
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
.
我对 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));
但你也应该定义n
和c0
,例如:
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
.