Re: ricerca radici di polinomio di grado qualsiasi (anche non intersecante,
ma solo tangente, l'asse X)
Il 31/12/2012 15:37, Tommaso Russo, Trieste ha scritto:
> Il 17/12/2012 18:30, Soviet_Mario ha scritto:
>> Il 12/12/2012 01:39, Tommaso Russo, Trieste ha scritto:
RICUT
>
> Dunque, cerco di rispiegare meglio....
>
> [CUT vari tentativi]
>
> niente da fare, un algoritmo e' piu facile scriverlo che DEscriverlo.
>
> Ho avuto un po' di tempi morti durante le feste e ho buttato giu' la
> routine.
>
> Te la allego e descrivo in un altro post.
>
>>> (suggerimento: per calcolare
>>> i valori dei polinomi usare l'algoritmo di Horner, o almeno conservare
>>> x^n per il calcolo di x^(n+1), il che rispetto ad Horner si limita a
>>> raddoppiare il tempo necessario).
>>
>> Sin al fatto di generare iterativamente la potenza pian piano c'ero
>> arrivato per intuizione, ma non ad inglobare la costante del grado
>> inferiore ad ogni step ! Che figata ... grazie della segnalazione !
>
> Attenzione pero', non innamorarti di un metodo elegante quando non ne
> hai bisogno! L'algoritmo che salva ad ogni passo x^n-1 per usarlo nel
> calcolo di x^n:
accidenti ... che dire, sono commosso !
>
> function poly(N,coeff,x)
> dimension coeff(0:N)
> poly = coeff(0)
> xpower = 1.
> do i = 1,N
> xpower = xpower * x
> poly = poly + coeff(i)*xpower
> end do
> return
> end
>
> rispetto all'algoritmo di Horner,
no, quello l'avevo implementato bene :-)
Capisco spesso malissimo quando mi scrivono le cose in
simboli matematici, ma quando vedo poi del codice
"imperativo", allora spesso mi si chiariscono le idee (se �
ben scritto ovviamente)
>fa il doppio di moltiplicazioni; ma la
> sua correttezza (almeno nel limite della rappresentabilita' dei
> risultati intermedi) risulta evidente a prima vista. In un programma
> come quello che ti serve, il calcolo dei polinomi richiede si' e no 10
> ms di cpu: se per ridurli a 5 ti incasini con la scrittura di un
> algoritmo meno evidente, rischi di perdere molto piu' tempo, in debug,
> di quello che guadagnerai in tutta la vita. Ricordati i suggerimenti di
> "The elements of programming style" di Kernighan e Plauger
>
> * "MAKE IT RIGHT BEFORE YOU MAKE IT FASTER"
> * "KEEP IT RIGHT BEFORE YOU MAKE IT FASTER"
> * "MAKE IT CLEAR BEFORE YOU MAKE IT FASTER"
> * "DON'T SACRIFICE CLEARITY FOR SMALL GAINS IN 'EFFICENCY'"
Anche Stroustroup ne aveva una sua variante !
Make it work before you make it faster,
and keep it work while you make it faster
>
> L'algoritmo di Horner lascialo a chi deve calcolare polinomi per 48 ore:
> a lui si' che vale la pena di lavorare con un po' di attenzione ridurre
> il tempo di esecuzione a 24.
ma no, era una cosa semplice in realt�.
L'avevo visto spiegato benissimo su wiki con un'espressione
annidata.
>
>
>> P.S. non so se alla fine lo far�, perch� in fondo � uno sfizio, e non so
>> manco se e quanto ti possa interessare (presumo una epsilon piccola a
>> piacere), ma quando/se far� funzionare al meglio questo programma
>> "didattico" di risoluzione di multi equilibri, vorrei vedere se per caso
>> su "Chimica nella Scuola" accettano software oltre ad articoli di solo
>> testo, e se si, ovviamente ti citerei volentieri come coautore e
>> consulente matematico.
>
> Ma figurati, per un suggerimento sul metodo? In questi casi si usa al
> piu' un ringraziamento...
Mah ... a me non costerebbe niente. Cmq ho visitato il sito
di CnS e non ho trovato nessuna sezione dedicata al software
... anzi, non ho trovato ancora nessuna risorsa pubblica
italiana dedicata al software didattico di indirizzo chimico.
Sono un po' perplesso. Lo distribuir� su feisbuk agli
studenti che lo vogliono e stop, a questo punto.
>
>> Ma non sono sicurissimo di perdere interesse (gi� scarso) a questo
>> aspetto. Tutto sommato vorrei solo uno strumento di risoluzione
>> simultanea, per valutare rapidamente in vari contesti una miriade di
>> formule approssimate che usiamo per trattare gli equilibri.
>
> Ma allora ti chiederei di fare qualche prova con la routine che ti mando
> a parte, tanto per verificare di non esserti fasciato la testa per
> niente... se poi invece effettivamente P(x) e' molto malcondizionato, ne
> riparliamo.
Come spero di essermi spiegato, ho totalmente cambiato
strategia, e vista la natura totalmente mutevole di ciascun
polinomio, alla fine proprio non ricerco pi� radici singole,
ma solo una convergenza complessiva del sistema.
Su cui continuo ad interrogarmi come mai, matematicamente,
si verifichi questa "coalescenza" di gruppo ad un'unica
situazione stabile. E' intrigante. E succede sempre. Solo
nel transitorio ci sono alcune bizze (Che sicuramente per�
sono artefatti software dovuti alla granularit� grossolana
degli incrementi, nel sistema chimico reale non mi
aspetterei pi� scavalcamenti delle curve ... salvo che nei
sistemi oscillanti, ma per altre ragioni).
Diciamo che il mio multi-equilibrium solver si sta occupando
solo di termodinamica e trascura la cinetica (invece le
reazioni oscillanti nascono anche da quella).
Avevo anche scritto un modulo "cinetico", che pure
convergeva, ed era anche meno laborioso.
E' un po' che non lo riguardo.
riciao
Soviet
>
> Ciao
>
>
--
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
Received on Wed Jan 02 2013 - 15:54:53 CET
This archive was generated by hypermail 2.3.0
: Sat Jan 04 2025 - 04:23:43 CET