View Full Version : MATLAB e grafico della derivata di una generica funzione f(x)
è abbastanza urgente visto che ho l'esame domani.
come fare in MATLAB un grafico della derivata di una generica funzione non lineare f(x)?
conosco il comando diff(A) che farebbe al caso mio con diff(f(x)), solo che se la matrice di valori f(x) ha rango n la funzione diff(f(x)) crea una matrice con rango n-1 e non mi permette di creare il grafico con il comando plot perchè le due matrici devono avere lo stesso rango!
eppure ieri smanettando e provando varie soluzioni non so come ma sono riuscito a creare il grafico della derivata con il comando diff! non ho salvato l'mfile, ho fatto altro e quando ho riprovato non ci sono più riuscito :muro: :muro: :muro:
credo quindi che sia possibile usare questo metodo, ma mi dite come si fa? forse c'è qualche espediente per portare diff(f(x)) allo stesso rango di f(x)?
altrimenti mi tocca calcolare la derivata manualmente, ed immetterla esplicitamente in MATLAB come f'(x)....
pietro84
15-06-2006, 20:10
è abbastanza urgente visto che ho l'esame domani.
come fare in MATLAB un grafico della derivata di una generica funzione non lineare f(x)?
conosco il comando diff(A) che farebbe al caso mio con diff(f(x)), solo che se la matrice di valori f(x) ha rango n la funzione diff(f(x)) crea una matrice con rango n-1 e non mi permette di creare il grafico con il comando plot perchè le due matrici devono avere lo stesso rango!
eppure ieri smanettando e provando varie soluzioni non so come ma sono riuscito a creare il grafico della derivata con il comando diff! non ho salvato l'mfile, ho fatto altro e quando ho riprovato non ci sono più riuscito :muro: :muro: :muro:
credo quindi che sia possibile usare questo metodo, ma mi dite come si fa? forse c'è qualche espediente per portare diff(f(x)) allo stesso rango di f(x)?
altrimenti mi tocca calcolare la derivata manualmente, ed immetterla esplicitamente in MATLAB come f'(x)....
non mi risulta che il rango sia diverso.
ha un elemento in meno ma non rango diverso
prova con questi comandi:
t=0:0.01:3; variabile indipendente
f=cos(2*pi*t) funzione da derivare
g=diff(f) derivata discreta del coseno
g(1,301)=0 poichè ha un elemento in meno ne agg uno a un val a caso
plot(t,f) diagrammo la funz
hold on comando per non cambiare figure
plot(t,g,'r') diagrammo la derivata
non mi risulta che il rango sia diverso.
ha un elemento in meno ma non rango diverso
prova con questi comandi:
t=0:0.01:3; variabile indipendente
f=cos(2*pi*t) funzione da derivare
g=diff(f) derivata discreta del coseno
g(1,301)=0 poichè ha un elemento in meno ne agg uno a un val a caso
plot(t,f) diagrammo la funz
hold on comando per non cambiare figure
plot(t,g,'r') diagrammo la derivata
grande!! si intendevo che aveva un elemento in meno, il rango non c'azzecca visto che è sempre 1 essendo tutti vettori 1*n :doh:
il pezzo che mi mancava era proprio questo: g(1,301)=0 che aggiunge l'elemento mancante, una stupidaggine :stordita:
cmq non vorrei desse problemi la prof con quel valore assegnato casualmente... forse meglio qualcosa tipo g(1,301)=g(1,300) che almeno si nota meno nel grafico :p
tnks 1000 anche per la celerità!!!! :D
pietro84
15-06-2006, 20:55
grande!! si intendevo che aveva un elemento in meno, il rango non c'azzecca visto che è sempre 1 essendo tutti vettori 1*n :doh:
il pezzo che mi mancava era proprio questo: g(1,301)=0 che aggiunge l'elemento mancante, una stupidaggine :stordita:
cmq non vorrei desse problemi la prof con quel valore assegnato casualmente... forse meglio qualcosa tipo g(1,301)=g(1,300) che almeno si nota meno nel grafico :p
tnks 1000 anche per la celerità!!!! :D
oppure puoi anche togliere un elemento al vettore variabile indipendente o crearne uno nuovo con un elmento in meno se vuoi fare una cosa più pulita.
di nulla ;)
oppure puoi anche togliere un elemento al vettore variabile indipendente o crearne uno nuovo con un elmento in meno se vuoi fare una cosa più pulita.
buona anche questa!
per dovere di cronaca, la derivata di f(x) non è semplicemente diff(f) ma diff(f)./diff(x)
oggi ho fatto il compito: la prof non voleva la derivata calcolata in matlab con questo sistema ma la voleva calcolata a mano e poi inserita come funzione indipendente :muro: mah...
cmq l'esame è andato bene :)
tureface
04-08-2010, 15:22
Ciao Ragazzi,
sapete invece un modo rapido per calcolare la derivata a pezzi?
Ossia anzicchè fare tutta in una volta la derivata di y vorrei farla in due o più pezzi.
La funzione diff esegue [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)] ma io vorrei fare [X(5)-X(1) X(10)-X(6) ... ]...
devo implementarla io o esiste qualcosa di più facile?
Grazie
Ziosilvio
04-08-2010, 22:01
Ciao Ragazzi,
sapete invece un modo rapido per calcolare la derivata a pezzi?
Ossia anzicchè fare tutta in una volta la derivata di y vorrei farla in due o più pezzi.
La funzione diff esegue [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)] ma io vorrei fare [X(5)-X(1) X(10)-X(6) ... ]...
devo implementarla io o esiste qualcosa di più facile?
Grazie
Esistono i thread ufficiali sul software scientifico e per le richieste di aiuto in matematica; e sono entrambi in evidenza in sezione.
Ovviamente non era il caso di riesumare una discussione vecchia di quattro anni.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.