Ma fsolve() funziona con i numeri complessi?

di il
1 risposte

Ma fsolve() funziona con i numeri complessi?

Salve a tutti,

il manuale di Matlab 2000b asserisce che fsolve() non puo' lavorare con funzioni che danno risultati complessi. In realta', esiste un flag (FunValCheck, default 'off') per controllare che una funzione restituisca un valore reale, il che fa pensare alla possibilita' che il risultato complesso possa essere corretto (altrimenti, perche' mettere il 'off' di default?).

Prima di leggere il manuale, avevo applicato fsolve() a funzioni complesse, e i risultati erano corretti (a parte uno warning del tipo: "first-order optimality is less than options.TolFun").

Provate con una funzione tipo la seguente:

f(z) = log((z-(2-3i))^2)

La soluzione e' corretta sia usando la routine search_zero (M. Houacine, Matlab File Exchange) che usando fsolve():
[z, funz] = fsolve(@(x) myfun_test(x), 1-1i)
con:
function ret = myfun_test(z)
ret = log((z-(2-3i))^2);
Io vorrei usare fsolve() con funzioni complesse, senza avere bisogno di separarle in parte reale e immaginaria, ma vorrei essere tranquillo circa i risultati, non avendo (nei casi che mi interessano) la possibilita' di verificare la correttezza dei risultati.

Qualche idea?

Roberto

1 Risposte

  • Re: Ma fsolve() funziona con i numeri complessi?

    Da quanto leggo in giro, l'unica soluzione è separare parte reale e immaginaria... perché nel caso di valori complessi dovrebbe considerare solo la parte reale... potrebbe essere un caso il fatto di ottenere i risultati aspettati.
Devi accedere o registrarti per scrivere nel forum
1 risposte