Newsgroup: it.discussioni.ingegneria
Titolo: Matlab, Fzero e funzioni con parametri

Salve a tutti, purtroppo non esiste un newsgroup dedicato a Matlab,
così chiedo qui...spero di non disturbare...8-)
Avrei la necessità di usare la funzione Fzero di matlab 5 con una
funzione che dipende da 2 parametri c1 e c2 i cui valori vengono
precedentemente calcolati.
Io pensavo che
y=fzero('c1-c2x',[a,b])  
(a e b sono due valori opportunamente calcolati)
funzionasse, e invece Matlab mi dà errore riguardo alla presenza di
variabili, o meglio, di funzioni non definite, all'interno della
funzione fzero.
Come posso fare per risolvere il problema ?
Grazie mille per l'aiuto.
Ciao e 73-51 de Tartaruga .
.oO-=> TARTARUGA (* Gabriele *) <=-Oo.
     E-Mail: 
ru...@ita.flashnet.it
http://www.geocities.com/SiliconValley/Peaks/4731/
"Chi dorme non piglia pesci, ma chi non dorme, alla fin fine...muore..." (C) Tartaruga 1999 ;-)

Beh, volendo esiste sci.comp.matlab ma è in inglese. Comunque, la prossima volta
non postare in 3 gruppi (che c' entra l' ingegneria in un problema come questo,
che è strettamente di calcolo numerico? poi magari un ingegnere te lo sa
risolvere, come nel mio caso, ma non c' entra)
Veniamo al problema: la sintassi di fzero: se devi risolvere l' equazione
f(x,C)=0, dove C è un set di parametri assegnati in precedenza ed x appartiene
ad R^n, devi seguire questi steps:
1) definire il vettore C come global (consulta l' help on line: "help global")
ed assegnarne i valori.
2) Creare un m-file nella directory di lavoro, che chiamerai "Funzione.m", con
la seguente struttura:
function y=Funzione(x)
global C
y=x(1)^2*C(2)+x(2)/C(1);
% Scrivi nella riga precedente la relazione f(x,C) che devi uguagliare a zero
3) Definire un valore di x di tentativo, che chiamerai xTentativo (sai più o
meno gli ordini di grandezza delle componenti di x, no? allora usa quelli...)
4) invocare fzero:
x0=fzero('Funzione',xTentativo),
Per ulteriori informazioni (dopo aver consultato l' help!) sono a disposizione
tramite e-mail.
Ciao, Luigi.
P.s.: Follow-up solo su it.discussioni.ingegneria
-------------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------------------
BELANDI = GREGGE di PECORE che BELANO !
Aerospace Yellow Pages -----> 
http://www.fly.to/ayp
Scrivimi ma NONSPAMMARMI ---> tenn...@NONSPAMMARMIunina.it
Luigi Tenneriello, Napoli <-> Torino, Italy

 (a e b sono due valori opportunamente calcolati)
Che io sappia devi creare un file che contenga la funzione e poi devi
inserire come primo parametro di fzero, tra apici il nome di questo file e
non la funzione vera e propria.
Esempio
Crei un file 'funzionelineare.m' che contiene:
function y=funzionelineare(x)
y=c1-c2*x;
e poi chiami dal Matlab
fzero('funzionelineare',[a b])
Non so se sono stato sufficientemente chiaro.
Kaspar.

non la funzione vera e propria.
Sono riuscito a fare diversamente:
Ti faccio un esempio:
f=inline('x^2-a*x-b','x','a','b')
c1=1
c2=6
zero=fzero(f,-4,[],[],c1,c2)
Così si evita di ppoggiarsi a file esterni...addiritura si dovrebbe
poter fare così:
c1=1
c2=6
zero=fzero(inline('x^2-a*x-b','x','a','b'),-4,[],[],c1,c2)



