Метод Ньютона-Рафсона в Matlab
Я новичок в Matlab, и мне нужно создать функцию, которая делает n итераций метода Ньютона-Рафсона с начальным приближением x = a. Это начальное приближение не считается целым числом, и другое требование состоит в том, что требуется цикл for. Я посмотрел другие похожие вопросы, опубликованные, но в моем случае я не хочу использовать цикл while.
Это то, что мои входные данные должны быть:
mynewton(f,a,n) which takes three inputs:
f: A function handle for a function of x.
a: A real number.
n: A positive integer.
И вот мой код до сих пор.
function r=mynewton(f,a,n)
syms x;
z=f(x);
y=a;
for i=1:n
y(i+1)=y(i)-(z(i)/diff(z(i)));
end
r=y
end
Когда я пытаюсь вызвать функцию, я получаю сообщение об ошибке:
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in mynewton (line 6)
y(i+1)=y(i)-(z(i)/diff(z(i)));
Вопрос в том как мне использовать эту функцию VPA? Конечно, остальная часть моего кода, вероятно, также не на 100% правильна, но любая помощь, которая решает проблему vpa или исправляет другие части моего кода, будет принята с благодарностью.
Спасибо!