Up ! Mathematical - Matrice

Ce programme présente l'usage des matrices d'entiers.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/matrice4.upl.

Cet exemple utilise les instructions de l'extension d'Up ! 5GL pour Up ! Mathematical.

Pour analyser le fichier source, UpsMat.upi doit être déclaré parmi les modules importés dans le fichier ${UPS_HOME}/ini/${UPS_USER}/upsp5l.ini.

Mode compilé

Commande de compilation

upscmp Source=matrice4.upl

Commande d'exécution

matrice4

Mode interprété

upssng Source=matrice4.upl

Fichier source

Source Composant "Exemple d'emploi du type Matrice" Version 4.0.0;

Procedure EcrireMatrice(Libelle : Caractere, M : Matrice[?,?] De Nul Ou Entier)
/*****************************************************************************/
Variable
/******/
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Pour I=0 JusquA M.NbLignes-1 Faire Fin Pour
Fin Procedure

Procedure Appliquer1(E : Nul Ou Entier)
/*************************************/
Debut Ecran.Ecrire(Caractere(E, "-&&&.&&&.&&&.&&#"));
Fin Procedure

Procedure Appliquer2(E1 : Nul Ou Entier, E2 : Nul Ou Entier)
/**********************************************************/
Debut
Ecran.Ecrire(Caractere(E1, "-&&&.&&&.&&&.&&#")+"+"+Caractere(E2, "-&&&.&&&.&&&.&&#"));
Fin Procedure

Fonction Appliquer3(E : Nul Ou Entier) Retourner Nul Ou Entier
/************************************************************/
Debut
Retourner -E;
Fin Fonction

Fonction Appliquer4(E1 : Nul Ou Entier, E2 : Nul Ou Entier) Retourner Nul Ou Entier
/*********************************************************************************/
Debut
Retourner -(E1+E2);
Fin Fonction

Principal
/*******/
Variable
/******/
Debut
A[0,0]=1;
A[0,1]=2;
A[0,2]=3;
A[1,0]=4;
A[1,1]=6;
A[1,2]=5;
A[2,0]=7;
A[2,1]=8;
A[2,2]=9;
EcrireMatrice("A", A);
B={{4, 5, 6}, {7, 8, 9}, {1, 2, 3}};
EcrireMatrice("B", B);
Ecran.Ecrire(");

C=A+B;
EcrireMatrice("A+B", C);
C=-A;
EcrireMatrice("-A", C);
C=A-B;
EcrireMatrice("A-B", C);
C=A*B;
EcrireMatrice("A*B", C);
C=A.Cloner();
EcrireMatrice("++C", ++C);
EcrireMatrice("--C", --C);
C=C^4;
EcrireMatrice("C^4", C);
Ecran.Ecrire(");

C=2;
EcrireMatrice("C=2", C);
C+=3;
EcrireMatrice("C+=3", C);
C-=3;
EcrireMatrice("C-=3", C);
C*=3;
EcrireMatrice("C*=3", C);
C/=3;
EcrireMatrice("C/=3", C);
C^=4;
EcrireMatrice("C^=4", C);
Ecran.Ecrire(");

C=A.Copier(0, 0, 3, 3);
EcrireMatrice("Copier()", C);
C=0;
C.Coller(0, 0, A);
EcrireMatrice("Coller()", C);
C=A.InsererColonne(1, 10);
EcrireMatrice("InsererColonne()", C);
C=A.InsererLigne(1, 10);
EcrireMatrice("InsererLigne()", C);
C=A.SupprimerColonne(1);
EcrireMatrice("SupprimerColonne()", C);
C=A.SupprimerLigne(1);
EcrireMatrice("SupprimerLigne()", C);
C=A.Copier(0, 0, 3, 3);
C.PermuterColonnes(0, 2);
EcrireMatrice("PermuterColonnes()", C);
C=A.Copier(0, 0, 3, 3);
C.PermuterLignes(0, 2);
EcrireMatrice("PermuterLignes()", C);
C=A.Copier(0, 0, 3, 3);
C.Transposer();
EcrireMatrice("Transposer()", C);
C=A.Copier(0, 0, 3, 3);
C.AppliquerSymetrieVerticale();
EcrireMatrice("AppliquerSymetrieVerticale()", C);
C=A.Copier(0, 0, 3, 3);
C.AppliquerSymetrieHorizontale();
EcrireMatrice("AppliquerSymetrieHorizontale()", C);
Si C.EstDiagonale() Alors Sinon Fin Si
Si C.EstTriangulaireSuperieure() Alors Sinon Fin Si
Si C.EstTriangulaireInferieure() Alors Sinon Fin Si
Si C.EstSymetrique() Alors Sinon Fin Si
Si C.EstAntiSymetrique() Alors Sinon Fin Si
Ecran.Ecrire(");

A.Appliquer(Appliquer1);
A.Appliquer(Appliquer2, B);
C=A.Appliquer(Appliquer3);
EcrireMatrice("Appliquer3()", C);
C=A.Appliquer(Appliquer4, B);
EcrireMatrice("Appliquer4()", C);
Ecran.Ecrire(");

X=Entier(Trc(A));
Ecran.Ecrire("Trc(A)="+Caractere(X, "-&&&.&&&.&&&.&&#"));
Ecran.Ecrire(");
Fin Principal

Résultat de l'exécution

A ------------- {{1, 2, 3} {4, 6, 5} {7, 8, 9}} B ------------- {{4, 5, 6} {7, 8, 9} {1, 2, 3}} A+B ------------- {{5, 7, 9} {11, 14, 14} {8, 10, 12}} -A ------------- {{-1, -2, -3} {-4, -6, -5} {-7, -8, -9}} A-B ------------- {{-3, -3, -3} {-3, -2, -4} {6, 6, 6}} A*B ------------- {{21, 27, 33} {63, 78, 93} {93, 117, 141}} ++C ------------- {{2, 3, 4} {5, 7, 6} {8, 9, 10}} --C ------------- {{1, 2, 3} {4, 6, 5} {7, 8, 9}} C^4 ------------- {{7.374, 9.692, 10.186} {16.056, 21.108, 22.182} {25.986, 34.160, 35.902}} C=2 ------------- {{2, 2, 2} {2, 2, 2} {2, 2, 2}} C+=3 ------------- {{5, 5, 5} {5, 5, 5} {5, 5, 5}} C-=3 ------------- {{2, 2, 2} {2, 2, 2} {2, 2, 2}} C*=3 ------------- {{6, 6, 6} {6, 6, 6} {6, 6, 6}} C/=3 ------------- {{2, 2, 2} {2, 2, 2} {2, 2, 2}} C^=4 ------------- {{432, 432, 432} {432, 432, 432} {432, 432, 432}} Copier() ------------- {{1, 2, 3} {4, 6, 5} {7, 8, 9}} Coller() ------------- {{1, 2, 3} {4, 6, 5} {7, 8, 9}} InsererColonne() ------------- {{1, 0, 2, 3} {4, 10, 6, 5} {7, 0, 8, 9}} InsererLigne() ------------- {{1, 2, 3} {0, 10, 0} {4, 6, 5} {7, 8, 9}} SupprimerColonne() ------------- {{1, 3} {4, 5} {7, 9}} SupprimerLigne() ------------- {{1, 2, 3} {7, 8, 9}} PermuterColonnes() ------------- {{3, 2, 1} {5, 6, 4} {9, 8, 7}} PermuterLignes() ------------- {{7, 8, 9} {4, 6, 5} {1, 2, 3}} Transposer() ------------- {{1, 4, 7} {2, 6, 8} {3, 5, 9}} AppliquerSymetrieVerticale() ------------- {{3, 2, 1} {5, 6, 4} {9, 8, 7}} AppliquerSymetrieHorizontale() ------------- {{7, 8, 9} {4, 6, 5} {1, 2, 3}} Non EstDiagonale Non EstTriangulaireSuperieure Non EstTriangulaireInferieure Non EstSymetrique Non EstAntiSymetrique 1 2 3 4 6 5 7 8 9 1+4 2+5 3+6 4+7 6+8 5+9 7+1 8+2 9+3 Appliquer3() ------------- {{-1, -2, -3} {-4, -6, -5} {-7, -8, -9}} Appliquer4() ------------- {{-5, -7, -9} {-11, -14, -14} {-8, -10, -12}} Trc(A)=16