[Matlab] Metodo di Newton

Migno1
Ciao, ho un problema con l'implementazione su matlab del metodo di Newton, in pratica, la mia funzione è $y=1/2x-sin(x)$ ho scelto come punto iniziale $x_0=2$, la mia implementazione della funzione è :
function [z] = tangenti (fun,df,x1,k)
z=x1;
for i=1:k
    z=z-fun(z)/df(z);
end


in Matlab scrivo:
>> syms x real
>> y=1/2.*x-sin(x);
>> y1=diff(y);
>> z=tangenti(y,y1,2,20)


e ottengo come errore :
Error using mupadmex
Error in MuPAD command: Index exceeds matrix dimensions.

Error in sym/subsref (line 687)
        B = mupadmex('symobj::subsref',A.s,inds{:});

Error in tangenti (line 4)
    z=z-fun(z)/df(z);



Non riesco a capire come andrebbe fatto, anche perché la soluzione del mio professore è praticamente uguale.. Dove sbaglio?
Grazie in anticipo :)

Risposte
lucadileta1
Ciao migno,

a prima vista mi sembra di capire dal messaggio di errore che tu stia usando l'ambiente mupad, di calcolo simbolico, ma il metodo di newton-raphson è un integrazione numerica... bada bene in che ambiente lavori, tu devi creare uno script nell'editor "normale" di matlab dove prima crei un file con l'estensione della tua funzione che si chiamerà tangenti.m e poi in un altro script la richiami con i dati in input e la usi per la tua funzione specifica

Migno1
Grazie mille :D ora è tutto più chiaro

lucadileta1
Di nulla, ;-) ciao!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.