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