Файл метода общего метода Ньютона 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,

Другие вопросы по тегам