Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Soluzione Sistema di equazioni non lineari con Matlab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[21] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentep4ngm4n » 26 mar 2012, 18:06

non pensavo fosse una cosa così difficile...
Avatar utente
Foto Utentep4ngm4n
20 5
New entry
New entry
 
Messaggi: 97
Iscritto il: 21 gen 2009, 18:47

5
voti

[22] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentedimaios » 26 mar 2012, 18:43

E' inutile tentare di risolvere i problemi generando entropia nel codice.
Ti ho scritto uno pseudocodice non il codice Matlab finale.

Codice: Seleziona tutto

function J = myJfunction(x)
x(1)- Iscn -Io*[exp((x(2)*Iscn)/Vt)-1] - (x(2)*Iscn)/x(3)=epsilon1; 
x(1)-Io*(exp((Vmpp + x(2)*Impp)/Vt)-1)-(Vmpp + x(2)*Impp)/(x(3))=epsilon2;
x(1)-Io*(exp(Vocn/Vt)-1)-Vocn/x(3)];

J = epsilon1^2 + epsilon2^2 + epsilon3^2;


[1] Le assegnazioni vanno fatte al contrario. Devi assegnare epsilon1 all'espressione nota e non viceversa.
[2] La terza equazione non è eguagliata a nulla.


Come pretendi che funzioni ?

Non mi piace affatto come hai scritto il codice. Segui lo stesso ordine delle equazioni e chiama per nome e cognome le variabili in modo corretto.
Le funzione DEVE iniziare con la seguente scrittura e deve proseguire con gli stessi simboli che hai utilizzano nell'espressione LaTex:


Codice: Seleziona tutto
function J = myJfunction( x )


Rs  = x(1) ;
Rp  = x(2) ;
Ipv = x(3) ;


epsilon1 =  ........ ;
epsilon2 =  ........ ;
epsilon3 =  ........ ;


J = epsilon1^2 + epsilon2^2 + epsilon3^2;



La chiamata corretta alla funzione è la seguente ( da prompt dei comandi Matlab ).

Codice: Seleziona tutto
[x,val] = fminsearch(@myJfunction,[ Rs0 , Rp0 , Ipv0 ])


E funziona perché l'ho provata.

Ti invito a rispettare un minimo di ordine. Non eseguo il post della soluzione perché nello spirito del forum ( a meno di casi particolari ) è consuetudine fornire suggerimenti ma non la pubblicazione dei risultati per privilegiare il ragionamento e l'apprendimento .


N.B. Per utilizzare in modo corretto le potenzialità della funzione fminsearch devi impiegare le opzioni giuste. Per farlo genera una struttura options seguendo l'help fminsearch options e richiama l'ottimizzatore come segue :

Codice: Seleziona tutto
[x,val] = fminsearch(@myJfunction,[ Rs0 , Rp0 , Ipv0 ],options)



Ora dovresti avere tutti i elementi per completare l'esercizio.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[23] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentep4ngm4n » 26 mar 2012, 19:03

Il problema è che io conosco l'utilizzo di Matlab per la teoria dei sistemi (control system toolbox)
Alcune cose di cui lei parla mi sono ignote purtroppo, ecco perché ho difficoltà.
Non pensavo ci fosse bisogno di così tante conoscenza per quello che mi occorreva.
Comunque molte grazie per l'aiuto, mi rivedo un po' alcune cose di Matlab e poi cerco di far girare questo benedetto programma.
Avatar utente
Foto Utentep4ngm4n
20 5
New entry
New entry
 
Messaggi: 97
Iscritto il: 21 gen 2009, 18:47

3
voti

[24] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentedimaios » 26 mar 2012, 19:13

E ricorda che alla fine ti scontrerai con il problema di determinare una condizione iniziale "ragionevole" dalla quale far partire l'algoritmo di ottimizzazione altrimenti non convergerà.
Non puoi sfuggire a questo obbligo.
La stima della condizione iniziale "ragionevole" deve essere comunque fatta a parte.
Ti ho citato l'argomento options che ti aiuterà per eseguire il tuning del numero di iterazioni e della tolleranza per l'uscita dall'algoritmo.
Buon lavoro.

P.S. Puoi tranquillamente darmi del tu.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[25] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentep4ngm4n » 28 mar 2012, 10:48

Per la cronaca, son riuscito a farlo girare anche se richiede un numero grande di iterazioni...
Avatar utente
Foto Utentep4ngm4n
20 5
New entry
New entry
 
Messaggi: 97
Iscritto il: 21 gen 2009, 18:47

2
voti

[26] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentedimaios » 28 mar 2012, 13:33

Bene.

[1] Il risultato è fisicamente plausibile e compatibile con la topologia del circuito ?
[2] La condizione iniziale imposta e la soluzione trovata quanto distano ( scegli la norma che ritieni più idonea per quantificare la distanza) ?
[3] Le tolleranze per l'uscita dal loop di ottimizzazione sono state impostate in modo corretto rispetto alle specifiche del problema ?

Codice: Seleziona tutto
[x,fval,exitflag] = fminsearch(...)


E' interessante valutare fval ed exitflag.

E soprattutto :

[4] Come hai deciso di ricavare la condizione iniziale da fornire all'algoritmo ?


Comunque sono contento che tu abbia raggiunto un risultato.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[27] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentep4ngm4n » 29 mar 2012, 12:40

Il risultato non è stato quello che mi aspettavo, nel senso che ho rinunciato a questo algoritmo, perché 10^7 iterazioni non bastavano.
Per i miei scopi, non dovevano esserci tempi computazionali così elevati.

I valori iniziali li avevo scelta in base all'ordine di grandezza, che conoscevo.

Mi ha fatto piacere quantomeno, riuscire a farlo girare.
Avatar utente
Foto Utentep4ngm4n
20 5
New entry
New entry
 
Messaggi: 97
Iscritto il: 21 gen 2009, 18:47

2
voti

[28] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto Utentedimaios » 29 mar 2012, 13:40

p4ngm4n ha scritto:Il risultato non è stato quello che mi aspettavo, nel senso che ho rinunciato a questo algoritmo, perché 10^7 iterazioni non bastavano.


Non vorrei essere troppo insistente ma per esperienza direi che 10^{7} iterazioni per quel tipo di sistema con 3 variabili mi sembrano uno sproposito. Evidentemente c'è qualche parametro di tuning dell'algoritmo che non è impostato a dovere o per qualche motivo la soluzione "rimbalza" nell'intorno di un minimo senza soddisfare le condizioni di convergenza.
Prima di passare ad altro ti consiglierei di riguardare il setup con più attenzione.

In particolare se converge al valore corretto è molto probabile che trattasi di un problema relativo al tuning dell'algoritmo.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

3
voti

[29] Re: Soluzione Sistema di equazioni non lineari con Matlab

Messaggioda Foto UtenteDirtyDeeds » 29 mar 2012, 13:56

Mi sembra ci siano due grossi problemi nell'approccio di Foto Utentep4ngm4n:

1) Dati scarsi: con 3 dati e 3 incognite non ci sono gradi di libertà per un'ottimizzazione (assumendo che ogni dato sia noto con una certa incertezza).
2) La presenza di Rp nel modello può facilmente rendere il problema mal condizionato.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

Precedente

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti