Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

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

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User: Nuovo
Pass: Accedi

Utenti Registrati

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.8.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
265 utenti registrati

Pagina servita il 23/11/17 alle 21:49:11 Valid HTML 4.01! Valid CSS!

Mutuo Facile, Serie Filmcards, Serie Singloids e altre app di Nexus srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per Apple iPhone, iPod, iPad della IPC