Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Metodo Excel di Carlizza

Analisi, geometria, algebra, topologia...

Moderatori: Foto UtentePietroBaima, Foto UtenteIanero

18
voti

[1] Metodo Excel di Carlizza

Messaggioda Foto UtentePietroBaima » 19 mar 2015, 23:44

Rispondo qui a questo articolo per comodità, dove, mio malgrado, ho paura sia nato un lieve diverbio dovuto a qualche piccola incomprensione.

Come prima cosa mi preme precisare che non ho mai avuto intenzione di scrivere "banner" provocatori.
Ciò che ho scritto nel mio ultimo commento è semplicemente stato una citazione a quanto Foto Utentepaolo.carlizza aveva scritto nel commento precedente, nel tentativo di mettere in luce che conoscere il condizionamento del problema in anticipo è spesso una delle cose più difficili da raggiungere.
Preciso anche che non intendevo certo mancargli di rispetto (e perché mai dovrei??), invece indendevo segnalare che il metodo da lui usato risente di gravi problemi numerici di condizionamento (e non solo).

Se non correggiamo questo punto, rischiamo che qualcuno utilizzi il suo metodo e si ritrovi a non capire come mai non converge.
Non convergere può anche significare avere dei risultati errati e non essere in grado di rendersi conto che lo siano, che rappresenta il rischio più grave, senza una analisi della sensitivity del metodo.

Detto questo, devo spendere qualche parola in più sul problema.
Cercherò di essere pratico, portando esempi concreti e utilizzando il suo sistema non lineare, in modo da non infarcire il post con troppa teoria e renderlo più accessibile. Vediamo se mi riesce.

Il problema é:
Risolvere il seguente sistema non lineare:

\begin{cases}
4x^3-(3y)^{0.5}-20=0
\\
xy^2-2/x-50=0
\end{cases}

al posto di utilizzare x_1 e x_2 ho utilizzato x e y, secondo la trasformazione:

\begin{cases}
   x_1=x\\x_2=y
   \end{cases}

per comodità, essendo il sistema 2x2.

Usero Mathematica quale solutore numerico (ma con Matlab, Derive o qualunque altro software non cambia nulla). Excel non va bene perché non è un solutore numerico e non dovrebbe essere utilizzato per risolvere nulla che non sia un foglio di calcolo.
Come si differenzia un foglio di calcolo da un problema matematico?
Un problema matematico richiede sempre la conoscenza del condizionamento e con Excel questo non è mai possibile.
I fogli di calcolo Excel possono essere usati per fare calcoli che non siano problemi matematici.
(anche io talvolta uso i fogli di calcolo, ne avevo fatto uno per tenere a mente quando scadono le medicine che tengo in casa e la loro quantità rimanente nell'armadietto.)


OK, quindi definisco tre funzioni, a(x,y) b(x,y) c(x,y), così:

definizione problema.png


c(x,y) è la somma dei quadrati, che ho fatto espandere per poterne vedere la formula ad occhio.

Come dicevo prima, cioè senza scrivere formule, proviamo a disegnare a(x,y)

a.png


poi b(x,y)

b.png


Il problema è chiaramente non lineare, ma, come si vede, a parte l'accumulazione in 0 di b(x,y) è molto poco non lineare.
Me lo aspettavo, per le considerazioni che ho già fatto nei commenti all'articolo.
Da come sono fatti i grafici mi aspetto che il problema sia quasi separabile e questo è il motivo per il quale il metodo con Excel, fatto in due passi, cioè cercando prima la soluzione per x e poi quella per y funzionicchia.
Scrivo funzionicchia perché ho una soluzione, ma non sono comunque in grado di valutarne la precisione numerica.
Inoltre la funzione che cerca l'obiettivo, in Excel, mi dice che non è riuscita a convergere (non potrebbe mai perché può lavorare solo su una delle due variabili) e quindi non ha risolto il problema, ma semplicemente raggiunto il numero massimo di iterazioni permesso.
Quanto migliora la precisione ad ogni iterazione? Questo non è dato saperlo, ma poiché la non linearità non è troppo marcata possiamo dire che la precisione aumenta ad ogni iterazione, motivo per il quale, in questo caso specifico, il metodo funzionicchia.

Adesso disegno c(x,y)

c.png


Si nota che la non linearità del problema è peggiorata molto, pur restando il problema quasi separabile.
Per rendersene conto meglio (e per non farmi dire che vi frego con le scale :D ) calcoliamo:

a(0.1,0.1)=-20.5437
b(0.1,0.1)=-69.999

mentre

c(0.1,0.1)=5321.9

Risolviamo il problema con il solutore numerico, volendo ottenere 6 cifre significative corrette:

Codice: Seleziona tutto
NSolve[{a[x, y] == 0, b[x, y] == 0}, {x, y}, WorkingPrecision -> 6]

{{x -> 1.71953 + 0.114097 I,  y -> -5.44535 + 0.184554 I},
{x -> 1.71953 - 0.114097 I,   y -> -5.44535 - 0.184554 I},
{x -> -0.858314 - 1.58777 I,  y -> 2.63683 + 4.52357 I},
{x -> -0.858314 + 1.58777 I,  y -> 2.63683 - 4.52357 I},
{x -> -0.964107 + 1.48853 I,  y -> -2.47649 + 4.66043 I},
{x -> -0.964107 - 1.48853 I,  y -> -2.47649 - 4.66043 I},
{x -> 1.81684, y -> 5.30342}}


Si vede che il problema ha sei soluzioni complesse e solo una reale, l'ultima.

Cerchiamo adesso di renderci conto a spanne di quali possono essere i problemi di condizionamento del problema.
Conoscendo la soluzione, possiamo provare a perturbarla un po' per vedere cosa succede.
In genere un problema è ben condizionato se per una variazione \nu degli ingressi corrisponde una variazione dell'ordine di \nu delle soluzioni.
Tanto più questo criterio non è vero tanto peggio è condizionato il problema.
Mi aspetto che la funzione problematica sia b(x,y), perché è quella più non lineare e che ha un punto di accumulazione.
Però vediamo, faccio generare 10 valori a caso con cui perturbo la soluzione:

perturbazab.png


Purtroppo avevo ragione.

Vediamo cosa succede con c(x,y).

perturbazc.png


Allora perché (grossomodo) Excel tira fuori una soluzione?
La risposta a questa domanda è nella natura del problema. Se vado sufficientemente vicino alla soluzione in modo casuale percorrendo la linea di livello del grafico meno non lineare, quindi usando la ricerca dell'obiettivo in Excel nella direzione di x -che corrisponde all'operazione svolta- sarò sufficientemente lontano dal punto di accumulazione in modo da percorrere la linea di livello perpendicolare in modo tale per cui il numero massimo di iterazioni che esegue Excel mi porti sufficientemente vicino alla soluzione.

Si capisce anche perché questo metodo non va bene, si affida al caso e dopo tutti i calcoli svolti garantisce una sola cifra decimale corretta.

Per averne una percezione più precisa, proviamo a variare in c(x,y) di poco la soluzione, sia in x, sia in y.

variazc.png


Oltre al condizionamento del problema (x varia da 5.30342 a 5.3 nel primo grafico e y da 1.81683 a 1.816 nel secondo e si ottengono quelle differenze !) si vede quanto convenga muoversi lungo x.

Per mettere in crisi il metodo è sufficiente prendere un altro problema, poco diverso.
Questo:

\begin{cases}
4x^3-(3y)^{0.5}-20=0
\\
x/y^2-2/x-50=0
\end{cases}

a(x,y) è tal quale a quella di prima, mentre è stata peggiorata la non linearità di b(x,y), introducendo una accumulazione anche sull'asse y.
Ecco il grafico della somma dei quadrati, che evidenzia la cosa:

variazionesultema.png


Adesso non è più possibile usare il trucco di prima perché manca una direzione preferenziale. ;-)

Spero di aver chiarito le mie ragioni e di essere rimasto dentro un ambito critico costruttivo.

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
88,2k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11910
Iscritto il: 12 ago 2012, 1:20
Località: Londra

3
voti

[2] Re: Metodo Excel di Carlizza

Messaggioda Foto Utentegotthard » 20 mar 2015, 0:50

Ciao Pietro! :D

Devo dire che, conoscendoti (seppur solo attraverso questo forum :( ), dopo la discussione che si è tenuta tra i commenti in fondo all' articolo, aspettavo questo thread! :-P

Pur essendo ignorante in materia, ho compreso (seppur un po' grossolanamente) le fondamenta su cui si basano i tuoi dubbi riguardo al metodo presente nell' articolo, e mi trovo in linea con te.

Inoltre, non mi sembra che tu abbia mancato di rispetto a nessuno!
Anzi, l' apertura di questo thread mostra sicuramente la tua serietà, e la "volontà costruttiva" a cui hai già fatto riferimento.

Spero che sia apprezzata anche dall' estensore dell' articolo :ok:

In fondo ci sono critiche e critiche: se sono costruttive, bisogna prenderne atto, e non ripugnarle a occhi chiusi!
...\frac{\mathrm{d} p}{\mathrm{d} t}=JCM... :!:
Avatar utente
Foto Utentegotthard
4.611 2 5 9
Expert EY
Expert EY
 
Messaggi: 1357
Iscritto il: 5 lug 2013, 14:01

1
voti

[3] Re: Metodo Excel di Carlizza

Messaggioda Foto UtenteRussell » 20 mar 2015, 9:50

Hai per caso verificato cosa fa' excel in quel secondo caso, dato come valore iniziale (1;1)?
ormai sono curioso: diverge dando errore? spara un punto x,y a caso?

[purtroppo non ho excel 2010,senno' facevo da solo. :oops: ]
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

10
voti

[4] Re: Metodo Excel di Carlizza

Messaggioda Foto UtentePietroBaima » 20 mar 2015, 10:58

Eh, ormai sono anni che ho abbandonato il pacchetto Microsoft Office per usare invece Apache Openoffice, presente su sourceforge.

Forse potrebbe fare una prova lo stesso Carlizza.

Se provo con OpenOffice il sistema non converge, però è anche vero che non converge nemmeno il problema originale posto da Carlizza.
La ragione è che OpenOffice non lascia la cella aggiornata al valore che aveva quando non arriva a soluzione raggiungendo il numero massimo di iterazioni previste.
Questo, secondo me, è un bene perché non alimenta false speranze di trovare la soluzione per caso.

Sono andato a vedere come funziona internamente la funzione "ricerca obiettivo" di Excel, ma la Microsoft non la rilascia, impedendomi di fatto di capire che metodo usi.

Qui fanno un esempio d'uso, dove precisano che la funzione NON può essere usata se si cerca più di un parametro, rimandando all'uso di un loro risolutore numerico. Anche di questo però non è dato sapere come funzioni ( "[#]" )

La pagina è utile quanto una bandella mobile di messa a terra per cani al passeggio.

A questo punto sono curioso di sapere come funzioni il risolutore (non la funzione "ricerca obiettivo", di cui non si sa nulla, che è stata usata per risolvere il sistema non lineare proposto, ma il risolutore che viene consigliato da Excel come pacchetto aggiuntivo, quando si vuole fare la ricerca su più di un parametro).
E' il metodo che Excel suggerisce di usare, si divide in tre: uno per sistemi lineari, uno per non lineari lisci (il nostro caso) e uno per sistemi non lineari forti, dove dicono di usare un metodo evolutivo (quale? mah).
Googlando trovo questa pagina che finalmente mi dice che per i sistemi non lineari lisci viene usato un metodo GRG2.
Finalmente comincio ad avere qualche informazione utile.
Peccato che quel metodo (fra l'altro molto interessante) vada impostato correttamente al problema e questo viene fatto in automatico da Excel, in un modo non specificato, che, nuovamente, non mi permette di sapere nulla su come si comporti effettivamente il metodo.

E qui mi fermo, essendomi veramente stufato.

Faccio notare che la stessa Microsoft, comunque, dice di NON usare la loro semplice funzione "ricerca obiettivo" (che non chiamano nemmeno "risolutore") per obiettivi a più di una variabile.
Per fare quelle cose consigliano un risolutore di cui non è dato sapere il funzionamento.

Lo dicono loro che hanno costruito il metodo... :D mah...

Invece di fare così, io mi dico, non varrebbe davvero la pena di scrivere due (due, di numero) righe di codice su un qualunque risolutore numerico fatto allo scopo? Ce ne sono di freeware, e validissimi.


Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
88,2k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11910
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[5] Re: Metodo Excel di Carlizza

Messaggioda Foto UtenteRussell » 20 mar 2015, 11:15

Pure io su LibreOffice (fork di OpenOffice) ho questa analoga funzione
https://help.libreoffice.org/Calc/Solver
ma non è chiaro cosa usi
comunque anche qui ne sconsigliano l'uso per problemi complessi

e ... sinceramente al momento non mi va proprio, forse problemi con Java... provo ad aggiornare tutto e vediamo
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

0
voti

[6] Re: Metodo Excel di Carlizza

Messaggioda Foto Utentepaolo.carlizza » 20 mar 2015, 11:19

oK.
Di queste cose mi rendo conto, ma non c'era bisogno di fare una approfondita e bellissima analisi del problema.
Paolo carlizza
MBDA IT
Via Tiburtina, km. 12,400
00131 - Roma
Tel. 0641972761
Cell. 3932636873
e-mail: paolo.carlizza@mbda.it
Avatar utente
Foto Utentepaolo.carlizza
4.764 2 7 10
 
Messaggi: 19
Iscritto il: 23 ago 2006, 11:30

7
voti

[7] Re: Metodo Excel di Carlizza

Messaggioda Foto Utentefairyvilje » 20 mar 2015, 11:19

paolo.carlizza ha scritto:oK.
Di queste cose mi rendo conto, ma non c'era bisogno di fare una aprofondita e bellissima analisi del problema.

E perché no? Io al contrario l'ho trovata molto interessante :)
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
14,8k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3022
Iscritto il: 24 gen 2012, 19:23

5
voti

[8] Re: Metodo Excel di Carlizza

Messaggioda Foto UtenteDarwinNE » 20 mar 2015, 11:32

Anche a me è interessata molto. Non sono cose banali ed è utilissimo sapere su quali strumenti si può contare.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
30,1k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4231
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

2
voti

[9] Re: Metodo Excel di Carlizza

Messaggioda Foto UtenteRussell » 20 mar 2015, 11:49

paolo.carlizza ha scritto:non c'era bisogno di fare una approfondita e bellissima analisi del problema.


no infatti... hai ragione... a che serve mai capire se uno strumento è utile o spara numeri a caso?


uh, è crollata una scuola... che peccato... vebbè, passiamo alle notizie del calcio va
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2194
Iscritto il: 4 ott 2009, 10:25

6
voti

[10] Re: Metodo Excel di Carlizza

Messaggioda Foto Utenteadmin » 20 mar 2015, 11:59

paolo.carlizza ha scritto:non c'era bisogno di fare una approfondita e bellissima analisi del problema.

Foto Utentepaolo.carlizza, non capisco perché non ce ne fosse bisogno. Tra l'altro i due aggettivi che tu stesso hai usato non solo la giustificano, ma la qualificano come un documento di pregio prodotto dalla nostra comunità. Io credo che dovresti sentirti in fondo contento di averlo provocato. Il tuo articolo è stato un'ottima occasione per estendere a numerosi altri utenti l'attenzione critica sui metodi di calcolo numerici.
Avatar utente
Foto Utenteadmin
191,6k 9 12 17
Manager
Manager
 
Messaggi: 11788
Iscritto il: 6 ago 2004, 13:14

Prossimo

Torna a Matematica generale

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti