Método Newton-Raphson em Matlab

Eu sou novo no matlab e preciso criar uma função que não faça iterações do método Newton-Raphson com a aproximação inicial x = a. Essa aproximação inicial não conta como uma interação e outro requisito é que um loop for seja necessário. Eu olhei para outras perguntas semelhantes postadas, mas no meu caso eu não quero usar um loop while.

Isto é o que minhas entradas devem ser:

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.

E aqui está o meu código até agora.

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

Quando tento chamar a função, recebo um erro dizendo:

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

A questão é como eu uso essa função VPA? Concedido que o restante do meu código provavelmente não esteja 100% correto, mas qualquer ajuda que resolva o problema do vpa ou corrija as outras partes do meu código seria muito apreciada.

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion