[Eureka] scrive in
Post by Eurekagrazie 1000
ma avrei ancora una domanda allora in verifica della polinomiale (per
capirsi la colonna più di destra del tuo foglio) nel mio caso ho
molte righe quindi vorrei optare
per scrivere direttamente l'equazione ed incollarla per tutte le righe di
cui ho bisogno
ma a questo punto sorge un problemino nel caso l'equazione sia di
grado inferiore al 7° (coefficenti mancanti) allora per risolvere il
problema basterebbe ordinare i coefficenti partendo dalla destra
7° 6° 5° 4° 3° 2° 1° cost
#N/D a3 a2 a1 a0
vediamo se ho capito...
1. leggi il precedente thread [niubbo] conta.se del 19/3/2005:
un po' di conoscenze matriciali per queste formule è
assolutamente necessario
2. considera i dati nelle celle A2:B18
la tua regressione di 4° ordine puoi definirla così:
seleziona le celle da C2 a G2 (5 celle)
premi F2 e inserisci
=REGR.LIN(B2:B18;A2:A18^{1;2;3;4}) Cntl+Maiusc+Invio
3. come si diceva nel thread a cui facevo riferimento
una formula matriciale non deve necessariamente stare
dentro le celle, può stare in una formula.
quindi posso scrivere,
nella cella C2
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});1)
Cntl+Maiusc+Invio
nella cella D2
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});2)
Cntl+Maiusc+Invio
ecc.
per ottenere lo stesso risultato
4. ora tu vorresti che questa non fosse nelle celle da C2
a G2 ma da F2 a J2 riservando la colonna C per il
settimo grado di una regressione del settimo ordine
allora dovresti avere in F2 (colonna 6)
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});1)
Cntl+Maiusc+Invio
in G2 (colonna 7)
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});2)
Cntl+Maiusc+Invio
ecc.
oppure meglio, in F2
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});rif.colonna()-5)
Cntl+Maiusc+Invio
da copiare da G2 a J2
5. quindi il problema si riduce a dover avere un indice 1
in colonna C (3) quando l'equazione è del settimo ordine
o in colonna F (6) quando l'equazione è del quarto ordine.
se in C1 hai l'ordine della regressione,
l'indice potrebbe allora essere
rif.colonna()+$C$1-9
in C2 infatti avrò 3+7-9=1 se in C1 ho 7
in F2 avrò 6+4-9=1 se in C1 ho 4
purtroppo però lo 0 ha un significato speciale
nella funzione indice, quindi bisogna rimuoverlo
allora
se(rif.colonna()+$C$1-9>0;rif.colonna()+$C$1-9;-1)
6. quindi inserisci in C2
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^{1;2;3;4});se(rif.colonna()+$C$1-9>0;rif.colonna()+$C$1-9;-1))
Cntl+Maiusc+Invio
e copialo da G2 a J2
7. a questo punto facciamo in modo che la formula si parametrizzi
per un ordine dal 2 al 7 come indicato in C1
avremo quindi
=INDICE(REGR.LIN($B$2:$B$18;$A$2:$A$18^RIF.COLONNA(SCARTO($A$1;0;0;1;$C$1)));SE(RIF.COLONNA()+$C$1-9>0;RIF.COLONNA()+$C$1-9;-1))
Cntl+Maiusc+Invio
da inserire in C2 e copiare da D2 a J2
inserendo in C1 4 o 7 o qualsiasi valore tra 2 e 7
vedrai il risultato che volevi.
perchè io abbia sostituito {1;2;3;4} con
RIF.COLONNA(SCARTO($A$1;0;0;1;$C$1))
puoi capirlo selezionando questa parte della formula
e premendo F9
8. perchè tutta questa tiritera?
perchè non so se sei in colonna C, se il massimo ordine
che intendi impostare è 7 e qual'è la struttura dei tuoi dati.
se hai seguito il ragionamento non ti sarà difficile trovare
la formula adatta alla struttura dei tuoi dati.
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it