Vous êtes sur la page 1sur 20

TP sous Matlab

Ces travaux pratiques (TP) s'adressent à des débutants ayant un minimum de connaissances scientifiques et en
informatique.

La version de Maltab utilisée était la version 5 sous Linux.

 TP1 Introduction 1 et le corrigé (ce TP suit le tutorial de Matlab)

 TP2 Introduction 2 et le corrigé (ce TP suit le tutorial de Matlab)

 TP3 Introduction 3 et le corrigé (ce TP suit le tutorial de Matlab)

 TP4 Calcul Matriciel et le corrigé

 TP5 Analyse en composante principale et le corrigé

 TP6 Approximation et interpolation et le corrigé

 TP7 Programmation, fichier MEX et le corrigé

 TP8 Programmation, le moteur MATLAB

 TP8bis Programmation, le moteur MATLAB (suite)

 TP9 Cycles et le corrigé


Outils pour l'ingénieur - TD 1
Les trois premiers TD consistent à suivre le tutorial proposé par Matlab. On y introduit les bases de Matlab,
il est donc important de tout comprendre correctement.

Il vous est demande de lire les 4 premières sections (jusqu'à "The Command Window" inclus) une par une,
et de faire les exercices ci-dessous correspondants avant de passer à la section suivante.

Matrices magiques
Créer une matrice magique de dimension 5, puis calculer la somme des éléments sur chaque ligne, chaque
colonne et sur les deux diagonales.

Extraire de cette matrice la 3e ligne et le deuxième élément de la première ligne.

Expressions

Résoudre <<à la main>>, c.a.d. en calculant le discriminant, les zéros du polynôme

Travailler avec les matrices

Écrire dans un fichier que vous nommerez matrice.dat une matrice de votre choix.

Charger cette matrice dans Matlab, et créer la matrice de la forme

en supposant que votre matrice s'appelle A. Enlever de cette matrice la dernière colonne et dernière ligne.

La fenêtre de commandes
Écrire la matrice de rotation

en notation ingénieur pour les valeurs de de .


Outils pour l'ingénieur - TD 2

Les trois premiers TD consistent à suivre le tutorial propose par Matlab. On vous y introduit les bases de
Matlab, il est important de tout comprendre correctement.

Il vous est demande de lire de la section 5 jusqu'à la section 8 inclus ("More About Matrices and Arrays"),
une par une, et de faire les exercices ci-dessous correspondants avant de passer à la suivante.

Il est demandé d'effectuer tous les exercices de ce TD dans la même session.

Graphisme
Tracer les courbes suivantes

 y=ex pour x compris entre -2 et 2,

 , avec R fixé (R=3 par exemple) et compris entre 0 et 3R


(il s'agit d'une cycloïde),

 avec et x et y compris entre -10 et 10 (courbe 3D).

Tracer la fonction au voisinage de zéro en rouge et les fonctions x et -x en pointillé et en bleu.


Écrire sur le graphe à coté des courbes leur équation.

Aide et documentation en ligne


Indiquez l'adresse de la page web proposant la liste des fonctions existantes dans Matlab.

Indiquer les fonctions dont le mot <<polar>> se trouve dans le titre et celle dont le même mot se trouve dans
la documentation.

L'environnement de Matlab
Afficher l'ensemble des variables en mémoire. Sauvegarder celle qui occupe de plus de place puis l'effacer.
Verifier qu'elle n'est plus en mémoire puis la recharger.
Plus à propos des matrices et des tableaux
Entrer la matrice suivante

Résoudre le système avec b = [32, 23, 33, 31] et b=[32.1, 22.9, 33.1, 30.9].

Calculer les valeurs propres (eigenvalues) de la matrice A.


Outils pour l'ingénieur - TD 3

Les trois premiers TD consistent à suivre le tutorial propose par Matlab. On vous y introduit les bases de
Matlab, il est important de tout comprendre correctement.

Il vous est demande de lire de la section 9 jusqu'à la fin dans l'ordre indiqué ci-dessous, et de faire les
exercices ci-dessous correspondants avant de passer à la suivante.

Commandes de contrôle

Créer une matrice dont la valeur des éléments est la somme de la ligne et de la colonne (Aij=i+j) en
utilisant un boucle for.

Scripts et fonctions

Écrire la fonction (function) dans le fichier fct.m. Tracer la courbe correspondant


à cette fonction entre -50 et 50.

Écrire un programme qui trouve les zéros réels d'un polynôme. On utilisera la commande switch suivant le
degré du polynôme (4 cas, degré 0, degré 1, degré 2 et le reste).

Autres structures de données


On utilise une structure comprenant les champs "lettre" et "valeur ASCII". Écrire dans un tableau l'ensemble
de l'alphabet.

Manipulations graphiques
Créer un graphe avec trois courbes de couleur différente et chacune numérotée, puis retirer du graphe la
deuxième courbe (cela ne veut pas dire <<refaire le graphe avec la première et troisième courbe>> !).
Outils pour l'ingénieur - TD 4
Calcul matriciel

Factorisation d'une matrice


Soit A une matrice carrée d'ordre n telle que les n sous-matrices diagonales

soient inversibles. Alors il existe une matrice triangulaire inférieure L avec et une
matrice triangulaire supérieure U telles que

De plus cette factorisation est unique.

 Créer une matrice A 7x7 aléatoire et vérifier qu'elle est inversible ainsi que ses 6 sous matrices .
 Faire sa factorisation LU en récupérant la matrice de permutation P telle que (voir la
commande lu).
 Calculer le plus simplement possible la valeur absolue du déterminant de A sans utiliser la matrice A
ni la commande det.
 Soit b=[1,2,3,4,5,6,7], écrire un programme pour résoudre en n'utilisant que des boucles
for et la décomposition LU.

Factorisation d'une matrice

Les valeurs propres (eigenvalues) d'une matrice A d'ordre n sont les n racines réelles ou complexes,
distinctes ou confondues, du polynôme caractéristique

de la matrice A (où det est le déterminant et Id la matrice identité de la même dimension que A).

A toute valeur propres d'une matrice A est associé (au moins) un vecteur vi tel que

appelé vecteur propre de la matrice A, correspondant à la valeur propre .

 Décomposer la matrice A en une matrice V et D (D diagonale) telles que .


 Calculer A2, A3, A4 et A5.
 Effectuer les mêmes calculs en utilisant des puissances de D, V et son inverse.
Factorisation QR d'une matrice

Étant donné une matrice A d'ordre n, il existe une matrice unitaire Q ( , avec Q* la matrice

adjointe : )et une matrice triangulaire supérieure R telles que

De plus, on peut s'arranger pour que les éléments diagonaux de la matrice R soit tous . Si la matrice A
est inversible, la factorisation correspondante est alors unique.

Si la matrice A est réelle, les matrices Q et R le sont aussi et donc la matrice Q est orthogonale.

 Écrire la factorisation QR de la matrice A.


 Écrire un programme pour résoudre en n'utilisant que des boucles for, le produit matrice
vecteur et la décomposition QR (on utilisera le fait que pour une matrice réelle, la matrice adjointe
est égale à la matrice transposée).
Outils pour l'ingénieur - TD 5
Analyse en composante principale

L'analyse en composante principale permet d'extraire d'un échantillonnage de donnée les tendances
principales. Plusieurs cas peuvent être envisagés : reconstitution d'une photo satellite à partir d'images prise à
différentes fréquences, analyse chimique ou physique d'un produit en fonction de différents tests, étude des
caractéristiques d'une population...

Dans tout ces cas, on travaille sur un ensemble de données, où pour chaque élément, on a différentes valeurs.
On stocke sous forme de matrice ces données, avec dans chaque colonne les valeurs de l'éléments
correspondant à la colonne. Par exemple, pour chaque individu d'une population, on a sa taille et son poids
ce qui donne :

Si on appelle M la valeur moyenne, l'écart entre un point Xk et M est . On défini la matrice


de covariance S par

où .

L'analyse en composante principale consiste à extraire de l'ensemble des caractéristiques une caractéristique
principale. Dans le cas de photos prises à différentes fréquences, la caractéristique principale est l'objet
photographié. Une analyse en composante principale peut permettre de mieux retrouver cet objet en
combinant les différentes photos avec des poids variant suivant les photos prises. On aura ainsi, par exemple,
que la couleur des points de l'image <<parfaite>> doit être ci = 0.54 ph1i + 0.63 ph2i + 0.56 ph3i avec phKi la
couleur de ce même point sur la photo K.

Pour choisir les coefficients de la combinaison linéaire ci-dessus, on choisit le vecteur propre correspondant
à la valeur propre la plus importante de la matrice de covariance.

Dans l'exemple de la photo, la matrice de covariance est

Les valeurs propres de cette matrice sont et le vecteur propre correspondant à la

plus élevée est . On retrouve les coefficients de la combinaison linéaire.


Premier exemple
Considérons les valeurs suivantes correspondant à la taille et au poids d'une population :

170 166 167 182 189 172 177 169 179 191 181 175 176 175 161

66 65 75 80 101 74 79 66 73 87 86 80 65 59 54

 Tracer le graphe correspondant à ces valeurs avec une croix pour chaque couple (avec le poids en
abscisse et la taille en ordonnée).
 Calculer la taille moyenne et le poids moyen.
 Tracer une ligne horizontale et une ligne verticale passant pas le couple moyen (commande line).
 Calculer la matrice de covariance S.
 Calculer les valeurs propres et vecteurs propres de cette matrice S.
 Calculer la composante principale de nos données, qui correspond à la corpulence.
 Introduire la corpulence dans une matrice avec la taille et le poids (mettre la corpulence en première
ligne).
 Trier les individus par ordre de corpulence (cd commande sortrows).

Second exemple
Il s'agit de reprendre l'exemple précédant mais avec un echantillonnage plus important et un paramètre de
plus.

 Ecrire la fonction glaw (Gauss Law) qui donne une distribution normale à partir de valeurs aléatoire
distribuées uniformément. On utilisera la loi suivante

(1)

 avec x1 et x2 des valeurs aléatoires indépendantes distribuées uniformément entre 0 et 1. Le resultat y


a une distribution gaussienne avec une moyenne de 0 et un écart type de 1.
 Créer une population de 500 individus avec
o une taille moyenne de 175 cm et un écart type de 20cm
o un poids vérifiant la loi p = t -110 + y avec y une valeur aléatoire gaussienne de moyenne 0 et
d'écart type 10
o un QI de moyenne 100 et d'ecart type 25.

Il y conseillé de ne pas afficher les resultats.

 Calculer la matrice de covariance. Quelle remarque peut-on faire ?


Outils pour l'ingénieur - TD 6
Approximation et interpolation
Le but de l'approximation est de définir une courbe qui approche au mieux un ensemble de données (définies
chacune par un couple (x,y)). Cette courbe peut être définie par un polynôme ou autrement (en fonction
d'exponentielles, de sinus...).

Il est conseillé de regarder les commandes interp2, polyfit, polyval, semilogy, std.

Approximation polynomiale
Le fichier census.dat de matlab contient l'évolution de la population américaine de 1790 à 1990. Pour le
charger tapez load census.

Pour des raisons de conditionnement de la matrice de Vandermonde (matrice utilisée pour calculer les
coefficients du polynôme d'approximation), il est préférable de normaliser les valeurs en abscisse, dans notre
cas les dates. Cela revient à soustraire à ces valeurs, leur moyenne et à diviser le tout par l'écart type e :

(1)
1.
Normaliser les dates (on utilisera en autres la commande std).
2.
Tracer sur un même graphe les points donnés (avec une croix) et la courbe d'approximation
polynomiale d'ordre 1.
3.
Tracer l'erreur entre l'approximation et les données.
4.
Recommencer les étapes 2 et 3 avec une approximation d'ordre 2.
5.
Recommencer les étapes 2 et 3 avec une approximation d'ordre 4.
6.
Quelles remarques pouvez vous faire.

Approximation exponentielle
On cherche à approcher les données par une courbe exponentielle du type

(2)
1.
Passer les données sur la population (pop) en log base 10.
2.
Calculer la courbe d'approximation telle qu'elle est définie ci-dessus avec la partie polynomiale
d'ordre 1.
3.
Tracer en échelle logarithmique suivant abscisse les données et la courbe d'approximation.
4.
Tracer l'erreur.
5.
Recommencer les étapes 2 à 4 avec une approximation d'ordre 2.
6.
Quelles remarques pouvez vous faire par rapport aux approximations polynomiales.

Interpolation polynomiale en 3D
On parle d'interpolation lorsqu'on cherche à définir ce qui se passe entre les valeurs données, tout en passant
par ces valeurs données.

 Définir une grille de pas 1.


 Générer une surface à l'aide de la commande peaks
 Tracer la surface.
 Définir une grille cinq fois plus précise.
 Tracer l'interpolation par une méthode d'ordre 0 (nearest), d'ordre 1 (bilinear) et d'ordre 3
(bicubic).
Outils pour l'ingénieur - TD 7
Programmation - fichier MEX
On écrira dans ce TD un programme en C qui sera interprété dans MATLAB (MEX-file).

Il est conseillé de revoir le cours correspondant.

Le compilateur mex est rangé dans le répertoire /home/matlab-v5/bin/, vous pouvez l'appeler directement
en tapant $MATLAB/bin/mex

Ecrire le polynôme (MEX-file)


Il s'agit d'écrire de façon usuelle un polynôme de dimension quelconque défini par un vecteur. Exemple :

 [1 2 -3] donnera x^2 +2 x -3.


 [-0.4 7 -99.3 -3] donnera -0.4 x^3 + 7 x^2 - 99.3 x -3.

Faire un fichier MEX en langage C qui permet cela et le tester avec le vecteur [-1 0.67 1 0 3].

On utilisera la commande mexPrintf similaire à printf, et l'on s'inspirera de l'exemple proposé à la section
suivante.

Exemple de fichier MEX en C


/* $Revision: 1.1 $ */
/*

YPRIME.C Sample .MEX file corresponding to YPRIME.M


Solves simple 3 body orbit problem

The calling syntax is:

[yp] = yprime(t, y)

Marc Ullman June 22, 1987


Copyright (c) 1987-96 The Mathworks, Inc.
All Rights Reserved

*/

#include <math.h>
#include "mex.h"

/* Input Arguments */

#define T_IN prhs[0]


#define Y_IN prhs[1]

/* Output Arguments */

#define YP_OUT plhs[0]

#if !defined(max)
#define max(A, B) ((A) > (B) ? (A) : (B))
#endif
#if !defined(min)
#define min(A, B) ((A) < (B) ? (A) : (B))
#endif

#define pi 3.14159265

static double mu = 1/82.45;


static double mus = 1 - 1/82.45;

static void yprime(


double yp[],
double *t,
double y[]
)
{
double r1,r2;

r1 = sqrt((y[0]+mu)*(y[0]+mu) + y[2]*y[2]);
r2 = sqrt((y[0]-mus)*(y[0]-mus) + y[2]*y[2]);

yp[0] = y[1];
yp[1] = 2*y[3]+y[0]-mus*(y[0]+mu)/(r1*r1*r1)-mu*(y[0]-mus)/(r2*r2*r2);
yp[2] = y[3];
yp[3] = -2*y[1] + y[2] - mus*y[2]/(r1*r1*r1) - mu*y[2]/(r2*r2*r2);
return;
}

void mexFunction(
int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]
)
{
double *yp;
double *t,*y;
unsigned int m,n;

/* Check for proper number of arguments */

if (nrhs != 2) {
mexErrMsgTxt("YPRIME requires two input arguments.");
} else if (nlhs > 1) {
mexErrMsgTxt("YPRIME requires one output argument.");
}

/* Check the dimensions of Y. Y can be 4 X 1 or 1 X 4. */

m = mxGetM(Y_IN);
n = mxGetN(Y_IN);
if (!mxIsNumeric(Y_IN) || mxIsComplex(Y_IN) ||
mxIsSparse(Y_IN) || !mxIsDouble(Y_IN) ||
(max(m,n) != 4) || (min(m,n) != 1)) {
mexErrMsgTxt("YPRIME requires that Y be a 4 x 1 vector.");
}

/* Create a matrix for the return argument */

YP_OUT = mxCreateDoubleMatrix(m, n, mxREAL);

/* Assign pointers to the various parameters */

yp = mxGetPr(YP_OUT);

t = mxGetPr(T_IN);
y = mxGetPr(Y_IN);

/* Do the actual computations in a subroutine */

yprime(yp,t,y);
return;
}
Outils pour l'ingénieur - TD 8
Programmation - Le moteur MATLAB
On construira un programme en C pour calculer le polynôme de meilleur approximation d'un
échantillonnage. On utilisera le moteur MATLAB et ce qui à été fait lors du TD 6.

La commande pour compiler un programme C utilisant le moteur MATLAB est si le fichier C s'appelle
engdemo.c :

gcc -I$MATLAB/extern/include -o engdemo engdemo.c \


-L$MATLAB/extern/lib/lnx86 -leng -lmx -lmi -lut

Exemple d'un programme C utilisant le moteur MATLAB.


/* $Revision: 1.1 $ */
/*
* engdemo.c
*
* This is a simple program that illustrates how to call the MATLAB
* Engine functions from a C program.
*
* Copyright (c) 1996 The MathWorks, Inc.
* All rights reserved
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"

void main()

{
Engine *ep;
mxArray *T = NULL, *result = NULL;
char buffer[256], str[256];
double time[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

/*
* Start the MATLAB engine locally by executing the string
* "matlab"
*
* To start the session on a remote host, use the name of
* the host as the string rather than \0
*
* For more complicated cases, use any string with whitespace,
* and that string will be executed literally to start MATLAB
*/
if (!(ep = engOpen("\0"))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
exit(-1);
}

/*
* PART I
*
* For the first half of this demonstration, we will send data
* to MATLAB, analyze the data, and plot the result.
*/

/*
* Create a variable from our data
*/
T = mxCreateDoubleMatrix(1, 10, mxREAL);
mxSetName(T, "T");
memcpy((char *) mxGetPr(T), (char *) time, 10*sizeof(double));

/*
* Place the variable T into the MATLAB workspace
*/
engPutArray(ep, T);

/*
* Evaluate a function of time, distance = (1/2)g.*t.^2
* (g is the acceleration due to gravity)
*/
engEvalString(ep, "D = .5.*(-9.8).*T.^2;");

/*
* Plot the result
*/
engEvalString(ep, "plot(T,D);");
engEvalString(ep, "title('Position vs. Time for a falling object');");
engEvalString(ep, "xlabel('Time (seconds)');");
engEvalString(ep, "ylabel('Position (meters)');");

/*
* use fgetc() to make sure that we pause long enough to be
* able to see the plot
*/
printf("Hit return to continue\n\n");
fgetc(stdin);
engEvalString(ep, "close;");

/* la partie I suffie pour le TD. Il ne faut pas oublier


* pour autant de liberer la memoire et fermer MATLAB comme
* c'est fait a la fin de ce programme
*/

/*
* PART II
*
* For the second half of this demonstration, we will request
* a MATLAB string, which should define a variable X. MATLAB
* will evaluate the string and create the variable. We
* will then recover the variable, and determine its type.
*/

/*
* Use engOutputBuffer to capture MATLAB output, so we can
* echo it back.
*/
engOutputBuffer(ep, buffer, 256);

while (result == NULL) {


/*
* Get a string input from the user
*/
printf("Enter a MATLAB command to evaluate. This command should\n");
printf("create a variable X. This program will then determine\n");
printf("what kind of variable you created.\n");
printf("For example: X = 1:5\n");
printf(">> ");
fgets(str, 255, stdin);

/*
* Evaluate input with engEvalString
*/
engEvalString(ep, str);

/*
* Echo the output from the command. First two characters are
* always the double prompt (>>).
*/
printf("%s", buffer+2);

/*
* Get result of computation
*/
printf("\nRetrieving X...\n");
if ((result = engGetArray(ep,"X")) == NULL)
printf("Oops! You didn't create a variable X.\n\n");
else {
mxClassID category;
category = mxGetClassID(result);
switch(category) {
case mxCELL_CLASS :
printf("X is a cell array (class mxCELL_CLASS).\n");
break;
case mxSTRUCT_CLASS :
printf("X is a structure array (class mxSTRUCT_CLASS).\n");
break;
case mxOBJECT_CLASS :
printf("X is an object array (class mxOBJECT_CLASS).\n");
break;
case mxCHAR_CLASS :
printf("X is a character array (class mxCHAR_CLASS).\n");
break;
case mxSPARSE_CLASS :
printf("X is a sparse matrix (class mxSPARSE_CLASS).\n");
break;
case mxDOUBLE_CLASS :
printf("X is a double array (class mxDOUBLE_CLASS).\n");
break;
}
}
}

/*
* We're done! Free memory, close MATLAB engine and exit.
*/
printf("Done!\n");
mxDestroyArray(T);
mxDestroyArray(result);
engClose(ep);

exit(0);
}

Tracer de polynôme (en utilisant le moteur MATLAB)


Écrire un programme C qui trace un polynôme (définit par un vecteur que l'utilisateur entre à la main) dans
un intervale (à donner aussi) en utilisant le moteur MATLAB. On s'inspirera du programme proposé à la
section précédante.

Approximation aux moindres carré


En reprenant le programme précédant et ce qui à été fait lors du TD6, écrire un programme qui lise un
ensemble de n points et le degré d du polynôme d'approximation (d<n), puis qui trace ces points et le
polynôme d'approximation que l'on calculera.
Outils pour l'ingénieur - TD 8 bis
Programmation - Le moteur MATLAB (suite)

Ce TD est pour les étudiants des options Calcul Scientifique et Informatique. Les autres peuvent aussi
le faire s'ils le désirent.

Pour ce TD, vous devez recopier les classes matrice et vecteur que vous avez écrites pour le PERS, pour les
enrichir de nouvelles méthodes (fonctions).

Voici un fichier Makefile pour compiler le tout (à adapter à vos fichiers) :

FILE = pers1
OBJS = pers1.o matrice.o vector.o
LIBS = -lm -leng -lmx -lmi -lut
CHEMLIB = -L/home/matlab-v5/extern/lib/lnx86
CHEMINC = -I/home/matlab-v5/extern/include

# Partie generique :

CFLAGS= -g -ansi -pedantic -Wmissing-prototypes $(CHEMINC)

all: $(FILE)

$(FILE): $(OBJS)
$(CC) $(CHEMINC) -o $(FILE) $(OBJS) $(CHEMLIB) $(LIBS)

# Dependences:

pers1.o: pers1.c matrice.h vector.h


matrice.o: matrice.c matrice.h vector.h
vector.o: vector.h vector.c

Les Matrices
Écrire les fonctions suivantes dans votre structure matrice en utilisant le moteur MATLAB :

 génération de matrices magiques et de matrices aléatoires.


 calcul des valeurs propres,
 factorisation LU, puis résolution du système linéaire Ax=b à partir de cette factorisation,
 calcul de l'inverse de la matrice,

Écrire un programme utilisant toutes ces fonctions avec des matrices de grande taille (supérieur à 10).
Vérifier vos calculs à l'aide de MATLAB.
Outils pour l'ingénieur - TD 9
Cycles
Un système d'équations différentielles d'ordre 1 peut être vu comme la définition du vecteur vitesse
(direction) en tout point de l'espace :

(1)

Ainsi, en un point X=(x1,x2) de on a sa vitesse .

On peut voir sur un graphe représentant les vecteurs vitesse si les trajectoires <<tendent>> vers un point ou
une courbe limite.

Cette représentation en point/vitesse est un artifice qui permet d'imaginer ce qui se passe, il faut bien avoir a
l'esprit que généralement on ne travaille pas avec ces variables. Dans le cas de la lutte pour la vie, les
variables représentent la population de chaque espèce, dans le cas d'une équation différentielle du second

ordre on a x1= x et . Dans ces cas, t ne représente pas obligatoirement le temps.

Un cas d'école
Soit le système

(2)

 résoudre sur l'intervale t=[0;15] le système ci-dessus avec les conditions initiales suivantes (ça fait
deux problèmes) :

(3)

 tracer dans un repère orthonormé les courbes correspondant à chacune des solutions (on trace x2 en
fonction de x1).
 dessiner à l'aide de la fonction quiver (regardez l'exemple proposé dans l'aide help quiver) le

champs vectoriel correspondant à la fonction sur le carré

.
 superposer à ce graphe, les courbes tracées précédemment.

Une oscillation entretenue


On suppose un masse retenue par un ressort et possée sur un tapis roulant. Le tapis déplace la masse jusqu'à
ce que les frottements ne suffisent plus à la retenir et que le ressort la rappelle. Puis le cycle recommence.

Ce mouvement est régit par l'équation suivante :

avec et des constantes que l'on fixe à 1 et v la vitesse du tapis roulant que l'on fixe à 2.

 écrire le système d'équations différentielles d'ordre 1 équivalent à l'équation ci-dessus (on prend x1=x

et ).
 calculer les courbes sur l'intervale [0 20] pour les conditions initiales

(4)

 tracer dans un repère orthonormé les courbes correspondant à chacune des solutions (on trace x2 en
fonction de x1).
 dessiner à l'aide de la fonction quiver le champs vectoriel correspondant à la fonction

sur le carré .
 superposer à ce graphe, les courbes tracées précédemment.

Vous aimerez peut-être aussi