Soluzione Sistema di equazioni non lineari con Matlab
29 messaggi
• Pagina 3 di 3 • 1, 2, 3
0
voti
non pensavo fosse una cosa così difficile...
5
voti
E' inutile tentare di risolvere i problemi generando entropia nel codice.
Ti ho scritto uno pseudocodice non il codice Matlab finale.
[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:
La chiamata corretta alla funzione è la seguente ( da prompt dei comandi Matlab ).
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 :
Ora dovresti avere tutti i elementi per completare l'esercizio.
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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
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.
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.
3
voti
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.
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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
Per la cronaca, son riuscito a farlo girare anche se richiede un numero grande di iterazioni...
2
voti
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 ?
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.
[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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
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.
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.
2
voti
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
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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
3
voti
Mi sembra ci siano due grossi problemi nell'approccio di
p4ngm4n:
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.
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
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
29 messaggi
• Pagina 3 di 3 • 1, 2, 3
Torna a Programmi applicativi: simulatori, CAD ed altro
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
