Newton-Raphson la Méthode dans Matlab

Je suis nouveau sur matlab et j'ai besoin de créer une fonction qui ne n itérations de Newton-Raphson la méthode à partir de l'approximation x = un. Cette approximation ne compte pas comme une interaction et une autre exigence est que d'une boucle for est nécessaire. J'ai regardé d'autres questions similaires posté, mais dans mon cas, je ne veux pas utiliser une boucle while.

C'est ce que mes entrées sont censés être:

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.

Et voici mon code jusqu'à présent.

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

Quand j'essaie d'appeler la fonction que j'obtiens un message d'erreur disant:

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

La question est comment puis-je utiliser cette fonction de l'APV? Accordé le reste de mon code n'est probablement pas correct à 100% non plus, mais toute aide qui traite de l'apv problème ou résout les autres parties de mon code serait grandement apprécié.

Merci!

Je pense qu'un Newton-Raphson la mise en œuvre devrait être quelque chose comme ceci stackoverflow.com/a/5640295/3839249
Cependant j'ai besoin d'utiliser une boucle for pas une boucle while
1) Votre problème avec l'erreur réside peut-être dans la définition de la fonction gérer f. Plus fréquemment, les personnes définir des fonctions comme la fonction de poignées, mais vous l'utilisez comme l'expression symbolique (vous avez syms x). Pourriez-vous fournir votre utilisation sur f (comment définissez-vous de l'appelant)? 2) Franchement, for boucle n'est pas bon pour la N-R algo (ou la plupart des méthodes itératives). Mais de toute façon, votre erreur n'est pas sur le for boucle, mais quelque chose d'autre.
Il convient de mentionner fzero, que vous pouvez utiliser pour vérifier vos résultats.
Aucune idée.... Soyons juste cette question car votre réponse est grand (oublié de +1 il). BTW, je suppose que la raison étrangement à utiliser un for boucle est la nécessité de voir la convergence de comportement de la boucle de continuer.

OriginalL'auteur | 2014-08-04