Pagina 1 di 1

Polinomiale inversa

Inviato: dom mag 22, 2016 9:36 pm
da franco
Ciao a tutti.

Sul lavoro mi trovo un problema che vorrei risolvere.

Ho due grandezze (X e Y) legate da questa formula:

Y = aX + bX^2 + cX^3 + dX^4 + eX^5

Tutto facile quando è noto X e devo trovare Y, molto meno se conosco Y e devo trovare X.

Ci arrivo per approssimazioni successive con una semplice routine in basic ma mi piacerebbe poter dare una formula ai colleghi.

Mi date una mano?


Ciao

Re: Polinomiale inversa

Inviato: lun mag 23, 2016 7:09 pm
da panurgo
Se $Y$ è noto possiamo indicarlo come $Y=-f$ quindi quella che tu vuoi è la formula risolutiva (generale) dell'equazione

$a X + b X^2 + c X^3 + d X^4 + e X^5 + f = 0$

Confesso che va al di là delle mie capacità... :cry:

Re: Polinomiale inversa

Inviato: lun mag 23, 2016 9:40 pm
da Gianfranco
Risposta banale: se ti servono soltanto le soluzioni numeriche puoi usare i classici metodi per trovare gli zeri di una funzione o più semplicemente dare l'equazione in pasto a un software di calcolo algebrico, tipo Maxima.

Re: Polinomiale inversa

Inviato: mar mag 24, 2016 12:05 am
da Info
puoi usare il metodo di Newton Rhapson.... mi ricordo l'avevo fatto a scuola

parti da una soluzione plausibile della tua polinomiale cosi` puoi avvicinarti velocemente :-)
per quello non hai problemi a fare la derivata di una polinomiale e il metodo converge velocemente verso la soluzione.

Non ci sono soluzioni precise a meno di non trovare delle soluzioni o tue o con il metodo specificato e ridurre di grado la polinomiale dividendo per l' (x+n) dove n e`la soluzione, fino ad arrivare ad un secondo grado del quale utilizzi la formula quadratica classica

$x_{1/2}=\frac{-b\pm\sqr{b^2-4\cdot a\cdot c}}{2\cdot a}$

dove le lettere alfabetiche sono i coefficenti della tua equazione cosi`trovata

Re: Polinomiale inversa

Inviato: mer mag 25, 2016 8:47 am
da franco
Info ha scritto:puoi usare il metodo di Newton Rhapson.... mi ricordo l'avevo fatto a scuola
...
Grazie mille.

Non conoscevo questo metodo, estremamente elegante e facilissimo da applicare su una funzione polinomiale dove il calcolo della derivata è banale.
Ho realizzato una macro per automatizzarlo (la soluzione precisa al terzo decimale arriva in una frazione di secondo) e guadagnato un sacco di "like" dai colleghi :D
In più, ho avuto anche l'opportunità di rinfrescare la memoria sul visual basic con l'applicazione di un ciclo "DO WHILE - LOOP".


ciao

Re: Polinomiale inversa

Inviato: mar mag 31, 2016 7:25 pm
da Pasquale
per gli appassionati del Decimal Basic, esempio di un migliorabile algoritmo di calcolo con approssimazione alla 5^cifra decimale, che mostra una serie di valori per la x, i quali determinano per f(x) valori sempre più vicini a quello già noto della y:

!'Predisporre per la doppia precisione
!'Come esempi, inserire i seguenti valori, separati da virgole:
!' 1,-15,95,-225,274,220 oppure: 1,-15,95,-225,274,390 oppure: 1,2,3,4,5,6
!'attendere un po' di secondi dopo il primo stop, per un risultato leggermente tardivo, ma approssimato alla 5^ cifra decimale

INPUT PROMPT "inserisci i valori di e,d,c,b,a,y -->":e,d,c,b,a,y
PRINT
LET difmin=1/100000
LET mi=y*1000
LET p=0
LET q=y
LET i=y/10000

LET es=0
do
LET es=es+1
FOR x= p TO q step i
LET fx= e*x^5+d*x^4+c*x^3+b*x^2+a*x
LET dif=ABS(fx-y)
IF dif<mi THEN
LET mi=dif
LET m=x
PRINT "x =";m;" fx =";INT(fx*100000)/100000
ELSEIF dif=0 THEN
GOTO 50
end if
next X

if (y-m)<m then
LET p=2*m-y
LET q=y
else
LET p=0
LET q=2*m
end if
LET i=(q-p)/10^es
loop while dif > difmin

50
print
Print "x =";m
print "verifica: fx =";fx

END