« C pointeurs/Tableau matrices complexes » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Page blanchie
Ligne 1 :
{{Chapitre
| niveau = 14
| idfaculté = informatique
| numéro = 13
| précédent = [[../Matrices complexes 3/]]
| suivant = [[../Matrices fractions/]]
}}
 
 
== Introduction ==
 
* Pour approfondir ce travail : "[[Mathc_Home_Edition_f01|Mathc]]".
 
=== Le but ===
 
 
* Des tableaux de matrices permet de travailler avec des boucles.
 
=== Les exemples ===
 
 
* Le premier exemple montre la méthode.
* Le second exemple automatise le travail (boucle for).
* Le troisième exemple nous montre qu'il n'y a aucune raison que les matrices soient toutes de tailles identiques.
 
 
=== La librairie ===
 
 
* Il faut utiliser la '''[https://drive.google.com/folderview?id=0B-KoQAOnU4FnWFJJUnNkN3h1bFU&usp=sharing librairie]'''d'algèbre linéaire (n_1aa.zip).
* Indispensable pour tester les exemples de cette page.
* Le deuxième fichier n_1ab.zip donne des exemples sur les tableaux de matrices réelles et complexes.
 
 
== Premier exemple ==
 
* On créé un tableau de double pointeur fixe (double **A[3];)
* On fait pointer chaque élément du tableau sur une matrice.
* Ne pas oublier de libérer chaque élément du tableau.
 
=== Code source ===
 
<source lang="c">
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
int main(void)
{
time_t t;
double **A[3];
 
int r = rp_I(5);
int c = rp_I(5);
 
srand(time(&t));
 
A[0] = r_mZ(i_mZ(r,c),9);
A[1] = r_mZ(i_mZ(r,c),9);
A[2] = i_mZ(r,c);
 
printf(" A0 : ");
p_mZ(A[0],5,0,5,0,C6);
 
printf(" A1 : ");
p_mZ(A[1],5,0,5,0,C6);
 
printf(" A0plsA1 : ");
p_mZ(add_mZ(A[0],A[1],A[2]),5,0,5,0,C6);
 
f_mZ(A[0]);
f_mZ(A[1]);
f_mZ(A[2]);
 
return 0;
}
</source>
 
 
== Deuxième exemple ==
 
* L'intéret des tableaux est d'utiliser une boucle.
* Ici on initialise et on détruit le tableau dans une boucle for.
* J'ai choisi de soulager la fonction main() en portant le maximum dans i_mZ_An()
 
=== Code source ===
 
<source lang="c">
/* ------------------------------------ */
#include "w_a.h"
/* --------------------------------------------------- */
/* Initialisation d'un tableau de double pointeurs */
/* Cette fonction dépend de la feuille de travail */
/* Ici on veut des matrices de tailles alétoires [1..5] */
/* Initialiser avec des valeurs aléatoire [-9..9] */
/* Ce travail est effectué ici pour soulager main() */
/* --------------------------------------------------- */
void i_mZ_An(
double **A[],
int n
)
{
int i = 0;
 
int r = rp_I(5);
int c = rp_I(5);
 
for(;i<n;i++) A[i] = r_mZ(i_mZ(r,c),9);
}
/* ------------------------------------ */
void f_mZ_An(
double **A[],
int n
)
{
int i=0;
 
for(;i<n;i++)f_mZ(A[i]);
}
/* ------------------------------------ */
int main(void)
{
double **A[3];
int i=0;
 
time_t t;
 
srand(time(&t));
 
i_mZ_An(A,3);
 
add_mZ(A[0],A[1],A[2]);
 
for(;i<3;)
{
printf(" A%d : ",i);
p_mZ(A[i++],5,0,5,0,C6);
}
 
f_mZ_An(A,3);
 
printf(" Press return to continue \n");
 
getchar();
return 0;
}
</source>
 
== Troisième exemple ==
 
* Le tableau à 100 matrices de tailles différentes.
*
* Ne pas oublier de libérer chaque élément du tableau.
 
=== Code source ===
 
<source lang="c">
/* ------------------------------------ */
#include "w_a.h"
/* --------------------------------------------------- */
/* Initialisation d'un tableau de double pointeurs */
/* Cette fonction dépend de la feuille de travail */
/* Ici on veut des matrices de tailles alétoires [1..5] */
/* Initialiser avec des valeurs aléatoire [-9..9] */
/* */
/* LES MATRICES NON PAS TOUTES LA MEME TAILLE */
/* --------------------------------------------------- */
void i_mZ_An(
double **A[],
int n
)
{
int i = 0;
 
for(;i<n;i++) A[i] = r_mZ(i_mZ(rp_I(5),rp_I(5)),9);
}
/* ------------------------------------ */
void f_mZ_An(
double **A[],
int n
)
{
int i=0;
 
for(;i<n;i++)f_mZ(A[i]);
}
/* ------------------------------------ */
int main(void)
{
double **A[100];
int i=0;
 
time_t t;
 
srand(time(&t));
 
i_mZ_An(A,100);
 
for(;i<100;)
{
printf(" A%d : ",i);
p_mZ(A[i++],5,0,5,0,C6);;
}
 
f_mZ_An(A,100);
 
printf(" Press return to continue \n");
 
getchar();
return 0;
}
</source>
 
 
= Conclusion =
 
* Vous pouvez approfondir ce travail sur wikiversité : [[Mathc Home Edition]]
 
 
{{Bas de page
| idfaculté = informatique
| précédent = [[../Matrices complexes 3/]]
| suivant = [[../Matrices fractions/]]
}}