Matlab comando fsolve
Salve a tutti,
premetto che non sono affatto sicuro di essere nel forum corretto. Tuttavia mi sembrava quello con maggior attinenza con il mio problema. Qualora mi fossi sbagliato, pregherei chi di dovere di reindirizzare il messaggio nella più appropriata sezione.
Il problema è il seguente e di natura pratica: non riesco a capire come funziona il comando fsolve di Matlab... ho guardato online, nel tutoril, ovunque ma non ne vengo fuori. Il problema è anche abbastanza banale: classificare i punti stazionari di una funzione in n variabili (nel mio caso in 3).
Il problema è impostare il sistema (non lineare) che annulli il gradiente della funzione. Ho provato sia a "creare" la funzione gradiene con
>function F =...
che con il calcolo simbolico syms x, y, z... Niente.
In particolare le funzioni sono
$f(x,y,z) = x^2 + y^2 + 3 z^2 - xy + 2 xz + yz$
$f(x,y,z) = x^3 + y^3 + z^3 - 9xy + 9 xz + 27$
Chiunque riscisse a darmi una mano o anche solo una dritta avrà tutta la mia riconoscenza
premetto che non sono affatto sicuro di essere nel forum corretto. Tuttavia mi sembrava quello con maggior attinenza con il mio problema. Qualora mi fossi sbagliato, pregherei chi di dovere di reindirizzare il messaggio nella più appropriata sezione.
Il problema è il seguente e di natura pratica: non riesco a capire come funziona il comando fsolve di Matlab... ho guardato online, nel tutoril, ovunque ma non ne vengo fuori. Il problema è anche abbastanza banale: classificare i punti stazionari di una funzione in n variabili (nel mio caso in 3).
Il problema è impostare il sistema (non lineare) che annulli il gradiente della funzione. Ho provato sia a "creare" la funzione gradiene con
>function F =...
che con il calcolo simbolico syms x, y, z... Niente.
In particolare le funzioni sono
$f(x,y,z) = x^2 + y^2 + 3 z^2 - xy + 2 xz + yz$
$f(x,y,z) = x^3 + y^3 + z^3 - 9xy + 9 xz + 27$
Chiunque riscisse a darmi una mano o anche solo una dritta avrà tutta la mia riconoscenza

Risposte
"fede.unive":
Salve a tutti,
premetto che non sono affatto sicuro di essere nel forum corretto. Tuttavia mi sembrava quello con maggior attinenza con il mio problema. Qualora mi fossi sbagliato, pregherei chi di dovere di reindirizzare il messaggio nella più appropriata sezione.
Informatica.
Se non ricordo male, devi usare i function handle. Per la prima funzione,
e poi la valuti con
Se vuoi usare fsolve devi poi passargli F come primo parametro.
F = @(x,y,z) x^2 + y^2 + 3*z^2 - x*y + 2*x*z + y*z
e poi la valuti con
F(1,2,3)
Se vuoi usare fsolve devi poi passargli F come primo parametro.
Non sono certo di aver capito che cosa tu stia cercando di ottenere, ma ho l'impressione che tu abbia frainteso il funzionamento e lo scopo della funzione fsolve. fsolve trova UNO zero di una funzione che gli viene passata utilizzando metodi NUMERICI. Se non è quello che stai cercando di fare allora stai guardando alla funzione sbagliata. A me sembra che tu stia cercando di trovare tutti gli zeri di una qualche funzione in modo simbolico..
La documentazione di Matlab è sempre molto completa comunque e ci sono numerosi esempi di utilizzo (http://www.mathworks.it/it/help/optim/ug/fsolve.html). Che cosa non riesci a capire?
La documentazione di Matlab è sempre molto completa comunque e ci sono numerosi esempi di utilizzo (http://www.mathworks.it/it/help/optim/ug/fsolve.html). Che cosa non riesci a capire?
Leggendo il post di apatriarca e rileggendo il primo, mi accorgo di aver risposto ad un'altra domanda XD
Correggo subito!
Oltre a questo, mi accodo perfettamente ai dubbi di apatriarca sull'effettiva efficacia di ciò che sembra tu [fede.unive] abbia intenzione di fare.
Correggo subito!
Oltre a questo, mi accodo perfettamente ai dubbi di apatriarca sull'effettiva efficacia di ciò che sembra tu [fede.unive] abbia intenzione di fare.