Up ! Mathematical - Vecteur

Ce programme présente l'usage des vecteurs de matrices.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/vecteur5.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=vecteur5.upl

Commande d'exécution

vecteur5

Mode interprété

upssng Source=vecteur5.upl

Fichier source

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

Procedure EcrireVecteur(Libelle : Caractere, V : Vecteur[?] De Nul Ou Matrice[?,?] De Nul Ou Entier)
/**************************************************************************************************/
Variable
/******/
Debut
Ecran.Ecrire(Libelle);
Ecran.Ecrire("-------------");
Ligne1="[";
Ligne2=" ";
Pour I=0 JusquA V.NbDimensions-1 Faire Fin Pour
Ligne1+="]";
Ecran.Ecrire(Ligne1);
Ecran.Ecrire(Ligne2);
Fin Procedure

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

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

Fonction Appliquer3(M : Nul Ou Matrice[?,?] De Nul Ou Entier) Retourner Nul Ou Matrice[?,?] De Nul Ou Entier
/**********************************************************************************************************/
Debut
Retourner -M;
Fin Fonction
Fonction Appliquer4(M1 : Nul Ou Matrice[?,?] De Nul Ou Entier, M2 : Nul Ou Matrice[?,?] De Nul Ou Entier) Retourner Nul Ou Matrice[?,?] De Nul Ou Entier
/******************************************************************************************************************************************************/
Debut
Retourner -(M1+M2);
Fin Fonction

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

Principal
/*******/
Variable
/******/
Debut M00[0,0]=0;
M00[0,1]=1;
M00[1,0]=2;
M00[1,1]=3;

M01[0,0]=2;
M01[0,1]=3;
M01[1,0]=4;
M01[1,1]=5;

M10[0,0]=4;
M10[0,1]=5;
M10[1,0]=6;
M10[1,1]=7;

M11[0,0]=6;
M11[0,1]=7;
M11[1,0]=8;
M11[1,1]=9;

N00[0,0]=2;
N00[0,1]=3;
N00[1,0]=4;
N00[1,1]=5;

N01[0,0]=4;
N01[0,1]=5;
N01[1,0]=6;
N01[1,1]=7;

N10[0,0]=6;
N10[0,1]=7;
N10[1,0]=8;
N10[1,1]=9;

N11[0,0]=8;
N11[0,1]=9;
N11[1,0]=0;
N11[1,1]=1;

A[0]=M00;
A[1]=M01;
EcrireVecteur("A", A);
B={N00, N01};
EcrireVecteur("B", B);
Ecran.Ecrire(");

C=A+B;
EcrireVecteur("A+B", C);
C=-A;
EcrireVecteur("-A", C);
C=A-B;
N=A*B;
EcrireMatrice("A*B",N);
EcrireVecteur("A-B", C);
X=A.B;
Ecran.Ecrire("A.B={{"+Caractere(X[0,0], "-&&&.&&&.&&&.&&#")+","+Caractere(X[0,1], "-&&&.&&&.&&&.&&#")+"} ");
Ecran.Ecrire(" {"+Caractere(X[1,0], "-&&&.&&&.&&&.&&#")+","+Caractere(X[1,1], "-&&&.&&&.&&&.&&#")+"}}");
C=A.Cloner();
EcrireVecteur("++C", ++C);
EcrireVecteur("--C", --C);
C=C^4;
EcrireVecteur("C^4", C);
Ecran.Ecrire(");

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

C=A.Copier(0, 2);
EcrireVecteur("Copier()", C);
D=0;
C=D;
C.Coller(0, A);
EcrireVecteur("Coller()", C);
D[0,0]=10;
D[0,1]=11;
D[1,0]=12;
D[1,1]=13;
C=A.Inserer(1, D);
EcrireVecteur("Inserer()", C);
C=A.Supprimer(1);
EcrireVecteur("Supprimer()", C);
C=A.Copier(0, 2);
C.Permuter(0, 1);
EcrireVecteur("Permuter()", C);
Ecran.Ecrire(");

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

B={N00, N01};
M={A, B};
EcrireMatrice("M=A", M);
M={{M00, M01}, {M10, M11}};
C=M*A;
EcrireVecteur("M*A", C);
N=M.InsererColonne(1, A);
EcrireMatrice("InsererColonne()", N);
N=M.InsererLigne(1, A);
EcrireMatrice("InsererLigne()", N);
Ecran.Ecrire(");
Fin Principal

Résultat de l'exécution

A ------------- [{{0,1} ; {{2,3} ] {2,3}} {4,5}} B ------------- [{{2,3} ; {{4,5} ] {4,5}} {6,7}} A+B ------------- [{{2,4} ; {{6,8} ] {6,8}} {10,12}} -A ------------- [{{0,-1} ; {{-2,-3} ] {-2,-3}} {-4,-5}} A-B ------------- [{{-2,-2} ; {{-2,-2} ] {-2,-2}} {-2,-2}} A*B ------------- [[{{2,3} ; {{2,3} ] {6,11}} {6,11}} [{{16,21} ; {{16,21} ]] {28,37}} {28,37}} A.B={{18,24} {34,48}} ++C ------------- [{{1,2} ; {{3,4} ] {3,4}} {5,6}} --C ------------- [{{0,1} ; {{2,3} ] {2,3}} {4,5}} C^4 ------------- [{{22,39} ; {{844,1.113} ] {78,139}} {1.484,1.957}} C=2 ------------- [{{2,2} ; {{2,2} ] {2,2}} {2,2}} C+=3 ------------- [{{5,5} ; {{5,5} ] {5,5}} {5,5}} C-=3 ------------- [{{2,2} ; {{2,2} ] {2,2}} {2,2}} C*=3 ------------- [{{12,12} ; {{12,12} ] {12,12}} {12,12}} C^=4 ------------- [{{165.888,165.888} ; {{165.888,165.888} ] {165.888,165.888}} {165.888,165.888}} Copier() ------------- [{{0,1} ; {{2,3} ] {2,3}} {4,5}} Coller() ------------- [{{0,1} ; {{2,3} ] {2,3}} {4,5}} Inserer() ------------- [{{0,1} ; {{10,11} ; {{2,3} ] {2,3}} {12,13}} {4,5}} Supprimer() ------------- [{{0,1} ] {2,3}} Permuter() ------------- [{{0,1} ; {{2,3} ] {2,3}} {4,5}} Appliquer1 ---------- {{0, 1} {2, 3}} Appliquer1 ---------- {{2, 3} {4, 5}} Appliquer2 ---------- {{0+2, 1+3} {2+4, 3+5}} Appliquer2 ---------- {{2+4, 3+5} {4+6, 5+7}} Appliquer3() ------------- [{{0,-1} ; {{-2,-3} ] {-2,-3}} {-4,-5}} Appliquer4() ------------- [{{-2,-4} ; {{-6,-8} ] {-6,-8}} {-10,-12}} M=A ------------- [[{{0,1} ; {{2,3} ] {2,3}} {4,5}} [{{2,3} ; {{4,5} ]] {4,5}} {6,7}} M*A ------------- [{{18,24} ; {{50,72} ] {34,48}} {66,96}} InsererColonne() ------------- [[{{0,1} ; {{0,1} ; {{2,3} ] {2,3}} {2,3}} {4,5}} [{{4,5} ; {{2,3} ; {{6,7} ]] {6,7}} {4,5}} {8,9}} InsererLigne() ------------- [[{{0,1} ; {{2,3} ] {2,3}} {4,5}} [{{0,1} ; {{2,3} ] {2,3}} {4,5}} [{{4,5} ; {{6,7} ]] {6,7}} {8,9}}