Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linea di tendenza

1,541 views
Skip to first unread message

Ohsen

unread,
Apr 7, 2005, 6:38:28 AM4/7/05
to
Salve,

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.

Cinzia

unread,
Apr 8, 2005, 4:42:04 AM4/8/05
to

"Ohsen" <ohsentime(nospam)@virgilio.it> ha scritto nel messaggio
news:E485e.1189763$35.43...@news4.tin.it...
Ciao Ohsen,

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

fernando cinquegrani

unread,
Apr 8, 2005, 2:32:02 PM4/8/05
to
[Ohsen] scrive in
http://www.google.it/groups?selm=E485e.1189763$35.43...@news4.tin.it

> 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.

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

Cinzia

unread,
Apr 8, 2005, 3:07:44 PM4/8/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:uTk9FlGP...@TK2MSFTNGP12.phx.gbl...

> [Ohsen] scrive in
> http://www.google.it/groups?selm=E485e.1189763$35.43...@news4.tin.it
> > 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.
>
> 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

Cinzia

unread,
Apr 8, 2005, 3:12:31 PM4/8/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:uTk9FlGP...@TK2MSFTNGP12.phx.gbl...

> > 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


h s e n t i m e @virgilio.it Ohsen

unread,
Apr 11, 2005, 3:49:44 AM4/11/05
to
> > Ho una serie di coppie di dati (x;y) che ho inserito in un grafico.
.........................

> > 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.
............................

Grazie Cinzia
un po' di codice fa sempre comodo per imparare cose nuove ,
Ciao.

fernando cinquegrani

unread,
Apr 11, 2005, 4:11:42 AM4/11/05
to
[Ohsen] scrive in
http://www.google.it/groups?selm=u_p6e.1211972$35.44...@news4.tin.it

> un po' di codice fa sempre comodo per imparare cose nuove ,

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

h s e n t i m e @virgilio.it Ohsen

unread,
Apr 11, 2005, 3:49:46 AM4/11/05
to
> > Ho una serie di coppie di dati (x;y) che ho inserito in un grafico.
.........................

> > 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.
............................

Grazie Cinzia


un po' di codice fa sempre comodo per imparare cose nuove ,

Ciao.

Cinzia

unread,
Apr 11, 2005, 5:17:40 AM4/11/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:O5ogd4mP...@TK2MSFTNGP15.phx.gbl...
Giusto Fer,
avevo voluto semplificare la funzione che usavo in origine, usando la
Split, ma giustamente potrebbe esserci anche un meno e non solo il piů per
cui cosě come l'ho scritta non va bene....
A questo punto la funzione che estrae i coefficienti diventerebbe
abbastanza complicata e vista la tua soluzione, la mia splitstring
originale non la posto neanche (inutile complicarsi la vita quando Excel
mette a disposizione quel che serve...)
Non mi č chiaro perň il problema dell'approssimazione, forse dipende dal
fatto che l'eq. visualizzata non espone tutti i decimali?
Ciao
Cinzia


fernando cinquegrani

unread,
Apr 11, 2005, 5:56:54 AM4/11/05
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?selm=eOp7lrn...@TK2MSFTNGP15.phx.gbl
> oops!
> ovviamente intendevo 2,299999999 :-)
> vedi anche http://www.prodomosua.it/zips/poly.xls

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


fernando cinquegrani

unread,
Apr 11, 2005, 5:43:15 AM4/11/05
to
[fernando cinquegrani] scrive in
http://www.google.it/groups?selm=urejTonP...@tk2msftngp13.phx.gbl
> 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...

oops!
ovviamente intendevo 2,299999999 :-)
vedi anche http://www.prodomosua.it/zips/poly.xls

.f


fernando cinquegrani

unread,
Apr 11, 2005, 5:37:17 AM4/11/05
to
[Cinzia] scrive in
http://www.google.it/groups?selm=ODETmbnP...@tk2msftngp13.phx.gbl

> avevo voluto semplificare la funzione che usavo in origine, usando
> la Split, ma giustamente potrebbe esserci anche un meno e non solo
> il più per cui così come l'ho scritta non va bene....

> A questo punto la funzione che estrae i coefficienti diventerebbe
> abbastanza complicata e vista la tua soluzione, la mia splitstring
> originale non la posto neanche (inutile complicarsi la vita quando
> Excel mette a disposizione quel che serve...)
> Non mi è chiaro però il problema dell'approssimazione, forse dipende

> dal fatto che l'eq. visualizzata non espone tutti i decimali?

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


0 new messages