Файл метода общего метода Ньютона Matlab
У меня очень ограниченные знания о Matlab, и я пытаюсь создать общую функцию Ньютона-Рафсона, но каждый раз, когда возникает ошибка, говорит, что входных аргументов недостаточно. Моему коду нужны три входа: 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 ответ
Это должно сработать, функция 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
,