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
Polinomiale inversa
Moderatori: Gianfranco, Bruno
Questo forum è una sezione del PORTALE DI BASE CINQUE
Polinomiale inversa
Franco
ENGINEER
noun. (en-juh-neer)
someone who does precision guesswork based on unreliable data provided by those of questionable knowledge.
See also wizard, magician
ENGINEER
noun. (en-juh-neer)
someone who does precision guesswork based on unreliable data provided by those of questionable knowledge.
See also wizard, magician
Re: Polinomiale inversa
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à...
$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à...
il panurgo
Principio di Relatività: $\mathbb{m} \not \to \mathbb{M} \, \Longleftrightarrow \, \mathbb{M} \not \to \mathbb{m}$
"Se la montagna non va a Maometto, Maometto NON va alla montagna"
Principio di Relatività: $\mathbb{m} \not \to \mathbb{M} \, \Longleftrightarrow \, \mathbb{M} \not \to \mathbb{m}$
"Se la montagna non va a Maometto, Maometto NON va alla montagna"
-
- Supervisore del sito
- Messaggi: 1729
- Iscritto il: ven mag 20, 2005 9:51 pm
- Località: Sestri Levante
- Contatta:
Re: Polinomiale inversa
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.
Pace e bene a tutti.
Gianfranco
Gianfranco
Re: Polinomiale inversa
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
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
Grazie mille.Info ha scritto:puoi usare il metodo di Newton Rhapson.... mi ricordo l'avevo fatto a scuola
...
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
In più, ho avuto anche l'opportunità di rinfrescare la memoria sul visual basic con l'applicazione di un ciclo "DO WHILE - LOOP".
ciao
Franco
ENGINEER
noun. (en-juh-neer)
someone who does precision guesswork based on unreliable data provided by those of questionable knowledge.
See also wizard, magician
ENGINEER
noun. (en-juh-neer)
someone who does precision guesswork based on unreliable data provided by those of questionable knowledge.
See also wizard, magician
Re: Polinomiale inversa
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
!'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
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 "x =";m
print "verifica: fx =";fx
END
_________________
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)