Ho una serie di coppie di dati (x;y) che ho inserito in un grafico.
(per la precisione un grafico a dispersione con i punti uniti tramite
una linea, quindi una spezzata).
Ho cliccato col tasto dx sulla spezzata e dal menù ho scelto
"Aggiungi linea di tendenza..."
Quindi ho scelto il tipo polinomiale di secondo grado e ho visto che tale
curva approssima molto bene la mia spezzata.
Excel ,ovviamente, "conosce" la curva (cioè la linea di tendenza)
infatti si puo' far comparire sul grafico l' equazione della stessa
spuntando
"Visualizza l' equazione sul grafico" dalla scheda Opzioni.
Ho la necessità di far comparire i termini A, B, C, dell' equazione
( y = A x^2 + B x + C ) in tre celle distinte di Excel senza doverle
trascrivere
ogni volta manualmente.
In particolare voglio trovare il punto di intersezione tra la curva e
una retta vertcale cioè di equazione x = D (con D numero variabile
da me scelto).
Il problema è :
1. Introdoto il numero D in una cella , *tirare fuori* l'ordinata di
intersezione ( = yD)
oppure, se questo non è possibile per Excel,
2. Far comparire i termini A, B, C, dell' equazione ( y = A x^2 + B x +
C ) in tre celle distinte di Excel.
Spero di essere stato chiaro.
Grazie.
prova a guardarti questa funzione che metterai in un modulo dovrebbe servire
per ricavare i 3 coefficienti:
Sub GetCoeffLineaDiTendenza()
Dim graph As ChartObject
Dim linea As String
Dim ABC
Set graph = Worksheets("Foglio1").ChartObjects(1)
linea = graph.Chart.SeriesCollection(1).Trendlines(1).DataLabel.Text
linea = Mid(linea, 4)
ABC = Split(linea, "+", 3)
Worksheets("Foglio1").Range("D1") = IIf(Len(Replace(Trim(ABC(0)), "x2",
"")) = 0, 1, Replace(ABC(0), "x2", ""))
Worksheets("Foglio1").Range("E1") = IIf(Len(Replace(Trim(ABC(1)), "x",
"")) = 0, 1, Replace(ABC(1), "x", ""))
Worksheets("Foglio1").Range("F1") = IIf(Len(Trim(ABC(2))) = 0, 0,
ABC(2))
End Sub
Funziona con polinomi di 2° grado ma con qualche miglioria può essere resa
indipendente.
Una volta ottenuti i coefficienti trovare l'intersezione è un gioco da
ragazzi....
Saluti
Cinzia
i parametri:
=REGR.LIN(y;x^{1;2})
dove y e x sono i rispettivi range
la formula va inserita in tre celle orizzontali
(selezionare tre celle, premere F2, inserire la formula
e inviare con Cntl+Maiusc+Invio]
> In particolare voglio trovare il punto di intersezione tra la curva e
> una retta vertcale cioč di equazione x = D (con D numero variabile
> da me scelto).
in tal modo otterrai i tre parametri A, B e C.
quindi dato x
y sarŕ =A*x^2+B*x+C
ti ho predisposto un esempio:
http://www.prodomosua.it/zips/proohsen.xls
vedi anche:
http://groups.google.it/groups?q=cinquegrani%20coefficienti&hl=it&lr=&c2coff=1&rls=GGLD,GGLD:2004-46,GGLD:en&sa=N&tab=wg
e il file
http://www.prodomosua.it/zips/coefficienti.xls
da http://www.prodomosua.it/ppage05.html
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it
> > Ho la necessità di far comparire i termini A, B, C, dell' equazione
> > ( y = A x^2 + B x + C ) in tre celle distinte di Excel senza doverle
> > trascrivere
> > ogni volta manualmente.
>
> i parametri:
> =REGR.LIN(y;x^{1;2})
Ciao Fer,
ma quanto VBA avrò mai scritto per niente!
Bisogna assolutamente che intensifichi le lezioni di Excel.
Cinzia
Grazie Cinzia
un po' di codice fa sempre comodo per imparare cose nuove ,
Ciao.
ti chiederei di verificarne prima i risultati con la formula:
il separatore puň essere - (meno) e non sempre + (piů);
il separatore decimale puň non essere correttamente interpretato
(dipende dalle impostazion internazionali);
c'č un problema di approssimazione...
.f
Grazie Cinzia
un po' di codice fa sempre comodo per imparare cose nuove ,
Ciao.
dimenticavo di dire però che anche il calcolo con le formule
non è esente da errori:
http://groups-beta.google.com/group/microsoft.public.excel.worksheet.functions/msg/d6a03470e7a1c650
.f
oops!
ovviamente intendevo 2,299999999 :-)
vedi anche http://www.prodomosua.it/zips/poly.xls
.f
posso determinare il numero dei decimali con
clic destro :: formato etichette dati
tuttavia impostando qui il formato generale
vengono restituiti solo quattro decimali e
non tutti i decimali significativi come nel foglio
di lavoro. aumentando il numero dei decimali
rischio di leggere un 2,3 come 2,9999999999...
.f