Titolo: Calcolo Coefficienti Sistema lineare di 3 equazioni
Categoria: Codice |
|
Ultimo Aggiornamento: 15/01/06 |
Informazioni sull'utilizzo del seguente metodo è spiegato nella faq
Calcolo della linea di tendenza polinomiale in un grafico ` Method_CalcoloCoefficienti
` Roberto Vergani Luglio 2002
` Regressione Polinomiale
` equazione normale della parabola dei minimi quadrati.
` Sistema lineare di 3 equazioni nelle incognite A, B e C
` Calcolo dei coefficienti
C_INTEGER($X;$elementi)
C_REAL($somma_X;$somma_Y;$sommaQuadrati_X;$sommaCubo_X;$sommaQuarta_X;$somma_XY;$somma_QuadratoX_Y)
C_REAL($determinante_A;$determinante_A1;$determinante_A2;$determinante_A3)
C_REAL($elementi;$costante_A;$costante_B;$costante_C)
C_POINTER($1)
C_REAL(vReal_Coefficiente_A;vReal_Coefficiente_B;vReal_Coefficiente_C)
C_INTEGER(
$elementi:=Size of array($1->)
$somma_X:=0
$somma_Y:=0
$sommaQuadrati_X:=0
$sommaCubo_X:=0
$sommaQuarta_X:=0
$somma_XY:=0
$somma_QuadratoX_Y:=0
For ($X;1;$elementi)
$somma_X:=$somma_X+$X
$somma_Y:=$somma_Y+($1->{$X})
$sommaQuadrati_X:=$sommaQuadrati_X+($X^2)
$sommaCubo_X:=$sommaCubo_X+($X^3)
$sommaQuarta_X:=$sommaQuarta_X+($X^4)
$somma_XY:=$somma_XY+($X*($1->{$X}))
$somma_QuadratoX_Y:=$somma_QuadratoX_Y+(($X^2)*($1->{$X}))
End for ` soluzione con il metodo di Cramer
` descrizione del sistema
` Σ_Quarta_X*a + Σ_Cubo_X*b + Σ_Quadrati_X*c = Σ_QuadratoX_Y
` Σ_Cubo_X*a + Σ_Quadrati_X*b + Σ_X*c = ?__XY
` Σ_Quadrati_X*a + Σ__X*b + $elementi*c = ?__Y
` ==== MATRICE DEI COEFFICIENTI
` Tabella mnemorica della matrice
` {1}{1} {1}{2} {1}{3}
` {2}{1} {2}{2} {2}{3}
` {3}{1} {3}{2} {3}{3}
ARRAY REAL($matrice;3;3) ` matrice quadrata di ordine tre (allocata come vettore di reali bidimensionale)
$matrice{1}{1}:=$sommaQuarta_X
$matrice{1}{2}:=$sommaCubo_X
$matrice{1}{3}:=$sommaQuadrati_X
$matrice{2}{1}:=$sommaCubo_X
$matrice{2}{2}:=$sommaQuadrati_X
$matrice{2}{3}:=$somma_X
$matrice{3}{1}:=$sommaQuadrati_X
$matrice{3}{2}:=$somma_X
$matrice{3}{3}:=$elementi
` CALCOLO DETERMINANTE DI A (non uso un loop per maggiore leggibilità)
` diagonali discendenti
$determinante_A:=$matrice{1}{1}*$matrice{2}{2}*$matrice{3}{3}
$determinante_A:=$determinante_A+($matrice{1}{2}*$matrice{2}{3}*$matrice{3}{1})
$determinante_A:=$determinante_A+($matrice{1}{3}*$matrice{2}{1}*$matrice{3}{2})
` diagonali ascendenti
$determinante_A:=$determinante_A-($matrice{3}{1}*$matrice{2}{2}*$matrice{1}{3})
$determinante_A:=$determinante_A-($matrice{3}{2}*$matrice{2}{3}*$matrice{1}{1})
$determinante_A:=$determinante_A-($matrice{3}{3}*$matrice{2}{1}*$matrice{1}{2})
If ($determinante_A#0) ` altrimenti il sistema è incompatibile o non determinato
` Sostituzione della colonna 1 con i termini noti dell'equazione
$matrice{1}{1}:=$somma_QuadratoX_Y
$matrice{2}{1}:=$somma_XY
$matrice{3}{1}:=$somma_Y
` CALCOLO DETERMINANTE DI A1
` diagonali discendenti
$determinante_A1:=$matrice{1}{1}*$matrice{2}{2}*$matrice{3}{3}
$determinante_A1:=$determinante_A1+($matrice{1}{2}*$matrice{2}{3}*$matrice{3}{1})
$determinante_A1:=$determinante_A1+($matrice{1}{3}*$matrice{2}{1}*$matrice{3}{2})
` diagonali ascendenti
$determinante_A1:=$determinante_A1-($matrice{3}{1}*$matrice{2}{2}*$matrice{1}{3})
$determinante_A1:=$determinante_A1-($matrice{3}{2}*$matrice{2}{3}*$matrice{1}{1})
$determinante_A1:=$determinante_A1-($matrice{3}{3}*$matrice{2}{1}*$matrice{1}{2})
` Sostituzione della colonna 2 con i termini noti dell'equazione
` (previo ripristino della colonna 1 ai valori della Matrice A)
$matrice{1}{1}:=$sommaQuarta_X
$matrice{2}{1}:=$sommaCubo_X
$matrice{3}{1}:=$sommaQuadrati_X
$matrice{1}{2}:=$somma_QuadratoX_Y
$matrice{2}{2}:=$somma_XY
$matrice{3}{2}:=$somma_Y
` CALCOLO DETERMINANTE DI A2
` diagonali discendenti
$determinante_A2:=$matrice{1}{1}*$matrice{2}{2}*$matrice{3}{3}
$determinante_A2:=$determinante_A2+($matrice{1}{2}*$matrice{2}{3}*$matrice{3}{1})
$determinante_A2:=$determinante_A2+($matrice{1}{3}*$matrice{2}{1}*$matrice{3}{2})
` diagonali ascendenti
$determinante_A2:=$determinante_A2-($matrice{3}{1}*$matrice{2}{2}*$matrice{1}{3})
$determinante_A2:=$determinante_A2-($matrice{3}{2}*$matrice{2}{3}*$matrice{1}{1})
$determinante_A2:=$determinante_A2-($matrice{3}{3}*$matrice{2}{1}*$matrice{1}{2})
` Sostituzione della colonna 3 con i termini noti dell'equazione
` (previo ripristino della colonna 2 ai valori della Matrice A)
$matrice{1}{2}:=$sommaCubo_X
$matrice{2}{2}:=$sommaQuadrati_X
$matrice{3}{2}:=$somma_X
$matrice{1}{3}:=$somma_QuadratoX_Y
$matrice{2}{3}:=$somma_XY
$matrice{3}{3}:=$somma_Y
` CALCOLO DETERMINANTE DI A3
` diagonali discendenti
$determinante_A3:=$matrice{1}{1}*$matrice{2}{2}*$matrice{3}{3}
$determinante_A3:=$determinante_A3+($matrice{1}{2}*$matrice{2}{3}*$matrice{3}{1})
$determinante_A3:=$determinante_A3+($matrice{1}{3}*$matrice{2}{1}*$matrice{3}{2})
` diagonali ascendenti
$determinante_A3:=$determinante_A3-($matrice{3}{1}*$matrice{2}{2}*$matrice{1}{3})
$determinante_A3:=$determinante_A3-($matrice{3}{2}*$matrice{2}{3}*$matrice{1}{1})
$determinante_A3:=$determinante_A3-($matrice{3}{3}*$matrice{2}{1}*$matrice{1}{2})
` terna soluzione
vReal_Coefficiente_A:=$determinante_A1/$determinante_A
vReal_Coefficiente_B:=$determinante_A2/$determinante_A
vReal_Coefficiente_C:=$determinante_A3/$determinante_A
Else vReal_Coefficiente_A:=0
vReal_Coefficiente_B:=0
vReal_Coefficiente_C:=0
End if
Inviato da: Roberto Vergani |
|
Visite: 16752 |
Se accedi con utente e password, puoi aggiungere dei commenti.