96
__________________________________________________________________ ______ 1 Ministère de l’Enseignement Supérieur Cycles préparatoires Des études d’ingénieur Deuxième année NOTES DE COURS DE MAPLE TRAVAUX PRATIQUES D’INFORMATIQUE avec exercices corrigés

Support Cours d'Info Pour La 2éme Année

Embed Size (px)

Citation preview

Page 1: Support Cours d'Info Pour La 2éme Année

________________________________________________________________________ 1

Ministère de l’Enseignement Supérieur

Cycles préparatoiresDes études d’ingénieur

Deuxième année

NOTES DE COURS DE MAPLETRAVAUX PRATIQUES

D’INFORMATIQUEavec exercices corrigés

Page 2: Support Cours d'Info Pour La 2éme Année

SOMMAIRE

Séance Eléments de contenuSéance 1 Notes de cours, complément d’exercices,…..Séance 2 Fonctions réelles à 1 seule variable

Domaine de définitionContinuitéDérivéesPrimitives et intégralesAsymptotesCourbe des fonctionsExercices d'application

Séance 3 Fonctions réelles à 2 variables et développement limitésDomaine de définitionDérivées partiellesCourbesDéveloppements limitésExercices d'application

Séance 4 Polynômes et fractions rationnelles à une et plusieurs variablesFactorisationSimplificationDéveloppementTriArrangementSubstitutionExercices d'application

Séance 5

Nombre complexeDéfinitionFormes cartésienne et polaireEvaluation dans CNombre conjugué, argument, moduleRésolution des équations à variables complexesExercices d'applicationFonctions complexesDomaine de définitionImages, zéros et points fixes d'une fonction complexeTransformation géométrique dans le plan complexeExercices d'application

Séance 6 Algèbre linéaire : utilisation des fonctions prédéfinies Maple et programmationCalcul matricielDéclaration des matrices et des vecteursOpérations sur les matrices: addition, multiplication par un scalaire et produit de deux matricesInverse, PuissanceValeurs propres et Vecteurs propresTrace, Noyau, DéterminantExercices d'application

Séance 7 Algèbre linéaire : utilisation des fonctions prédéfinies Maple et programmation (suite)Polynômes caractéristiquesRésolution de systèmeExercices d'application

Séance 8 Suites numériquesCalcul d'un terme quelconqueSomme des termesProduit des termesSuites récurrentesConvergenceExercices d'application

Séance 9 Equations différentiellesRapport général sur les équations différentielles premier et second ordre

________________________________________________________________________ 2

Page 3: Support Cours d'Info Pour La 2éme Année

Exercices d'applicationSystèmes différentielsExemple de solutionExercices d'application

Séance 10 Révision générale : résolution de problèmes et leur programmation Remarque : ces problèmes peuvent être choisis parmi les exercices et problèmes proposés dans le paragraphe complément d’exercices du support « NOTE DE COURS DE MAPLE TRAVAUX PRATIQUES avec exercices corrigés » ou autres.

Séance 11 Révision générale : résolution de problèmes et leur programmation (suite)

Séance 12(*)

Application aux systèmes linéaires : électrocinétique Exemple en mathématique ou Exemple en physiqueCalcul des réseaux maillés courant continuMéthode simple (solve)Par le calcul matriciel (linsolve) ou autres,…

Séance 13(*)

Pendule simple

(*) il est recommandé de réaliser des applications dans les domaines de la physique, chimie et mécanique; sinon ces applications seront remplacées par des applications en mathématique. .

N.B. La charge horaire annuelle est de 26 heures.

________________________________________________________________________ 3

Page 4: Support Cours d'Info Pour La 2éme Année

Séance 1 [1]

Notes de cours et complément d’exercices

La programmation en MAPLE nécessite la connaissance de quelques notions de base. Outre les premières fonctionnalités de MAPLE, déjà acquises par les étudiants et rappelées par l’enseignant , nous présentons à travers ces brèves notes de cours le minimum d’outils de programmation à retenir. Ces rappels renferment trois parties sous forme de paragraphes. Le paragraphe 1 contient les fonctions d’entrées sorties. Le paragraphe 2 s’intéresse aux structures de contrôle ( if simple et en alternative, les boucles et ses variétés). Les fonctions et les procédures font l’objet du paragraphe 3. Au paragraphe 4, nous rappelons les notions d’ensemble, de table et de tableaux.

Remarque : la version minimale conseillée est la version Maple 5, la version 7 sur CD est mise à la disposition des enseignants à la DGET (ISET Rades).Par ailleurs, il est conseillé d’adopter l’ordre d’apparition des séances, mais sans obligation.

§1 LES FONCTIONS D’ENTRÉES SORTIES La fonction readstat()

Elle permet de lire ce que l’utilisateur tape au clavier.La syntaxe est:sans prompt readstat()> a:=readstat();10;

:= a 10

avec prompt readstat(prompt)

> b:=readstat("b=");

b=12; := b 12

La fonction print(), lprint(), printf()

Elle permet d’écrire des informationd exempleprint(e1, e2, ... ), lprint(e1,e2,…), printf(format, liste d’expressions) format: comme constante entre " " contient des caractères à afficher, des codes format repérés par "avec : e1, e2,… n’importe que expression :exemple :

> restart:a:=5:b:=4:print(2*x,5/3,a+b);

, ,2 x53

9

> lprint(2*x,5/3,a+b);2*x, 5/3, 9

> printf(`expr1=%d\n expr2=%d\n expr3=%d`,a+b,a*b,a-b);expr1=9expr2=20expr3=1

§2 LES STRUCTURES DE CONTRÔLE Les tests if… thenif condition1 then instruction 1 elif condition2 then instruction2 elif et else sont optionnels) elif condition3 then instruction3 ... else instructionNfi; elif signifie "autrement si" . La dernière instruction à exécuter doit être précédée de else Exemple 1: résolution de l'équation du premier degré. Modifiez les valeurs de a et de b , puis validez les lignes suivantes: > a:=7:b:=3:

________________________________________________________________________ 4

Page 5: Support Cours d'Info Pour La 2éme Année

> if a<>0 then print(`Une solution : x `=-b/a)        elif b=0 then print(`Tout x est solution`)        else print(`Pas de solution`)   fi; La boucle whileExécute une suite d'instructions, tant que la condition est vraie.while condition do ... od; Exemple 2: calcul de la somme des 100 premiers entiers naturels > somme:=0:k:=-1:    while k<100 do k:=k+1:somme:=somme+k od:    `somme `=somme; La boucle forExécute une boucle pour une variable allant d'une valeur initiale à une valeur finale, avec un pas donné. for variable from initiale to finale by pas do ... od;   from , by peuvent être omises ou écrites dans un ordre quelconque. Si l'on omet from , initiale vaut 1. Si l'on omet by , pas vaut 1. Exemple 3: calcul de la somme des 100 premiers entiers naturels > somme:=0:    for k from 0 to 100 do somme:=somme+k od:    `somme `=somme;   Exemple 4: calcul de la somme des entiers impairs inférieurs à 100Ici, on omet from donc la première valeur de k est 1. La dernière valeur prise par k sera 99. > somme:=0:    for k to 100 by 2 do somme:=somme+k od:    `somme `=somme;   for variable in expression do .. od; Exemple 5: donner les nombres premiers de la liste [31,39,47,105] > for k in [31,39,47,105] do        if isprime(k) then print(k,`est premier`) fi    od;

§3 LES FONCTIONS ET PROCEDURES Les fonctionsPour définir une fonction , on peut utiliser les syntaxes : nom := var -> expr; pour une fonction d'une variable var nom := (var1,var2,...,varN) -> expr; pour une fonction de N variables var1,var2,...,varN.Exemple 6 :> f:=x->exp(x)-x; > g:=x,y,z,t->x^2-3*y+4*z-t; On peut effectuer la composition des fonctions à l’aide de l'opérateur @ , l'opérateur de composition itérée @@ > (f@g)(a);(g@f)(a); f@@N correspond à f o f o . . . o f (N fois) Les procédures

Un programme MAPLE peut être organisé en sous-programmes appelées procédures . Une procédure, de type procedure , est définie par le mot-clé proc et peut être assignée à un nom de variable. Pour définir une procédure intitulée nom , on utilisera la syntaxe suivante:  

nom := proc (paramètres_formels) global variables_globales; (la ligne global est optionnelle) local variables_locales; (la ligne local est optionnelle)

description chaîne_de_description; (la ligne description est optionnelle) option nom_option; (la ligne option est optionnelle) . . . instructions . . . (corps de la procédure) end;

Exemple 7: La procédure intitulée maxi calcule le plus grand de 2 entiers positifs.Elle comporte 2 paramètres formels u et v. Leur type peut être omis, mais si on le veut le préciser, bien noter la syntaxe u :: posint , v :: posint pour signifier que u et v sont de type posint .Elle ne comporte ni variables globales, ni variables locales, mais une chaîne de description de la procédure et une option de copyright.> maxi:=proc(u::posint,v::posint); # calcule le plus grand de 2 entiers positifs option `Copyright (c) 2001 A.Le Stang`;

________________________________________________________________________ 5

Page 6: Support Cours d'Info Pour La 2éme Année

if u<v then v else u fi; end; > maxi(5,9);Une variable locale est une variable qui n'est reconnue qu'à l'intérieur de la procédure, contrairement à une variable globale accessible en dehors de la procédure. Remarque importante:Un paramètre formel passé à une procédure ne peut être modifié à l'intérieur de cette procédure   Exemple 8: Diviser un entier positif x par 2 tant qu'il est pair. > div:=proc(x::posint)        while type(x,even) do x:=x/2 od;    end; > div(48); Error, (in div) illegal use of a formal parameterLa tentative d'affecter au paramètre formel x sa valeur divisée par 2 provoque une erreur.On peut modifier la procédure de la manière suivante: > div:=proc(x::posint)        local y;            y:=x;            while type(y,even) do y:=y/2 od;            y    end; > div(48); #On obtient en effet successivement : 48,24,12,6,3. 3> div(45); 45return met fin à la procédure en donnant un résultat.next permet de passer à la valeur suivante dans une itération.break permet de sortir de la structure de contrôle en cours. Récursivité:

Une procédure qui fait référence à elle même dans sa définition est une procédure récursive .   Exemple 10: factorielle de n > factorielle := proc(n::nonnegint)        if n>0 then n*factorielle(n-1) else 1 fi;    end; > factorielle(12); Fonction error : La fonction error permet de définir des messages d'erreur personnalisés. Exemple 11: racine carrée de x > racine := proc (x)        if x<0 then ERROR (`invalide x: %1`, x) else simplify(x^(1/2)) fi    end; > racine(144);

§4 LISTES, ENSEMPLES, TABLES ET TABLEAUX listes

  Une liste , de type list , est obtenue en plaçant une séquence entre les crochets [ et ] . La liste vide se note [] . Exemple :> s:=a$2,b$3,alpha,beta;L:=[s];

ensemblesUn ensemble , de type set , est obtenu en plaçant une séquence entre les accolades {et}. Les éléments sont rangés par adresse , donc l'ordre initial n'est pas nécessairement conservé et les éléments en double sont supprimés. L'ensemble vide se note {} .   Exemple : > s:=a$2,b$3,alpha,beta;e:={s}; On accède à chaque élément d'un ensemble par son rang, mais l'affectation est interdite : > e[2];e[2..3];e[3]:=delta;

Error, cannot assign to a set tables

  Une table est une structure indexée dont les indices (ou index ) peuvent être de n'importe quel type. La fonction table permet de créer une table : Création d'une table vide: > v:=table();Création d'une table T avec une liste de valeurs: >T:=table([valeur1,valeur2]);

________________________________________________________________________ 6

Page 7: Support Cours d'Info Pour La 2éme Année

Pour afficher le contenu d'une table, utiliser print ou eval >print(T),eval(U); On peut modifier, créer un nouvel élément ou supprimer un élément par affectation : > T[a]:=valeur3:U[2]:=valeur4:print(T),eval(U);Une table peut être directement créée par assignation : > V[a]:=1:V[b]:=2:V[c]:=3:eval(V); Fonctions agissant sur des tables: > op(op(V)); > indices(V); > entries(V); La fonction map permet d'appliquer une fonction sur les valeurs d'une table: >V:=map(sqrt,V); La fonction copy permet d'effectuer une copie d'une table: > W:=copy(V); tableauxUn tableau est une structure indexée, de type array, de plusieurs dimensions, dont les indices sont des entiers appartenant à un intervalle a..b (de type range ). La fonction array permet de créer un tableau . Des fonctions analogues à celles utilisées pour les tables existent : Création d'un tableau à une dimension: > T:=array(1..3); Création d'un tableau à une dimension avec initialisation partielle: >U:=array(1..5,[a,b,c]); Création d'un tableau à 2 dimensions avec initialisation complète: >V:=array([[a,b,c],[d,e,f]]); Création d'un tableau rectangulaire d'entiers par affectation à l'aide de boucles imbriquées: > T:=array(1..2,1..3):    for i to 2 do        for j to 3 do             T[i,j]:=(i-1)*3+j;         od;    od:    print(T); > op(op(T)); > indices(T); > entries(T); > map(x->x^2,T); Conversion d'un tableau en liste (si la dimension est 1) ou en liste de listes (si la dimension est >1): > convert(U,list);convert(T,listlist); Conversion d'un tableau de dimension quelconque en ensemble: > convert(T,set); > T:=convert([a,b,c,d],array); > U:=copy(T);

Complément d’exercices Les exercices proposés sont traités par Maple , il est conseillé d’être présenté à l’aide d’algorithmes simples (vus en 1ère année) . Le corrigé se trouve à la fin de ce document.Exercice 1.2Soient X,Y,Z trois entiers, tels que X<Y<Z et N un entier quelconque. Ecrire une suite d’instruction Maple qui permet d’afficher dans l’ordre les trois petites valeurs parmi les quatre.Exercice 2.2Ecrire une procédure calculant le plus grand de 3 entiers naturels non nuls a,b,c.Exercice 2.3Ecrire une procédure second_degré(a,b,c) qui résout l’équation du second degré à coefficients réels : en distinguant 3 cas selon le signe du discriminant.Exercice 1.3Etant donné un tableau carré T à n lignes et n colonnes,

1) Ecrire une procédure diagonale1(T,n) qui calcule la somme des éléments de T situés sur la première diagonale.

2) Ecrire une procédure diagonale2(T,n) qui calcule la somme des éléments de T situés sur la seconde diagonale.

Exercice 2.3Ecrire une procédure transfert qui transforme une matrice M à deux dimensions dans un vecteur à une dimension ( en utilisant rowdim(matrice) et coldiml(matrice))Exemple :

se transforme en

________________________________________________________________________ 7

Page 8: Support Cours d'Info Pour La 2éme Année

Exercice 3.3Ecrire une procédure permettant de :Trier un tableau T de n éléments par :

1) Ordre décroissant.2) Ordre croissant.

Problème 1Considérons le tableau à deux dimensions, contenant pour chaque étudiant de la classe, ses moyennes dans chacune des 10 matières qui lui sont enseignées. Chaque étudiant reçoit obligatoirement un enseignement pour chacune des 10 matières. Les noms des étudiants et ceux de chacune des 10 matières sont stockés dans des tableaux à une dimension.Illustration :

EmnaIskanderSyrineManel Malek…..

Nous vous demandons d’écrire l’algorithme permettant l’édition du récapitulatif des moyennes par matière, de la moyenne générale de chaque étudiant et de la classe.Problème 2Ecrire l’algorithme détaillé permettant de saisir des nombres entiers dans un tableau de 10 lignes et de 10 colonnes. Calculer les totaux par ligne et par colonne dans des tableaux TOTLIG et TOTCOL.

________________________________________________________________________

Analyse Informatique Algèbre Anglais …

10 02 15 14 …08 05 02 1412 11 17 1514 12 18 15

8

MAT

MOYENNE 

NOM

Page 9: Support Cours d'Info Pour La 2éme Année

CorrigéExercice 1.2Exemple pour X=2, Y=5,Z=9, N=7> restart:X:=2:Y:=5:Z:=9:N:=12: if N<X then Z:=Y:Y:=X:X:=N elif N<Y then Z:=Y:Y:=N elif N<Z then Z:=N fi:print(X,Y,Z);

, ,2 5 7

Exercice 2.2> max3:=proc(a::posint,b::posint,c::posint) local max2; max2:=proc(x::posint,y::posint) if x>y then x else y fi; end; max2(a,max2(b,c)); end; > max3(5!,5^3,123);

125

> max3(5,53,123);123

Exercice 3.2> restart;> second_degre:=proc(a,b,c) local delta; if a=0 then ERROR (`a doit être non nul`) else delta:=b^2-4*a*c; if delta<0 then print(`pas de solution`) elif delta=0 then print(`racine double `,x=-b/(2*a)) else print (`2 racines distinctes `,x=(-b-sqrt(delta))/(2*a),x=(-b+sqrt(delta))/(2*a)) fi; fi;end;> second_degre(1,7,2);

, ,2 racines distinctes x 72

12

41 x 72

12

41

Exercice 1.3> restart;> diagonale2:=proc(T,n)local i,s;s:=0:for i from 1 to n do s:=s+T[i,n+1-i]od:print(s):end;> a:=array([[1,1,5],[0,2,0],[0,4,3]]);

:= a

1 1 5

0 2 0

0 4 3

________________________________________________________________________ 9

Page 10: Support Cours d'Info Pour La 2éme Année

> diagonale2(a,3);7

Exercice 2.3> restart:> with(linalg):transfert:=proc(M)local i,j,k,L,C,V;k:=1:V:=vector(rowdim(M)*coldim(M));for i from 1 to rowdim(M) do for j from 1 to coldim(M) do V[k]:=M[i,j];k:=k+1: od;od;print(V);end;

> M:=matrix(2,3,[a,b,c,c,d,e]);

:= M

a b c

c d e

> transfert(M);[ ], , , , ,a b c c d e

Exercice 3.3> #tri décroissant > restart; n:=5;for i from 1 to n do x[i]:=readstat(`x=`):od:for k from 1 to n-1 domaxo:=x[k]: j:=k:for i from k+1 to n do if(x[i]>maxo) then maxo:=x[i]: j:=i: fi:od:s:=x[j]: x[j]:=x[k]: x[k]:=s:od:for i from 1 to n dox[i]:=x[i]od;

:= n 5

x=-1;x=2;x=14;x=124;x=-154;

:= x1 124

:= x2 14

:= x3 2

:= x4 -1

:= x5 -154

________________________________________________________________________ 10

Page 11: Support Cours d'Info Pour La 2éme Année

Problème 1Méthode Nous utilisons deux indices : indele, correspondant à l’indice ligne de l’étudiant, et indmat correspondant à l’indice colonne des moyennes par matière.Pour effectuer la moyenne générale de l’étudiant, nous additionnons les moyennes une à une et nous divisons cette somme par 10, nous cumulons ces moyennes générales pour obtenir la moyenne de la classe.

Algorithme relevéVar

mat(1 :10), nom(1 :32) : tableau de chaîne de caractèresmoyenne(1 :32,1 :10) : tableau de réelsindele, indmat : entiersmoygen, moycla : réels

début(* saisie des différents tableau*)POUR indmat de 1 à 10

Ecrire (`` entrer le nom de la matière numéro : ``, indmat)Lire(mat(indmat))

FPOURPOUR indele de 1 à 32

Ecrire(``entrer le nom de l’étudiant numéro : ``, indele)Lire(nom(indele)POUR indmat de 1 à 10

Ecrire(`` entrer sa moyenne obtenue en ``,mat(indmat))Lire(moyenne(indele,indmat))

FPOURFPOURmoycla 0(*répétitive principale*)POUR indele de 1 à 32

moygen 0POUR indmat de 1 à 10 Moygen moygen,+moyenne(indele,indmat)FPOUR

moycla moycla+moygenFPOUREcrire(``moyenne générale de la classe ``,moycla/32

Fin algorithme.

________________________________________________________________________ 11

Page 12: Support Cours d'Info Pour La 2éme Année

Séance 2 [3]

Fonctions réelles à une seule variable

I) Les fonctions usuelles : Rappel Différents outils pour travailler avec les fonctions numériques (définition de la fonction, domaine de définition, valeurs, point d'inflexion, dérivées, intégrales, limites, changements de variables, développements limités et asymptotique, courbes etc.). Un résumé des fonctions les plus utilisées est ci-dessous présenté.Soit f une fonction à une variable x. Remarque importante : f est une fonction mais f(x) est une expression polynomiale.

Rôle Syntaxe ExempleDéfinir une fonction à une variable

> f:=x ->expression(x); ou> f :=unapply(expression, x) ;

> f:= x->(x^2 +1)/x;

:= f x

x2

1

x

Calculer la fonction en 1 point x

f(x) ; > f(2) ;

5

2

Déterminer le domaine de définition

> readlib(singular) : singular(f(x));Remarque : Il faut charger singular avec readlib(singular) avant de l’utiliser.

> readlib(singular): singular(f(x));

, ,{ }x 0 { }x { }x

Etudier la parité de f par (f(x)=f(-x))

> evalb(f(x)=f(-x)) ; > evalb(f(x)=f(-x));

false

Etudier la continuité sur ]a,b[.Le paramètre ‘closed’ permet d’étudier la continuité sur [a,b]

> readlib(iscont) : iscont(f(x), x=a..b) ;> iscont(f(x), x=a..b, ‘closed’) ;

> readlib(iscont):iscont(f(x),x=-1..1);

false

Déterminer les points de discontinuité

> readlib(discont) : discont(f(x), x);Remarque : il n’est pas nécessaire de charger discont lorsque la fonction iscont est déjà chargée.

> discont(f(x),x) ;

{ }0

Déterminer la fonction dérivée

> D(f) ; => donne la fonction dérivée 1ere

Remarque : @@ est l'opérateur de composition itérée> (D@@n)(f) ; => donne la fonction dérivée n ième

> D(f);

x 2x

21

x2

> (D@@2)(f); #ou D(D(f)) ;

x 21

x2

x2

1

x3

Dériver l’expression f(x)

> diff(f(x),x) ;> Diff(f(x),x) ; => forme inerte

>diff(f(x),x,...,x) ; ou diff(f(x),x$n) ; => dériver l'expression f(x) n fois par

> Diff(f(x),x)= diff(f(x),x) ;

x

x2

1

x2

x2

1

x2

> diff(f(x), x$2);

________________________________________________________________________ 12

Page 13: Support Cours d'Info Pour La 2éme Année

rapport à xRemarque : $ est l'opérateur de répétition.

21

x2

x2

1

x3

Déterminer la primitive de l’expression f(x)

> int(f(x), x) ; > Int(f(x),x) = int(f(x),x) ;

d

x2

1

xx

1

2x

2( )ln x

Intégrer l'expression f(x) entre a et b

> int(f(x), x=a..b) ; Remarque : Int(f(x), x=a..b) est la forme inerte de int.

> Int (f(x),x = 1 .. 2) = int (f(x),x = 1 .. 2) ;

d

1

2

x2

1

xx

3

2( )ln 2

Déterminer un développement asymptotique

> asympt(f(x),x) ; > asympt(f(x),x) ;

x

1

x

Déterminer un développement limité en a

> taylor(f(x), x=a, ordre) ;

> series(f(x), x=a, ordre) ; Remarque : l’ordre est égal à 6 par défaut (variable globale Order)

> taylor(f(x), x=0, 2);Error, does not have a taylor expansion, try series()> series(f(x),x=0, 2) ; x-1+O(x)

Calculer la limite en a

> limit(f(x),x=a,dir)Remarque : dir (optionel) est la direction = left, right, real, complex.Limit est la forme inerte.

> Limit(f(x),x=0,left)=limit(f(x),x=0,left);

lim -x 0

x2

1

x

Représenter graphiquement.Pour représenter simultanément plusieurs fonctions il faut les encadrer par des crochets :[ ]

> plot(f, H,V), plot3d(f, H,V), etc.H et V étant les axesRemarque : pour l’utilisation de ces fonctions, consulter l’aide.

> plot(g, H,V), plot3d(g, H,V) ;

II) Exercices à résoudreExercice N°1 a) Ecrire la commande Maple qui affecte à P l'expression e1/x(x(x+2))1/2 en utilisant les fonctions exp, sqrt et *.b) Convertir l’expression P en une fonction f (en utilisant unapply).c) Cette fonction présente des branches infinies, déterminer les expressions affines associées à ces asymptotes en utilisant la fonction limit.Rappel : Si une courbe d’équation y= f(x) est asymptote à la droite d’équation y = ax+b, alors

a limx

( )f x

x et

b limx

( )f x a x

d) Représenter la courbe avec ses asymptotes pour x compris entre -5 et 5.

________________________________________________________________________ 13

Page 14: Support Cours d'Info Pour La 2éme Année

e) Ecrire une même commande Maple qui calcule et factorise l’expression de la dérivée de f à l'aide de D et factor.f) Ecrire une même commande Maple pour calculer et factoriser l’expression de la dérivée de f à l'aide de diff et factor. g) Ecrire une même commande Maple pour calculer et factoriser la dérivée seconde de f avec diff et factor.Exercice N°2Etudier la fonction définie par :

( )f xx

21

x ( )ln x

Cette étude consiste à : Définir la fonction ; Calculer la fonction f en certains points (positifs et négatifs); Déterminer le domaine de définition ; Tracer la courbe sur l’intervalle [0, + [ ; Etudier le comportement de la fonction ;

- en 0 et + ;- au point 1. Déterminer dans ce cas, la tangente au point d’abscisse 1.

Etudier les variations de la fonction f.

Alternative de correction

Exercice N°1

a°) Définition de f.

> restart: P:=exp(1/x)*sqrt((x*(x+2)));

b°) Convertir P en une fonction.

> f:=unapply(P,x);

c°) Etude des branches infinies.

> a:=limit((f(x))/x,x=infinity);

> b:=limit(f(x)- a*x, x=infinity);

________________________________________________________________________ 14

Page 15: Support Cours d'Info Pour La 2éme Année

> eq:=a*x+b;

Vérifions le résultat avec asympt :

> asympt(f(x),x,1);

d°) Représentation de f et de eq

> plot([f(x),eq], x=-5..5, y=-10..10);

e°) Dérivée de f avec D.

> fD:=factor(D(f)(x));

f°) Dérivée de f avec diff.

> fd:=factor(diff(f(x),x));

g°) Dérivée seconde de f

________________________________________________________________________ 15

Page 16: Support Cours d'Info Pour La 2éme Année

> fd2:=factor(diff(f(x),x$2));

Exercice N°2

Définir la fonction f

> restart: f:=x-> (x^2-1)/(x*ln(x));

Calculer la fonction en un point

> evalf(f(2));evalf(f(-2));

Domaine de définition

> readlib(singular):singular(f(x));

Comme Maple travaille avec des fonctions d'arguments complexes, la fonction logarithmique est définie aussi pour x<0. Nous allons nous placer dans le cadre usuel des fonctions numériques et

prendre comme domaine de définition de f l'ensemble Df=]0,1[U]1,+ [

Tracer la fonction peut se faire de différentes manière.

> plot(f(x), x=0..10, y=0..10, style=point,discont = false);

> plot(f(x), x=0..10, y=0..10, style=point,discont = true);

> plot(f(x), x=0..infinity, y=0..infinity);

________________________________________________________________________ 16

Page 17: Support Cours d'Info Pour La 2éme Année

> plot([f(x),x], x=0..infinity, y=0..infinity);

________________________________________________________________________ 17

Page 18: Support Cours d'Info Pour La 2éme Année

On a l'impression trompeuse que les courbes se rejoignent alors qu'il n'en est rien :

> limit(f(x)-x, x=infinity);

Continuité ? f est continue en tout point du domaine de définition

> readlib(iscont):iscont(f(x),x=-1..infinity);

> readlib(discont):discont(f(x),x);

Etude de la fonction en 0, 1 et +

Etude en 0 : cherchons la limite en zéro (penser à utiliser la forme inerte de limit):

> Limit(f(x), x=0)=limit(f(x), x=0);

Comme on pouvait s'y attendre, Maple ne trouve pas de limite. Il faut donc préciser que la limite est à droite de zéro

> Limit(f(x), x=0, right)=limit(f(x), x=0, right);

Etude en 1:

> Limit(f(x), x=1)=limit(f(x), x=1);

________________________________________________________________________ 18

Page 19: Support Cours d'Info Pour La 2éme Année

Ici pas de Pb

Déterminons la tangente au point 1 en utilisant un développement limité:

> taylor(f(x), x=1 );

On peut penser à définir le prolongement par continuité de f en 1 par :

> fp:=x-> if x=1 then 2 else f(x) fi; diff(fp(x),x);

mais on remarque que cette dérivée n'est pas valable en 1.

Etude en + : cherchons une fonction asymptote (soit asympt, taylor ou series)

> asympt(f(x),x);series(f(x),x);taylor(f(x),x);

Error, does not have a taylor expansion, try series()

le résultat n'est autre que la fonction elle même. On peut quand même dire que la fonction f est

asymptote à x->

puisque le 2ième terme a pour limite 0

> limit(-1/(ln(x)*x), x=infinity);

tracons les 2 courbes sur un même dessin :

________________________________________________________________________ 19

Page 20: Support Cours d'Info Pour La 2éme Année

> plot({f(x), x/ln(x)},x=0..50,y=0..50);

> plot({f(x), x/ln(x)},x=0..50,y=0..50, discont=true); plot({f(x), x/ln(x)},x=0..50,y=0..50, color=[red,blue], style=[point,line], discont=true);

Variations :

On peut définir la fonction dérivée df par:

> df:=D(f);

La dérivée en x est donc :

> `f'(x)`= normal(df(x));

________________________________________________________________________ 20

Page 21: Support Cours d'Info Pour La 2éme Année

ou encore

> `f'(x)`=normal(diff(f(x),x));

Cherchons les valeurs qui annulent cette dérivée:

Regarqons le domaine de définition de df avant :

> singular(df(x));

> solve(df(x)); fsolve(df(x));

> plot(df);

La dérivée est négative sur l'intervalle ]0, 1[ et positive sur l'intervalle ]1, + [

________________________________________________________________________ 21

Page 22: Support Cours d'Info Pour La 2éme Année

Séance 3 [3]

Fonctions réelles à deux variables

I) Les fonctions usuelles : Rappel Les différents outils proposés pour travailler avec les fonctions numériques à une variable sont valables également pour les fonctions à deux variables (définition de la fonction, domaine de définition,valeurs, point d'inflexion, dérivées, intégrales, limites, changements de variables, développements limités et asymptotiques, courbes etc.). Un résumé des fonctions les plus utilisées est présenté au TP sur les fonctions numériques à une variable. Dans ce rappel on se focalisera sur les fonctions présentant une syntaxe différente lorsque la fonction est à deux variables ou plus.Soit g une fonction à deux variables x et y.

g fonction à deux variables ExempleDéfinition g:=->(x,y)->expression(x,y) ;

g :=unapply(expression, (x,y)) ;

> restart: g:=(x,y)->x^2*sin(y)/x;

:= g ( ),x y x ( )sin y

Calcul en 1 point

g(x,y) ; > g(3,sqrt(3));

3 ( )sin 3

Domaine de définition

readlib(singular) : singular(g(x,y)) ;

> readlib(singular) : singular(g(x,y)) ;

,{ },x y y { },y y x

Fonction dérivée > D[1](g) ; => fonction dérivée par rapport à la 1ere variable.> D[2](g) ; => fonction dérivée par rapport à la 2ième variable.> D[1,2](g) ; => même ordre.

> (D[1]@@n)(g) ; => fonction dérivée nième par rapport à la 1ere variable.> (D[2]@@n)(g) ; => fonction dérivée nième par rapport à la 2ième variable.

> D[1](g) ;

( ),x y x ( )cos y

> D[2](g) ;

( ),x y ( )sin y

> D[1,2](g) ;

( ),x y ( )cos y

> (D[1]@@2)(g) ;

0

(D[2]@@2)(g) ;

( ),x y x ( )sin y

Dériver l’expression

>diff(g(x,y),x,y) ;=>dériver l'expression g(x,y) par rapport à x puis par rapport à y. >Diff(g(x,y),x,y) ; => forme inerte de diff(g(x,y),x,y) > diff(g(x,y),x,y$n) ; => dériver g(x) 1 fois par rapport à x puis n fois par rapport à y.

> Diff(g(x,y),x,y)=diff(g(x,y),x,y);

2

y xx ( )sin y ( )cos y

> Diff(g(x,y),x,y$2)=diff(g(x,y),x,y$2) ;

3

y2

x

x ( )sin y ( )sin y

Primitive de g(x,y)

> int(g(x,y), x) ; ou int(g(x,y), y) ;

> Int(g(x,y),x)=int(g(x,y),x);

d

x ( )sin y x

1

2x

2( )sin y

Intégrer l'expression entre a et b

> int(g(x,y), x=a..b) ; ou int(g(x,y), y=a..b) ; > Int(g(x,y), x=a..b) ; ou

> Int(x*sin(y),y = 0 .. x) = int(x*sin(y),y = 0 .. x) ;

________________________________________________________________________ 22

Page 23: Support Cours d'Info Pour La 2éme Année

Int(g(x,y), y=a..b) ; => forme inerte

d

0

x

x ( )sin y y x ( )cos x x

Développement asymptotique

> asympt(g(x,y),x) ;> asympt(g(x,y),y) ;

> asympt(g(x,y),x);

x ( )sin y

Développement limité en a

> taylor(g(x,y), x=a, ordre) ;> taylor(g(x,y), y=a, ordre) ; Remarque : l’ordre est égal à 6 par défaut (variable globale Order)

> taylor(g(x,y),x=0, 4);

( )sin y x

> taylor(g(x,y),y=0, 4);

x y

1

6x y

3( )O y

4

Calcul de limite en a

> limit(g(x,y),x=a,dir) ;> limit(g(x,y),y=a,dir) ;Remarque : dir (optionel) est la direction = left, right, real, complex.Limit est la forme inerte.

>Limit(g(x,y),x=0,left)=limit(g(x,y),x=0,left);

lim -x 0

x ( )sin y 0

Représentation graphique

> plot3d(g, H,V)H et V étant les axesRemarque : pour l’utilisation de cette fonction, consulter l’aide.

> plot3d(g(x,y),x=-1..1,y=-1..1);>plot3d(g(x,y),x=-1..1,y=-1..1, coords=spherical,style=patch);

II) Exercice à résoudreEtudier la fonction g (en particulier la continuité et la différentiabilité ) définie par :

( )g ,0 0 0

( )g ,x y ( )x2

y2

sin1

x2

y2

pour tout (x,y) (0,0)Dans cet exercice, il faut avoir la sagesse de vérifier les résultats affichés par Maple mathématiquement.

Alternative de Correction

Exercice :

Définir la fonction g :

> restart:g:=(x,y)->if x=0 and y=0 then 0 else (x^2+y^2)*sin(1/(x^2+y^2)) fi;

Domaine de définition :

> readlib(singular):singular(g(x,y));

Vérifions par représentation graphique:

> plot3d(g(x,y), x=-10..10, y=-10..10);

________________________________________________________________________ 23

Page 24: Support Cours d'Info Pour La 2éme Année

> plot3d(g(x,y), x=0..10, y=0..10,coords=spherical,style=patch );

Continuité en (0,0) :soit en faisant un changement de variables soit en passant aux coordonnées polaires.

passons aux coordonnées polaires

> z:=g(rho*cos(theta), rho*sin(theta));

en plus simple :

> z:=simplify(z);

Calcul de la limite

> limit(z,rho=0);

La fonction est donc continue en (0,0)

Dérivabilité en (0,0)

> dgx:=D[1](g) ;# fonction dérivée partielle par rapport à x

________________________________________________________________________ 24

Page 25: Support Cours d'Info Pour La 2éme Année

> dgy:=D[2](g) ;# fonction dérivée partielle par rapport à y

Ces définitions nous conviennent parfaitement ainsi :

> dgx(x,y);

> dgx(0,0);

> dgy(x,y);

> dgy(0,0);

ou encore

> Diff('g(x,y)', x)=eval(diff(g(x,y), x), x=0); #idem pour y

On peut procéder autrement en vérifiant les taux d'accroissements et

qui doivent avoir des limites en 0 surtout lorsque les fonctions dérivées ne sont pas définies en ces points.

> tx0:=(g(x,0)-g(0,0))/x; limit(tx0, x=0);

________________________________________________________________________ 25

Page 26: Support Cours d'Info Pour La 2éme Année

Regardons les dérivées partielles d'ordre 2

> dg2x:=(D[1]@@2)(g) ;# fonction dérivée partielle par rapport à x

> dg2x(0,0);

> dg2y:=(D[2]@@2)(g) ;# fonction dérivée partielle d'ordre 2 par rapport à y

> dg2y(0,0);

> plot3d(dgx,-2..2,-2..2, axes=BOXED);

>

Séance 4 [4]

________________________________________________________________________ 26

Page 27: Support Cours d'Info Pour La 2éme Année

Polynômes et fractions rationnelles

Pour les exemples suivants, on suppose que P est le polynôme défini comme suit :>P :=(x^2+x+2)^5 ;

:= P ( )x2 x 25

Fonction Rôle Exempleexpand Développer un polynôme >expand(P) ;

.................................................................sort Ordonner un polynôme dans l’ordre

décroissant de la puissance de ses termes>sort(expand(P)) ;………………………………………> sort(x^2-y^2*x^3+x^2*y^4+y+x , x);………………………………………….> sort(x^2-y^2*x^3+x^2*y^4+y+x , y);…………………………………………

factor Factoriser un polynôme ou une fraction >factor(x^2-1) ;…………………………………………

simplify Simplifier un polynôme ou une fraction >simplify((x^3+1)/(x+1)^2) ;………………………………………

degree Donner le degré d’un polynôme >degree(P) ;ldegree Donner le plus petit degré d’un polynôme >ldegree(P) ;lcoeff Donner le coefficient du plus grand terme

d’un polynôme>lcoeff(P) ;

tcoeff Donner le coefficient du plus petit terme d’un polynôme

>tcoeff(P) ;

coeff Donner le coefficient d’un terme quelconque d’un polynôme

>coeff(P,x^2) = coeff(P, x, 2) ; .................................................................

gcd Donner le plus grand commun diviseur de deux polynômes

> gcd(x^2-y^2,x^3-y^3);…………………………………………> gcd(6,-8, a , b);a ;b ;…………………………………………

lcm Donner le plus petit commun multiple de deux polynômes

> lcm(x^2-y^2,x^3-y^3);

collect Grouper les coefficients d’un même terme Q :=a*ln(x)-ln(x)*x-x ; collect(Q,x) ;……………………………………………………………………………………

divide Vérifier si deux polynômes sont divisibles >divide(x^3-y^3,x-y) ;>divide(x^3-y^3,x-y , quotient) , quotient ;…………………………………………

quo Donner le quotient de la division de deux polynômes

>quo(x^3+x+1,x^2+x+1, x) ;…………………………………………>quo(x^3+x+1,x^2+x+1, x , reste) , reste ;…………………………………………

rem Donner le reste de la division de deux polynômes

>rem(x^3+x+1,x^2+x+1, x) ;…………………………………………>rem(x^3+x+1,x^2+x+1, x , quotient) , quotient ;

normal Mettre une fraction sous sa forme normalisée >normal((x^2-y^2)/(x-y)^3) ;

________________________________________________________________________ 27

Page 28: Support Cours d'Info Pour La 2éme Année

…………………………………………eval Evaluer un polynôme pour une valeur donnée

de sa variable>eval(P,x=1) ;.................................................................>eval(x^2-y^2,{x=0,y=1}) ;.................................................................

subs Substituer une expression par une autre dans un polynôme

>subs(x^2=y , y=z , x^2+2*y) = subs(y=z , subs(x^2=y , x^2+2*y));…………………………………………> subs(y=z , x^2=y , x^2+2*y) ; …………………………………………

solve Résoudre des équations ou des inéquations > solve(x-2*y=0)=solve(x-2*y);>solve({x+2*y=3,-x^2+2*y=1},{x,y}) =  solve({x+2*y=3,-x^2+2*y=1});…………………………………………

nops Nombre des opérandes d’une expression >nops(P) ;op Liste des opérandes d’une expression >op(P) ;

>op(n,P) ;#l’opérande du rang n dans P>op(1..2,P) ; #liste des opérandes allant du rang 1 au rang 2

> Convert(F,parfrac,x) ; décomposer la fraction F en éléments simplesexple : > convert ((x^5+1) / (x^4-x^2), parfrac, x) ;

EXERCICE 1   :

1. Définir le polynôme P = (3x2y + xy

2 - x - 2y +xy +2)(x + 1)

2. Développer P

3. Ordonner les termes de P selon xy

4. Donner les coefficients des termes xy et x2y

2

5. Regrouper les termes en x2y et en xy

2

EXERCICE 2   :

On considère la fraction rationnelle F définie par F := 6 x2 18 x 24

x2 21. Définir F2. Factoriser le numérateur de F 3. Trouver les racines du dénominateur de F et le factoriser 4. Décomposer F en éléments simples

Exercice 3 :Trouver un polynôme P tel que

P2 = x8 – 2x6 – 3 x4- 4x2 + 4Exercice 4   :

Soit la fraction rationnelle F définie par : := Fx6

( )x2 12

( )x 1 2

La décomposition de F en éléments simples dans R s’écrit :

:= G ab x c

x2 1

d x e

( )x2 12

fx 1

g

( )x 1 2

On réduit les fractions composantes de G au même dénominateur et on identifie les numérateurs de F et de G. En déduire les valeurs de a, b, c, d, e, f, g.

________________________________________________________________________ 28

Page 29: Support Cours d'Info Pour La 2éme Année

Correction   : Exercice 1   :

> restart;F:=(6*x^2+18*x-24)/(x^2+2);

:= F 6 x2 18 x 24

x2 2> factor(numer(F));

6 ( )x 4 ( )x 1

> solve(denom(F));,I 2 I 2

> factor(denom(F),{I,sqrt(2)}); ( ) x I 2 ( )x I 2

> convert(F,parfrac,x);

6 36 18 x

x2 2Exercice 2   : > restart;P:=sum(a[i]*x^i,i=0..4);

:= P a0

a1

x a2

x2 a3

x3 a4

x4

> E:=expand(P^2)-(x**8+2*x**6-3*x**4-4*x**2+4);

E a0

2a

1

2x2 a

2

2x4 a

3

2x6 a

4

2x8 2 a

1x3 a

22 a

1x4 a

32 a

1x5 a

42 a

2x5 a

3 :=

2 a2

x6 a4

2 a3

x7 a4

2 a0

a1

x 2 a0

a2

x2 2 a0

a3

x3 2 a0

a4

x4 x8 2 x6

3 x4 4 x2 4 > solve({seq(coeff(E,x,k),k=0..8)});

,{ }, , , ,a1

0 a0

-2 a3

0 a2

1 a4

1 { }, , , ,a1

0 a3

0 a2

-1 a0

2 a4

-1

> assign(");P; 2 x2 x4

Exercice 3   : > restart;F:=x^6/((x^2+1)^2*(x+1)^2);

:= Fx6

( )x2 12

( )x 1 2

> G:= a + (b*x+c)/(x^2+1) + (d*x+e)/(x^2+1)^2 + f/(x+1) + g/(x+1)^2;denom(G);

:= G ab x c

x2 1

d x e

( )x2 12

fx 1

g

( )x 1 2

( )x2 12

( )x 1 2

> N:=convert(numer(G),polynom)-x**6;

N g a c b x d x 2 b x2 2 c x3 2 c x d x3 c x4 2 b x4 b x5 a x6 2 a x5 :=

3 a x4 4 a x3 3 a x2 2 a x 2 b x3 2 c x2 x6 e f f x4 2 f x2 f x g x4

2 g x2 2 f x3 f x5 2 d x2 e x2 2 e x > V:=expand((a*((x**2+1)**2)*((x+1)**2))+ (b*x+c)*((x**2+1)*((x+1)**2)) + (d*x+e)*(x+1)^2 + f*(x+1)*(x**2+1)**2 + g*(x^2+1)^2)-x**6;

________________________________________________________________________ 29

Page 30: Support Cours d'Info Pour La 2éme Année

V g a c b x d x 2 b x2 2 c x3 2 c x d x3 c x4 2 b x4 b x5 a x6 2 a x5 :=

3 a x4 4 a x3 3 a x2 2 a x 2 b x3 2 c x2 x6 e f f x4 2 f x2 f x g x4

2 g x2 2 f x3 f x5 2 d x2 e x2 2 e x > N-V;

0

> solve({seq(coeff(N,x,K)=0,K=0..degree(N))},{a,b,c,d,e,f,g});

{ }, , , , , ,a 1 c-14

b -1 d12

e 0 g14f -1

> assign(");F=G;

x6

( )x2 12

( )x 1 2 1 x

14

x2 1

12

x

( )x2 12

1x 1

14

( )x 1 2

________________________________________________________________________ 30

Page 31: Support Cours d'Info Pour La 2éme Année

Séance 5 [2]

Nombres Complexes / Fonctions Complexes

I. Rappel de cours :

Un nombre complexe s’écrit de différentes formes:

- une forme cartésienne : a+I.b

- une forme trigonométrique : r ( )( )cos I ( )sin

- une forme exponentielle: r e( )I

- une forme polaire : ( ,r )Remarque : le complexe I doit s’écrire en majusculeExemples:> 2 – 3 * I ;

2 – 3 I>( 4-2*I )*( 1-I ) ;

6 - 2 I> ( x- ( 1 - I ) * y )+(y + 2 * x * I) ;

x + ( 1-I ) y +y + 2 I x

Plusieurs fonctions de manipulation des nombres complexes sont fournies par MAPLE, parmi lesquelles, on peut citer :

Rôle Syntaxe ExemplePartie réelle d’un nombre complexe

Re(nombre complexe) >Re((2-I) * (3+5*I)) ; 11

Partie imaginaire d’un nombre complexe

Im(nombre complexe) >Im((2-I) * (3+5*I)) ; 7

Evaluation d’un nombre complexe

evalc( nombre complexe) >evalc(2^(1+I)) ; 2*cos(ln(2))+2*I*sin(ln(2))

Conjugué d’un nombre complexe

conjugate(nombre complexe) >conjugate((3+5*I)*(1-2*I)) ; 13 + I

Argument d’un nombre complexe

argument(nombre complexe) >argument(3+I) ; arctan(1/3)

Conversion en coordonnées polaires

polar(nombre complexe) >polar(3+4*I) ; polar(3+4*I)

Transformation géométrique dans le plan complexe

conformal(f(z),z=zi..zf) ; > f:=z->z^3; f:=z z3

with (plots):conformal(f(z),z=-1-I..1+I);

II. Exercices d’application :

________________________________________________________________________ 31

Page 32: Support Cours d'Info Pour La 2éme Année

Exercice1   : Donner la forme cartésienne des nombres complexes suivants :

a. (1-i )n b. (-1-i )7 c. -2*(cos /4 -i sin /4 ) d. -7+2 i 3*(cos /6 + i sin /6) 5 + 4 i

Exercice 2 :

Convertir la forme cartésienne des nombres suivants en forme polaire :

a. 6 6 I 3 c. -7 24 I e.

b. 1 I 3 d.

45

35

I

Exercice 3 :

Trouver le modules des nombres complexes suivants :

a. 5 11 I 3

7 4 I 3 b.

7297

6597

I c. 648 648 I 3

Exercice 4 :

Résoudre les équations à variables complexes : a. x3 x2 ( )1 a I a a x ( )1 I I a I a2 0

b. ( )1 I z = ( )1 I z 4

2 I 1 2 I

c. x6 I 0

Déterminer, de 2 manières différentes, les coordonnées polaires de chaque racine trouvée.

Exercice 5 :Montrer que si z = a+bi (a,b IR) satisfait l'équation z2 z 1 0 , alors le conjugué de z satisfait

aussi cette équation.

Exercice 6:Soit f une fonction définie sur C par f(z)=

z 2 Iz 2 I

a. Déterminer le domaine de définition de f b. Trouver l’image de (1+i)3 par la fonction f. Donner sa forme cartésienne et sa forme polairec. Déterminer les points fixes relatifs à fd. Résoudre l’équation f(z)=0

e. Représenter sur le plan complexe la courbe de f telle z varie entre (-1-2 i) et (1+ i ).

________________________________________________________________________ 32

Page 33: Support Cours d'Info Pour La 2éme Année

CorrectionExercice1 : donner la forme cartésienne des nombres complexes suivants:> restart;c:=evalc((1-I)^n);

:= c e( )/1 2 n ( )ln 2

cos

14

n I e( )/1 2 n ( )ln 2

sin

14

n

> evalc((-2*(cos(Pi/4)-I*sin(Pi/4)))/(3*(cos(Pi/6)+I*sin(Pi/6))));

16

2 316

2 I

16

2 316

2

> evalc((-1-I)^7);-8 8 I

> evalc((-7+2*I)/(5+4*I));

-2741

3841

I

Exercice2 : convertir la forme cartésienne en forme polaire> restart;a:=convert(-6+6*sqrt(3)*I,polar);

:= a

polar ,12

23

> b:=convert(-1+sqrt(3)*I,polar);

:= b

polar ,2

23

> c:=convert(Pi,polar); := c ( )polar , 0

> d:=convert(-7+24*I,polar);

:= d

polar ,25

arctan

247

> e:=convert(4/5+(3/5)*I,polar);

:= e

polar ,1

arctan

34

Exercice 3: module d'un nombre complexe:> restart;evalf(sqrt(Re(evalc((5+11*sqrt(3)*I)/(7-4*sqrt(3)*I)))^2+Im(evalc((5+11*sqrt(3)*I)/(7-4*sqrt(3)*I)))^2));evalf(sqrt(Re(evalc((13+5*I)/(13-5*I)))^2+Im(evalc((13+5*I)/(13-5*I)))^2));evalf(sqrt(Re(evalc(648-648*sqrt(3)*I))^2+Im(evalc(648-648*sqrt(3)*I))^2));

2.1.

1296.Exercice 4: résoudre des équations à variables complexes:> r:=solve(x^3-x^2*(1+a+I*a)+a*x*(1+I+I*a)-I*a^2,x);

:= r , ,a I a 1> s:=solve((1-I)*z/(2+I)=((1+I)*z+4)/(1-2*I),z);

:= s -1 I> t:=solve(x^6-I=0,x);

t

14

14

514

I 2 5 5 I

14

14

514

I 2 5 5 I, , :=

14

14

514

I 2 5 5 I

14

14

514

I 2 5 5 I, ,

12

212

I 2 12

212

I 2,

> for i from 1 to 6 doprint(`les coordonnées polaires de la racine n°`,i,` sont: `); print(`module=`),evalf(sqrt(Re(evalc(t[i]))^2+Im(evalc(t[i]))^2));________________________________________________________________________ 33

Page 34: Support Cours d'Info Pour La 2éme Année

print(`argument=`),argument(evalc(t[i]));od;

, ,"les coordonnées polaires de la racine n°" 1 " sont: "

"module="

1.000000000

"argument="

arctan

14

5 5

18

18

5 2

18

518

214

5 5

, ,"les coordonnées polaires de la racine n°" 2 " sont: "

"module="

.9999999999

"argument="

arctan

14

5 5

18

18

5 2

18

18

5 214

5 5

, ,"les coordonnées polaires de la racine n°" 3 " sont: "

"module="

.9999999999

"argument="

arctan

14

5 5

18

18

5 2

18

18

5 214

5 5

, ,"les coordonnées polaires de la racine n°" 4 " sont: "

"module="

1.000000000

"argument="

arctan

14

5 5

18

18

5 2

18

518

214

5 5

, ,"les coordonnées polaires de la racine n°" 5 " sont: "

"module="

1.

"argument="

________________________________________________________________________ 34

Page 35: Support Cours d'Info Pour La 2éme Année

14

, ,"les coordonnées polaires de la racine n°" 6 " sont: "

"module="

1.

"argument="

34

> for i from 1 to 6 dopolar(evalc(t[i]));od;

polar

18

518

214

5 52

14

5 5

18

18

5 22

,

arctan

14

5 5

18

18

5 2

18

518

214

5 5

polar

18

18

5 214

5 52

14

5 5

18

18

5 22

,

arctan

14

5 5

18

18

5 2

18

18

5 214

5 5

polar

18

18

5 214

5 52

14

5 5

18

18

5 22

,

arctan

14

5 5

18

18

5 2

18

18

5 214

5 5

polar

18

518

214

5 52

14

5 5

18

18

5 22

,

arctan

14

5 5

18

18

5 2

18

518

214

5 5

________________________________________________________________________ 35

Page 36: Support Cours d'Info Pour La 2éme Année

polar ,1

14

polar ,1

34

Exercice 5: montrer que si z = a+bi (a,b appartiennent à IR) satisfait l'équation z^2+z+1 = 0 alors le conjugué de z satisfait aussi cette équation> restart;z:=a+b*I;tab:=solve(z**2+z+1=0);

:= z a I b

:= tab ,{ },b b a 12

I b12

I 3 { },b b a 12

I b12

I 3

> assign(tab[1]);x:=evalc(conjugate(z));

:= x 12

12

I 3

> a:='a';b:='b';assign(tab[2]);y:=evalc(conjugate(z));

:= a a := b b

:= y 12

12

I 3

> evalc(x**2+x+1);0

> evalc(y**2+y+1);0

Exercice 6: étude de fonctions complexes > restart;f:=z->(z+2*I)/(z-2*I);

:= f zz 2 Iz 2 I

> singular(f(z));{ }z 2 I

> c:=f((1+I)^3);polar(c); := c 1 2 I

( )polar ,5 ( )arctan 2> solve(f(z)=z);

,12

I12

-3 12 I 12

I12

-3 12 I

> solve(f(z)=0);-2 I

> with(plots):conformal(f(z),z=-1-2*I..1+I);

________________________________________________________________________ 36

Page 37: Support Cours d'Info Pour La 2éme Année

Séance 6 [5]

Algèbre linéaire :

Partie A : Fonctions prédéfinies

Pour charger un package, il faut utiliser la commande (with). Pour utiliser les fonctions relatives à l'algèbre linéaire il faut charger la bibliothèque linalg "linear algebra" par la commande with(linalg);N.B : A chaque restart il faudra recharger la bibliothèque.

Déclaration Utilisation

Chargement de la bibliothèque d’algèbre linéaire

>with(nom_du_package);

>with(linalg) :Ainsi, avec cette commande, les différentes fonctions prédéfinies pour la manipulation des matrices et vecteurs sont chargées.

Entrée d’une matrice:Il existe différentes manières pour déclarer une matrice, nous présentons les principales:

1°>M 1:=matrix(nbl,nbc,[liste des éléments de ma matrice]) ;2°>M2 :=matrix([[éléments ligne 1],[ éléments linne 2],[ éléments ligne 3]]) ;3°>f :=(i,j)->i+j-1 ;M3 :=matrix(nbl,nbc,f) ;(où nbl, nbc et f désignent respectivement le nombre de ligne, le nombre de colonnes, et une fonction à deux variables (i et j) désignant l’indice ligne et l’indice colonne4°>Matrice à coefficients indéterminés>M4:=matrix (nbl,nbc,[]); #[] désigne la liste vide5°>matrice diagonale>M5 :=diag(éléments en diagonale)

Remarque> M1; # en tapant la lettre seulement la matrice ne s'affiche pas, il faut utiliser la commande evalm> evalm(M1);

> M1:=matrix(3,3,[1,2,7,8,0,1,-5,6,2]); [ 1 2 7] [ 8 0 1] [-5 6 2]>M2:=matrix([[1,0,-1], [2,0,1 ], [1,0,-2]]); [1 0 -1] [2 0 1] [1 0 -2]> f:=(i,j)->i+j-1; f := (i, j) i+j-1> M3:=matrix(3,3,f); [1 2 3] [2 3 4] [3 4 5]>M4:=matrix(3,2,[]); [m[1, 1] m[1, 2] ] [m[2, 1] m[2, 2] ] [m[3, 1] m[3, 2] ]>M5:=diag(3,2,1);#matrice diagonale [3 0 0] [0 2 0] [0 0 1]ou encore>M51:=diag(2$3);

[2 0 0] [0 2 0] [0 0 2]

Entrée d’un vecteur:Un vecteur est une matrice ligne

> V:=vector([liste des coordonnées du vecteur]); > V:=vector([1,2,-1]);

V := [1, 2, -1]

________________________________________________________________________ 37

Page 38: Support Cours d'Info Pour La 2éme Année

Opérations élémentaires sur les matrices

1. Somme de deux matrices.

# deux possibilités

2. Produit de deux matrices.

# deux possibilités

3. Multiplication d'une matrice par un scalaire.

>matadd(M1,M2);>evalm(M1&+M2);

>multiply(M1,M2);>evalm(M1&*M2);

> scalarmul(Matrice, scalaire);

>matadd(M1,M2); [ 2 2 6] [10 0 2] [-4 6 0]

>evalm(M1&*M2); [12 0 -13 ] [ 9 0 -10] [ 9 0 7]

>multiply(M2,M1); [ 6 -4 5] [-3 10 16] [11 -10 3]

> scalarmul(M1,3); [ 3 6 21] [ 24 0 3] [-15 18 6]

Calcul de déterminant >det(matrice) ;

>det(M1); 288

Transposée d’une matrice

>transpose(matrice) ;

>transpose(M1) ; [1 8 -5] [2 0 6] [7 1 2]

Puissance de matrice

>evalm(matrice&^puissance) ;

>evalm(M1&^2) ; #M1 au carré [-18 44 23] [ 3 22 58] [ 33 2 -25]

Inverse d’une matrice

>inverse(matrice) ; # si la matrice est inversible det(m)<>0 et la matrice m est carré .

>inverse(M1) ; [-1/48 19/144 1/144 ] [-7/96 37/288 55/288] [ 1/6 -1 /18 -1 /18 ]

Rang d’une matrice >rank(matrice);

Soit la matrice N>N:=matrix(3,3,[18,42,12,3,-9,6,-9,-21,-6]);>rank(N) ; 2

Trace d’une matrice

>trace(matrice) ; >trace(N) ; 3

Noyau d’une matrice

>kernel(matrice) ; >kernel(N) ; {[-5, 1, 4]}

Image d’une matrice

>colspace(matrice) ; >colspace(N) ;{([0, 1, 0]), ([1, 0, -1/2])}

Valeurs propres >eigenvals(matrice) ; >eigenvals(N);

________________________________________________________________________ 38

Page 39: Support Cours d'Info Pour La 2éme Année

d’une matrice 0, -9, 12

Vecteurs propres d’une matrice

>eigenvects(matrice) ;cette commande retourne une liste qui représente la valeur propre, sa multiplicité et enfin une base du sous espace propre associé.

>eigenvects(N) ; [-9, 1, {[-2, 1, 1]}], [0, 1, {[-5, 1, 4]}], [12, 1, {[-2, 0, 1]}]

Polynôme caractéristique

>charpoly(matrice,variable) ; >charpoly(N,x) ; x3 - 3 x 2 - 108 x

Réduction de JordanMaple peut calculer la forme réduite de Jordan. On peut de plus récupérer la matrice de passage.

>matrice_résultat :=jordan(matrice, ‘matrice_de _passage’) ;

Remarque N’oubliez pas les cotes pour la matrice de passage

Soit la matrice suivante :>N:=matrix([[18,42,12],[3,-9,6], [-9,-21,-6]]);> N1:=jordan(N,'P');

[12 0 0] N1 := [ 0 -9 0] [ 0 0 0]>evalm(P); [2 2/3 -5/3] [0 -1/3 1/3 ] [-1 -1/3 4/3 ]

Partie B : Exercices d'applications directesExercice 1 Opérations élémentairesSoit les deux matrices suivantes A1 et A2 :

1- Définir les deux matrices A1 et A2 , de deux manières différentes.2- Calculer 3A1, A1+A2, A1*A2, A2*A1, 2A1+3A23- Donner la matrice inverse de A1,4- Donner la transposée de A2.

Exercice 2: Valeurs propres, vecteurs propres, polynôme caractéristique Soit la matrice suivante A: [ 1 -1 2] A := [-2 1 0] [ 1 1 3]

1- Définir A.2- Donner la transposée de A3- Calculer A* TA*A4- Donner le déterminant de A puis son inverse5- Donner le rang de A, son noyau, sa trace, puis son image6- Calculer A à la puissance 37- Donner les valeurs propres, les vecteurs propres puis le polynôme caractéristique de A.

________________________________________________________________________ 39

[1 0 1 0] [0 0 0 0] A2 := [1 0 0 1] [0 1 0 0]

[0 1 1 1 ] [1 0 -1 -1] A1 := [1 -1 0 -1] [1 -1 -1 0]

Page 40: Support Cours d'Info Pour La 2éme Année

CorrectionExercice 1> A1:=matrix(4,4,[0,1,1,1,1,0,-1,-1,1,-1,0,-1,1,-1,-1,0]);> A2:=matrix([[1,0,1,0],[0,0,0,0],[1,0,0,1],[0,1,0,0]]);> scalarmul(A1,3);> matadd(A1,A2) ;> multiply(A1,A2);> multiply(A2,A1);> matadd(A1,A2,2,3); #matadd(m,m1,u,v) où u et v désignent deux scalaires retourne la matrice résultat u*m+v*m1> inverse(A1) ;> transpose(A2) ;

A1*A2 [1 1 0 1 ] [0 -1 1 -1] [1 -1 1 0] [0 0 1 -1]A2*A1 [1 0 1 0 ] [0 0 0 0 ] [1 0 0 1 ] [1 0 -1 -1]2A1+3A2 [3 2 5 2] [2 0 -2 -2] [5 -2 0 1] [2 1 -2 0](A1)-1

[2/3 1/3 1/3 1/3 ] [1/3 2/3 -1/3 -1/3] [1/3 -1/3 2/3 -1/3] [1/3 -1/3 -1/3 2/3 ]t(A2) [1 0 1 0] [0 0 0 1] [1 0 0 0] [0 0 1 0]

Exercice 21)> A:=matrix(3,3,[1,-1,2,-2,1,0,1,1,3]); [ 1 -1 2] A := [-2 1 0] [ 1 1 3]2)> TA:=transpose(A); [ 1 -2 1] TA := [-1 1 1] [ 2 0 3]

________________________________________________________________________ 40

[0 3 3 3] [3 0 -3 -3] [3 -3 0 -3] [3 -3 -3 0]

[1 0 1 0] [0 0 0 0]A2 := [1 0 0 1] [0 1 0 0]

[1 1 2 1 ][1 0 -1 -1][2 -1 0 0][1 0 -1 0]

[0 1 1 1] [1 0 -1 -1] A1:= [1 -1 0 -1] [1 -1 -1 0]

A1+A23A1

Page 41: Support Cours d'Info Pour La 2éme Année

3)>evalm(A&*TA&*A); ou encore >multiply(A,TA,A); [ 18 -3 30] [-14 7 -9] [ 19 4 45]4)> det(A); -9> inverse(A); [-1/3 -5/9 2/9] [-2/3 -1/9 4/9] [1/3 2/9 1/9]5) > rank(A); kernel(A); trace(A); colspace(A);

3{ }5

{[0, 0, 1], [0, 1, 0], [1, 0, 0]}

6) >eigenvals(A); eigenvects(A); charpoly(A,x); -1, 3, 3 [3, 2, {[2, -2, 1]}], [-1, 1, {[-2, -2, 1]}] x 3- 5 x2 + 3 x + 9

________________________________________________________________________ 41

Page 42: Support Cours d'Info Pour La 2éme Année

Séance 7 [5]

Partie C : Exercices appliqués aux mathématiques

Remarque : l’enseignant peut traiter un ou plusieurs exercices de la partie I et un ou plusieurs exercices de la partie II.

Partie I : Utilisation des fonctions prédéfinies Exercice 1 : Diagonalisation de matriceDiagonaliser ou trigonaliser la matrice suivante, donner la matrice de passage et vérifier que l’on retrouve bien la matrice initiale. [0 1 1 1] [1 0 -1 -1] M := [1 -1 0 -1] [1 -1 -1 0]Correction> M:=matrix([[0,1, 1, 1],[1,0,-1,-1],[1,-1,0,-1],[1,-1,-1,0]]);> K:=jordan(M,'Q'); [-3 0 0 0] [0 1 0 0] K := [0 0 1 0] [0 0 0 1]> evalm(Q); [ 1/4 11/4 2 1] [-1/4 1/4 0 0] [-1/4 5/4 1 0] [-1/4 5/4 1 1]> evalm(Q &* K &* Q^(-1)); [0 1 1 1] [1 0 -1 -1] [1 -1 0 -1] [1 -1 -1 0]Exercice 2 : Puissance nièmeCalculer la puissance nième de la matrice A suivante, pour un entier n indéterminé (après l’avoir diagonalisée). Puis, donner un résultat numérique pour n=1, n=2, n=5 [ 58 52 36] A := [ -29 187 9] [-145 65 219] Correction> A:=matrix([[58, 52, 36], [-29, 187, 9], [-145, 65, 219]]); [ 58 52 36] A := [ -29 187 9] [-145 65 219] > eig:=eigenvects(A);eig := [116, 1, {[4, 1, 5]}], [174, 2, {[1, 0, 29/9], [0, 1, -13/9]}]> J:=jordan(A,'P'); # détermination de la matrice diagonale [174 0 0] J := [ 0 116 0] [ 0 0 174]>evalm(P); # matrice de pasage [-20 /29 2 9/29] [-1/2 1/2 0 ] [-3/2 5/2 1 ]> puiss:=x->x^n; puiss := x -> x n

________________________________________________________________________ 42

Page 43: Support Cours d'Info Pour La 2éme Année

> Jn:=map(puiss,J); [174 n 0 0 ] Jn :=[ 0 116 n 0 ] [ 0 0 174 n ]> An:=evalm(P &* Jn &* P^(-1)); # la matrice An An :=[-174 n + 2 *116 n 26/29 * 174 n - 26/29 *116 n 18/29 *174n-18/29 *116n ][-1/2 174 n+1/2*116n 71/58* 174 n-13/58 116 n 9/58*174n-9/58 *116 n ][- 5/2 174 n +5/2 *116 n 65/58*174 n -65/58* 116 n 103/58*174 n –45/58*116n]>n:=1;> map(eval,An); [ 58 52 36] [ -29 187 9] [-145 65 219]> n:=2;> map(eval,An); [ -3364 15080 10440] [ -8410 34046 2610] [-42050 18850 43326]> n:=5;> map(eval,An); [-117487861472 124164594112 85960103616] [ -69245639024 190535843152 21490025904] [-346228195120 155205742640 266944824144]

Exercice 3 : Réduction de GaussSoit la matrice A suivante : [3 6 7] A := [2 7 9] [2 5 4]Calculer la réduction de Gauss de la matrice A> A := matrix(3,3,[3,6,7,2,7,9,2,5,4]); [3 6 7] A := [2 7 9] [2 5 4]> gausselim(A,'r','d'); [3 6 7 ] [0 3 13/3 ] [0 0 -19/9]> r;

3> d;

-19Partie II : Programmation 

Exercice 1 

Ecrivez un programme calculant la multiplication de deux matrices C=AxB. Utiliser la formule

mathématique .

________________________________________________________________________ 43

Page 44: Support Cours d'Info Pour La 2éme Année

Correction 

Présentation de la méthode Le but de cet exercice de programmation est d’écrire une procédure capable de calculer la multiplication de deux matrices (sans utiliser la fonction &*…).Vous aurez besoin de deux instructions.

rowdim(matrice) : renvoie le nombre de lignes de matrice : coldim(matrice) : renvoie le nombre de colonnes de matrice.1. paramètres et algorithmes. Les paramètres de la procédure sont A et B, les deux matrices que l’on veut multiplier.Rappelons ici la définition de la multiplication matricielle. Si C=AB( A matrice mp, B matrice pn, on a :

(1)

Notre programme va donc être assez simple. On sait que la matrice C sera une matrice mn ( m lignes, n colonne). Il va falloir calculer la valeur de tous les coefficients de cette matrice en utilisant la formule (1).2. procédure

> with(linalg):multmat:=proc(A,B)local C,i,j,k:C:=matrix(rowdim(A),coldim(B));for i from 1 to rowdim(C) do for j from 1 to coldim(C) do C[i,j]:=0; for k from 1 to coldim(A) do C[i,j]:=C[i,j]+A[i,k]*B[k,j] od; od;od;RETURN(C);end;

Utilisation et commentaire de la procédure> A:=matrix(3,2,[1,2,1,4,2,3]);>B:=matrix(2,2,[1,2,4,2]);C:=multmat(A,B);print(C);

:= A

1 2

1 4

2 3 := B

1 2

4 2 := C C

9 6

17 10

14 10

Exercice 2 

Ecrivez des programmes parmi le complément d’exercices de la séance 1 ou autres, en utilisant les instructions de structures conditionnelles, de structures répétitives, matrices et vecteurs, etc.

Exercice 3 

Programmation Maple de la solution d’un système linéaire (méthode de Gauss) [6] et [7]1. Problème [6]

________________________________________________________________________ 44

Page 45: Support Cours d'Info Pour La 2éme Année

Le but de ce TP est d’appliquer une méthode itérative, celle de Gauss, pour la résolution des systèmes d'équations linéaires. On supposera que dans ce cas on dispose d'autant d'équations que d'inconnues. On examinera par la suite le cas où cette condition n'est pas satisfaite. Considérons le système d'équations linéaires suivant que l'on cherche à résoudre :   a11x1+a12x2+...+a1nxn = b1

a21x1+a22x2+...+a2nxn = b2 (1)

an1x1+an2x2+...+annxn = bn

Ce système peut aussi s'écrire : A.x = b (2)

avec A = [aij ](i,j = 1...n), xT = [x1,...,xn] et bT = [b1,...,bn].

2.  Méthode de GaussLa méthode de Gauss est basée sur le constat suivant : le système linéaire reste invariant pour les trois opérations suivantes effectuées dans n'importe quel ordre et un nombre de fois indéterminé :

1. Permutation de lignes de la matrice A (et donc de b) 2. Multiplication d'une ligne par une constante non nulle 3. Addition d'une ligne à une autre ligne

Exposé de la méthodeEn combinant les opérations précédentes, on peut transformer la matrice A en une matrice triangulaire supérieure par le processus itératif suivant :

1. On garde la première ligne inchangée 2. On suppose a11 0. On soustrait à la ième ligne de A et de b (i = 2,...,n) la première ligne

multipliée par la quantité (ai1/a11). Les matrices A et b prennent alors la forme :

(3)

avec 

________________________________________________________________________

  ai,j(1) = aijai1

a1i

a11

    i 2  j 1   (4)

  bi(1) = biai1

b1

a11

    i 2     (5)

45

A(1) = 

 

a11 a12 ...  a1n

0  a22(1) a23

(1) a24(1)

....  ...  ...  ... 

0  an2(1) an3

(1) ann(1)

             b(1) = 

 

b1 

b2(1)

bn(1)

 

   

Page 46: Support Cours d'Info Pour La 2éme Année

On répète l'étape précédente en supposant cette fois-ci a22(1) 0. On garde alors les deux premières

lignes inchangées et on retranche (ai1(1)/a22

(1))×(2ème ligne) à la ième ligne (i = 3,...,n). En tout le processus est effectué (n1) fois. La matrice A devient alors triangulaire supérieure.

  3 Soit R la matrice triangulaire inférieure obtenue et c la transformée de la matrice b. Nous avons :

u11x1+u12x2+...+u1nxn = c1

0+u22x2+...+u2nxn = c2

0+0+...+unnxn = cn

  4 Finalement la solution est obtenue par simple substitution :

(6)

3. Principe

L'algorithme consiste à se ramener à un système triangulaire équivalent et à résoudre ce système.

Soit A(1) = A et b(1) = b. Supposons a11(1) non nul, ce qu'il est toujours possible d'obtenir par un

éventuel échange de lignes. Dans le tableau (A(1) | b(1)), on effectue une combinaison linéaire des

lignes l1 et li , i = 2,... n, en remplaçant li par , i = 2,... n. La matrice obtenue est de la forme

          et  

Le système d'origine est équivalent au nouveau système A(2) x = b(2).

On recommence ensuite une combinaison linéaire analogue des lignes l2 et li , i = 3,... n, de (A(2) | b(2)) de façon à annuler les éléments sous-diagonaux de la deuxième colonne de A(2), et ainsi de suite jusqu'à ce que la matrice soit devenue triangulaire supérieure.

On résout, ensuite, le système triangulaire obtenu.

4. Algorithme 1e étape: triangularisation de A, c'est-à-dire transformation du système en un système équivalent à matrice triangulaire supérieure.

A(1) = A, b(1) = b.

________________________________________________________________________

  xi = ( k = i+1

nuikxk+ci) 

rii

      (i = n,n1,...,2,1)  

46

Page 47: Support Cours d'Info Pour La 2éme Année

2e étape: résolution du système triangulaire A(n) x = b(n).

5. Exemple Résolution du système Ax = b avec :

     et  

Résolution manuelle (avec les fractions) 1e étape: triangularisation de A

                           ---------------------------------------

                           ---------------------------------------

________________________________________________________________________ 47

Page 48: Support Cours d'Info Pour La 2éme Année

                           ---------------------------------------

2e étape: résolution du système triangulaire A(4)x = b(4)

____________________________________________________________________6. Travail demandéOn se donne les déclarations suivantes :

Constante Nmax = 100A : tableau [1..Nmax, 1..Nmax] de réelb : tableau[1..Nmax] de réel

1. Ecrire une procédure Saisie (N) qui permet de saisir une matrice carré A et un vecteur b d’ordres N (N <=Nmax) ?

2. Ecrire une procédure PIVOGauss (A1, b1, N) qui applique les transformations nécessaires à la matrice A1 et au vecteur B1 de façon que A1 devienne une matrice triangulaire ?

3. Ecrire une procédure Remontée (A2, b2, x, N) qui résout un système linéaire triangulaire de N équations ? A2x = b2 et affiche le résultat ?

4. Ecrire un algorithme MethodeGAUSS appelant les procédures citées ci-dessus et qui permet de résoudre le système Ax = b ?

5. Donner le code Maple correspondant aux différentes procédures ?6. Application  : Résoudre le système Ax = b avec :

     et   7. Résoudre le même système en appliquant la fonction solve de Maple ? Comparer les

deux résultats ?

Correction

Solution d’un système linéaire :Les algorithmes :

________________________________________________________________________ 48

Page 49: Support Cours d'Info Pour La 2éme Année

1. Procédure SAISIE (N : entier)var i,j : entierDébut pour i de 1 à N faire écrire (" donner l’élément d’indice ",i, "du vecteur b ") lire (b[i]) fin pour pour i de 1 à N faire pour j de 1 à N faire écrire (" donner l’élément d’indices ",i, j, "de la matrice A ") lire (A[i,j]) fin pour fin pourfin Procédure SAISIE

2. Procédure PIVOGauss (var A1 : tableau[1..Nmax, 1..Nmax] de réels, var b1 : tableau[1..Nmax] de réels, N : entier, var ok : logique) var i,j,m : entier p : réelDébut i 1 ok vrai {aucun pivot nul pour le moment} tant que (( i<= N) et ok ) faire {s’assurer avant de diviser que le pivot est utilisable } si (A1[i,i] = 0) alors ok faux sinon pour j de i à N faire p -A1 [j,i] / A1[i,i] b1[j] b1[j] + p*b1[i] pour m de i+1 à N faire A1[j,m] A1[j,m] + p * A1[i,m] fin Pour A1[j,i] 0 fin Pour fin si i i+1 fin tant que fin Procédure PIVOGauss

3. Procédure Remontée (A2 : tableau[1..Nmax, 1..Nmax] de réels, b2 : tableau[1..Nmax] de réels, var x tableau |1..Nmax] de réels, N : entier) var i, j : entier S : réel Début x[N] b2[N] / A2[N, N] Pour i de N-1 à 1 pas = -1 faire S  0

________________________________________________________________________ 49

Page 50: Support Cours d'Info Pour La 2éme Année

Pour j de i+1 à N faire S S + A2[i,j] * x[j] fin Pour x[i] (b2[i] – S) / A2[i,i] fin Pour { afficher le résultat } Pour i de 1 à N faire écrire (x[i]) fin PourFin Procédure Remontée

4. Algorithme MethodeGauss Constante Nmax = 100 var A : tableau [1..Nmax, 1..Nmax] de réels b : tableau[1..Nmax] de réels x : tableau [1..Nmax] de réels N : réel OK : logique Début écrire (« donner la dimension de la matrice A ») Saisie (N) PIVOGauss (A, b, N, OK) Si (OK) alors Remontée (A, b, x, N) sinon écrire (« pivot nul dans ! pas de solutions ») fin siFin MethodeGauss

Traduction Maple> restart;> #Réponse question 1> SAISIE:=proc(N :: integer)local i,j;global A, b;for i from 1 to N do print(`donner la valeur ayant pour indice`,i, `du vecteur b`); b[i] := readstat();od:for i from 1 to N do for j from 1 to N do print(`donner la valeur ayant pour indice`,i,j, `de la matrice A`); A[i,j] := readstat(); od:od:end:

________________________________________________________________________ 50

Page 51: Support Cours d'Info Pour La 2éme Année

> #Réponse question 2> PIVOGauss := proc(ok1,A1,b1,N)local i,j,m,p,ok;

i := 1:ok1:=1:ok:=eval(ok1,2):while ((i<=N) and (ok = 1)) do if (A1[i,i] = 0) then ok := 0; else for j from i+1 to N do p := -A1[j,i] / A1[i,i]; b1[j]:=b1[j] + p * b1[i]; for m from i+1 to N do A1[j,m] := A1[j,m] + p*A1[i,m]; od: A1[j,i] := 0; od: fi; i := i+1;od:end:

> #Réponse question 3> Remontee := proc (A2, b2, x, N)local i,j,s;x[N] := b2[N] / A2[N,N]:for i from N-1 to 1 by -1 do s := 0; for j from i+1 to N do s := s + A2[i,j] * x[j]; od: x[i] := (b2[i] - s ) / A2[i,i];od:print(`matrice A triangularisée : `,A2);print(`vecteur X solution = `);for i from 1 to Ndo print(`x[`,i,`]`,x[i]);od:end;

> #Réponse question 4,5,6 ; Algorithme MethodeGauss> Nmax := 4;

________________________________________________________________________ 51

Page 52: Support Cours d'Info Pour La 2éme Année

#pour simplifier, je considère Nmax=N

A := array(1..Nmax, 1..Nmax);b := array(1..Nmax);print(`donner la dimension de la matrice A`);N := readstat();SAISIE (N);print(`affichage de A et B`,A, b);ok := 'ok':PIVOGauss(ok,A, b, N);if (ok = 1) then x:='x': Remontee( A, b, x, N); print(`x= `,x);else print(`erreur , pivot nul`);fi:

> #Réponse question 7> xx:=array(1..N) :> eqns:={8*xx[1]-4*xx[2]+3*xx[3]+7*xx[4]=12,4*xx[1]+2*xx[2]-6*xx[3]+4*xx[4]=1,-16*xx[1]+6*xx[2]-2*xx[3]-15*xx[4]=-19,6*xx[1]+10*xx[2]-15*xx[3]+10*xx[4]=1};>

> solve(eqns);

Remarque : Reprendre la résolution de ce problème avec la fonction prédéfinie « gausselim » et comparer les résultats obtenus par cette dernière méthode et ceux obtenus par la méthode précédente que nous avons définie ci-dessus.

________________________________________________________________________ 52

Page 53: Support Cours d'Info Pour La 2éme Année

Séance 8 [4]

Suites Numériques

(Terme général, Suite Récurrente, Somme, Produit, Convergence)

I. Rappel de cours :

Fonction Rôle Exempleunapply Définir une suite numérique U par

son terme général U(n) (U(n) doit être en fonction de n) et sa variable inconnue n

> V := unapply ( n / 2, n) ;

rsolve Déterminer le terme général d’une suite récurrente (arithmétique ou géométrique)

> rsolve({U(n+2)= U(n+1) + U(n), U(0) = 1, U(1) = 1},U ) ;

Sum Exprimer la somme des termes d’une suite numérique sans donner sa valeur (forme inerte)

>Sum(V(k),K=0..5) ;

> Sum(V(k),K=0..n) ;

sum Calculer la somme des termes d’une suite numérique (forme analytique)

>sum(V(k),K=0..5) ;

> sum(V(k),K=0..n) ;

Product Exprimer le produit des termes d’une suite numérique sans donner sa valeur (forme inerte)

>Product(V(k),K=0..5) ;

> Product(V(k),K=0..n) ;

product Calculer le produit des termes d’une suite numérique (forme analytique)

>product(V(k),K=0..5) ;

> product(V(k),K=0..n) ;

Limit Représenter la limite d’une fonction sans la calculer (remarque : Un = f(n))

>Limit(U(n), n= infinity) ;

limit Calculer la limite d’une fonction > limit(U(n), n= infinity) ;

II. Exercices d’application :Exercice I   :

Soit la suite U(n)nIN définie par le terme général suivant :( )U n c n 1

avec c un nombre réel non nul

1. Trouver c pour que la somme des 6 premiers termes de U soit égale à 162. Pour la valeur trouvée de c, calculer U2 , U3, U4

3. Exprimer puis évaluer le produit de U pour k allant de 0 à 5Exercice II   :

On considère la suite U(n)nIN telle que :

________________________________________________________________________ 53

Page 54: Support Cours d'Info Pour La 2éme Année

S k 0

n

( )U k

1. Trouver le terme général de U et le définir 2. Evaluer U7 , U10, U12, à trois chiffres après la virgule3. Exprimer et calculer S pour les 5 premiers termes de U ( utiliser 2 méthodes : fonctions

prédéfinie et programmation), évaluer S sur 7 digits4. Calculer la limite de S quand n = 05. Exprimer et évaluer le produit P des 5 premiers termes de U6. Montrer que la suite U est convergente

Exercice III   : Soient U(n)nIN et V(n)nIN* deux suites réelles ayant les formes récurrentes suivantes :

U0 = 1 V1 = 1 / 2

1. Définir les suites U et V2. Calculer la somme des (n+1) premiers termes de U3. Evaluer le produit des trois premiers termes de V 4. Etudier la convergence de U et de V

Exercice IV   :

On considère la suite U(n)nIN* définie comme suit :

U1 = 7

Un+1 = 1/6 Un + 5

1. Définir la suite U2. Montrer que U converge vers 63. Pour tout n appartenant à IN, on pose :

Vn = Un – a avec a : réelDéterminer a pour que la suite V soit une suite géométrique de raison 1/6.

Exercice V   :

Soient les deux suites récurrentes suivantes :

U0 = -1 V0 = 1

Un = 2 Vn + 5  Vn = 2 Un-1 +3

2. Calculer les valeurs des i èmes termes des suites U et V lorsque i=3, 4, 5 et ce en utilisant :

a.les fonctions prédéfinies b.la programmation

2. Calculer la somme S suivante : S= k 0

3

( )( )U k ( )V k , en utilisant

a.  la fonction prédéfinie « sum »b. la programmation

3. Calculer le produit P suivant : k 0

3 ( )U k( )V k

, en utilisant

________________________________________________________________________ 54

= 1 - 1/3 + 1/5 - 1/7 + 1/9 + …

Page 55: Support Cours d'Info Pour La 2éme Année

c. la fonction prédéfinie « product »d. la programmation

4. Etudier la convergence de U et de V.

CorrectionEXERCICE I :> restart;> u:=unapply(c*n+1,n);

:= u n c n 1> solve(sum(u(k),k=0..5)=16,{c});assign(");

{ }c23

> u(2);u(3);u(4);Product(u(k),k=0..5)=evalf(product(u(k),k=0..5));

733

113

k 0

5

23

k 1 185.3703704

EXERCICE II:> restart;u:=unapply((-1)^n/(1+2*n),n);

:= u n( )-1 n

1 2 n

> evalf(u(7),2);evalf(u(10),2);evalf(u(12),2);-.067.048.040

> Digits:=7;> Sum(u(k),k=0..4)=evalf(sum(u(k),k=0..4));Limit(sum(u(k),k=0..n),n=0)=limit(sum(u(k),k=0..n),n=0);

:= Digits 7

k 0

4 ( )-1 k

1 2 k.8349206

limn 0

14

12

( )-1( )n 1

32

n

54

12

n

34

12

n

3 2 n1

> Product(u(k),k=0..4)=evalf(product(u(k),k=0..4));

k 0

4 ( )-1 k

1 2 k.001058201

> limit(u(n),n=infinity);0

EXERCICE III:> restart; > rsolve({u(n)=((n/2)*u(n-1)+n)/n,u(0)=1},u);

________________________________________________________________________ 55

Page 56: Support Cours d'Info Pour La 2éme Année

12

n

2

> u:=unapply(",n);u(n-1);

:= u n

12

n

2

12

( )n 1

2

> v:=unapply(simplify((n/2)* "),n);

:= v n 12

n ( )2( ) n 1

2

> s:=sum(u(k),k=0..n);

:= s 2

12

( )n 1

2 n

> evalf(product(v(k),k=1..3));1.968750000

> limit(u(n),n=infinity);2

> limit(v(n),n=infinity);

EXERCICE IV :> restart;r:=rsolve({U(n+1)=(1/6)*U(n)+5,U(1)=7},U);

:= r 6

16

n

6

> U:=unapply(r,n);

:= U n 6

16

n

6

> limit(U(k),k=infinity);6

> V:=unapply(U(n)-a,n);

:= V n 6

16

n

6 a

> simplify(solve({V(n)/V(n-1)=1/6},{a}));{ }a 6

> assign(");V(1);1

EXERCICE V :1.a/ > restart;a:=rsolve({u(n)=4*u(n-1)+11,u(0)=-1},u);

:= a 83

4n 113

> u:=unapply(a,n);v:=unapply(2*u(n-1)+3,n);

:= u n 83

4n 113

________________________________________________________________________ 56

Page 57: Support Cours d'Info Pour La 2éme Année

:= v n 163

4( )n 1 13

3

> seq(u(i),i=3..5);seq(v(i),i=3..5);, ,167 679 2727

, ,81 337 1361

1.b/> U:=proc(n) option remember; if n=0 then -1 else 2*V(n)+5 fi; end;

V:=proc(n) option remember; if n=0 then 1 else 2*U(n-1)+3 fi; end;

U(3),U(4),U(5);V(3),V(4),V(5);

:= U proc( ) end procn option ;remember if then else end ifn 0 -1 2 ( )V n 5

:= V proc( ) end procn option ;remember if then else end ifn 0 1 2 ( )U n 1 3

, ,167 679 2727

, ,81 337 1361

2.a/> Sum(u(k)-v(k),k=0..3)=-1-1+evalf(sum(u(k)-v(k),k=1..3));

k 0

3

83

4k 23

163

4( )k 1

112.

2.b/ > S:=U(0)-V(0);for i from 1 to 3 doS:=S+U(i)-V(i);od;evalf(S);

:= S -2

:= S 4

:= S 26

:= S 112

112.

3.a/ > Product(u(k)/v(k),k=0..3)=(-1/1)*(evalf(product(u(k)/v(k),k=1..3)));

k 0

3 83

4k 113

163

4( )k 1 13

3

-33.10893246

3.b/> P:=U(0)/V(0);for i from 1 to 3 do________________________________________________________________________ 57

Page 58: Support Cours d'Info Pour La 2éme Année

P:=P*(U(i)/V(i));od;evalf(P);

:= P -1

:= P -7

:= P-27317

:= P-15197

459

-33.10893246

4/ > if limit (u(n),n=infinity)=infinity then print(`la suite U est divergente`) else print(`la suite U est convergente`) fi;

"la suite U est divergente"

> if limit (v(n),n=infinity)=infinity then print("la suite V est divergente") else print("la suite V est convergente") fi;

"la suite V est divergente"

________________________________________________________________________ 58

Page 59: Support Cours d'Info Pour La 2éme Année

Séance 9 [8]

Equations différentielles ET Systèmes différentiels

Tableau récapitulatif

Fonction Rôle Exempledsolve({équation, conditions initiales}, {fonction}) ;

Les conditions initiales doivent être entrées sous la forme : fct(var)=valeurD(fct)(var)=valeur

D@n(fct)(var)=valeur

Résolution des équations différentielles

eq :=diff (y(x),x$2)-3*diff(y(x),x) + 2*y(x)=x-1 ;dsolve({eq, D(y)(0)=5,y(0)=1}, y(x)) ;

dsolve({équations, conditions initiales}, {fonctions}) ;

Les conditions initiales doivent être entrées sous la forme : fct(var)=valeurD(fct)(var)=valeur

D@n(fct)(var)=valeur

Résolution des systèmes d’équations différentielles

eq1 :=diff(x(t),t)=x(t)+2*y(t)-z(t) ;eq2 := diff(y(t),t)=2*x(t)+4*y(t)-2*z(t) ;eq3 := diff(z(t),t)=-x(t)-2*y(t)+z(t) ;dsolve({eq1,eq2,eq3},{x(t),y(t),z(t)} );

dsolve({équation, conditions initiales}, {fonction},numeric) ;

Résolution numérique des équations différentielles

equa :=diff(y(x),x)+sin(y(x))=x ;dsolve({equa ,y(0)=0},y(x),numeric) ;

odeplot(fonction, [var1, var2], min1..max1, option) ;

Représentation de la fonction (après résolution numérique)

equa :=diff(y(x),x)+sin(y(x))=x ;s:=dsolve({equa ,y(0)=0},y(x),numeric) ;with(plots);odeplot(s,[x,y(x)],-5..5);

IntroductionLa résolution des équations différentielles avec Maple se fait à l’aide de la fonction dsolve :Cette fonction nécessite au moins deux arguments :Le premier des deux est un ensemble contenant les équations et, s’il y a lieu, les conditions initiales. Le second est un ensemble contenant les noms des fonctions inconnues. (sous la forme y(x) pour une fonction y dont x est la variable).Ces ensembles sont donc délimités par des accolades mais, comme souvent avec Maple, si l’un de ces ensembles se réduit à un élément, il n’est pas nécessaire de mettre d’accolades.Certaines équations différentielles qui ne peuvent être résolues formellement, peuvent être résolues numériquement en introduisant numeric dans la ligne de commande dsolve. Une représentation de la fonction peut alors être obtenue à l’aide de la fonction odeplot qui fait partie du package plots :> odeplot(fonction, [var1, var2], min1..max1, option) ;

1/ Equation différentielle de premier ordre La forme générale d’une équation différentielle est : a*y’(x)+b*y(x)+c=0En Maple, la fonction inconnue doit s’écrire y(x), sa dérivée peut s’écrire diff(y(x),x) ou D(y)(x), mais si on utilise une condition initiale portant sur la dérivée, elle doit impérativement être écrite avec l’opérateur D.a/ Résolution sans condition initiale Soit l’équation :________________________________________________________________________ 59

Page 60: Support Cours d'Info Pour La 2éme Année

La résolution est :

Maple utilise comme constante d’intégration un identificateur commençant par un souligné.

Attention   : Bien mettre y(x) pour préciser la fonction recherchée et non pas y ce qui conduirait à un message d’erreur.Si on veut obtenir le résultat de y(x) sous forme d’une expression, on peut utiliser la commande subs :

La fonction dsolve ne retourne pas toujours, comme dans l’exemple précédent, une forme explicite des solutions d’une équation différentielle. Avec l’option explicit, la fonction dsolve retourne, si possible, une équation explicite de la courbe intégrale.

b/ Résolution avec condition initialePour tenir compte des conditions initiales, le premier argument de la fonction dsolve contiendra, dans un ensemble, en plus de l’équation, l’ensemble de ces conditions.

2/ Equation différentielle d’ordre 2La dérivée seconde de y(x) s’écrit diff(y(x),x,x) ou (D@@2)(y)(x), mais les conditions initiales portant sur les dérivées doivent s’écrire à l’aide de D.

________________________________________________________________________ 60

Page 61: Support Cours d'Info Pour La 2éme Année

Si on veut résoudre le cas général de l’équation classique y’’+a.y=0 avec les conditions initiales y(0)=0 et y’(0)=1 on peut écrire :

Exemple   : Prenons l’exemple de l’équation du mouvement de la pendule pesante (on se rappelle que cette

équation s’écrit pour de petits mouvements ) 

Notons que si l’on omet les conditions initiales, Maple introduit ses propres constantes :

3/ Système d’équations différentiellesPour résoudre un système différentiel on utilise dsolve avec deux arguments : le premier est l’ensemble entre accolade des équations du système et éventuellement des conditions initiales. Le second est l’ensemble des fonctions inconnues.

Maple retourne un ensemble de deux équations et introduit les constantes qui lui sont nécessaires en utilisant des identificateurs commençant par le caractère souligné.Le même système mais avec conditions initiales :

Lorsque l’on demande la résolution d’un système, il faut donner autant de fonctions inconnues que d’équations sinon on obtient un message d’erreur.

4/ Résolution numérique des équations différentiellesCertaines équations ne peuvent être résolues formellement et doivent être résolues numériquement, c’est le cas de l’équation ci-dessous :

________________________________________________________________________ 61

Page 62: Support Cours d'Info Pour La 2éme Année

Maple reste sans réponse. Il faut donc résoudre numériquement en rajoutant l’argument numérique à la fonction dsolve. Attention, ici des conditions initiales numériques sont nécessaires :

Maple nous montre que la solution est une procédure. Pour l’exécuter :

Maple retourne, sous forme de liste, la valeur de la variable et la valeur prise par la fonction.Il est impossible de représenter directement cette fonction. Il faut nécessairement avoir recours à la fonction odeplot qui fait partie du package plots.

________________________________________________________________________ 62

Page 63: Support Cours d'Info Pour La 2éme Année

EXERCICES

Exercice 1On considère l'équation suivante : xy'+y=1/(1-x) (1)1. Donner toutes les solutions de (1) sur ] -¥;0[ et ] 0;1[. 2. Quelles sont les solutions sur ] -¥; 1[?

Exercice 2

Résoudre dans IR l’équation différentielle . Représenter les solutions pour des

valeurs initiales différentes.

Exercice 3Résoudre l’équation différentielle suivante :

Y''-3Y' +2Y =X-1Y(0)=1Y'(0)=5

Donner les solutions dans l’intervalle [0..10].

Exercice 41/ Résoudre les équations différentielles suivantes :

a/

b/

2/ Résoudre le système différentiel :

Exercice 5Résoudre le système suivant :

x'(t)=-y(t)+z(t)y'(t)=x(t)-z(t)z'(t)=-x(t)+y(t)

Tracer la courbe correspondant au cas {x(0) = y(0) = 0; z(0)=3}Montrer que toutes les trajectoires solutions sont planes.

________________________________________________________________________ 63

Page 64: Support Cours d'Info Pour La 2éme Année

Corrigé des exercicesExercice 1> restart: eq:=x*diff(y(x),x)+y(x)=1/(1-x);dsolve donne une solution générale de l'équation, mais sans préciser l'intervalle sur lequel elle est valide. On constate de plus que Maple n'a pas choisi l'expression la plus simple: ln(1-x) serait plus approprié,et permettrait de se passer des complexes.> dsolve({eq,y(-1)=a},y(x));

On va donc utiliser une formulation un peu plus "naturelle"...> f:=(ln(1-x)+c)/x;

Regardons maintenant à quelle condition la fonction peut être continue:> limit(f,x=0,left);> c:=0;

Il faut poser c:=0. Est-ce suffisant ?f est continue. Il faudrait en outre vérifier la continuité de sa dérivée en 0 (En fait, f'(0)=-1/2)> limit(f,x=0);

Pour finir, on peut tracer la solution obtenue :> plot(f,x=-5..1);

Exercice 2

Pour représenter les solutions, il suffit de donner une valeur initiale à notre fonction. Pour cela, nous créons une séquence qui va contenir les équations des courbes à tracer puis les représenter.

Exercice 3> restart : > eq :=diff (y(x),x$2)-3*diff(y(x),x)+2*y(x)=x-1 ;

________________________________________________________________________ 64

Page 65: Support Cours d'Info Pour La 2éme Année

> dsolve({eq, D(y)(0)=5,y(0)=1}, y(x)) ;> A := rhs(%) ;

>plot(A,x=0..10) ; 

Exercice 4> eq1:=4*x*diff(y(x),x$2)+diff(y(x),x)=0 ;> sol1:=dsolve(eq1,y(x)) ;> restart : readlib(isolate) ;> eq2 :=5*diff(y(x),x)-y(x)*sin(x)+y(x)^4*sin(2*x)=0 ;> sol2 :=dsolve(eq2,y(x)) ;> sol2 :=isolate(sol2,y(x)) ;> allvalues(sol2) ;

> restart :> eq1 :=diff(x(t),t)=x(t)+2*y(t)-z(t) ;> eq2 := diff(y(t),t)=2*x(t)+4*y(t)-2*z(t) ;> eq3 := diff(z(t),t)=-x(t)-2*y(t)+z(t) ;> dsolve({eq1,eq2,eq3},{x(t),y(t),z(t)} );

Exercice 5> restart :On commence par définir les trois équations du système.> eq1:=diff(x(t),t)=-y(t)+z(t): eq2:=diff(y(t),t)=x(t)-z(t): eq3:=diff(z(t),t)=-x(t)+y(t):Le cas général: dsolve convient parfaitement.> dsolve({eq1,eq2,eq3},{x(t),y(t),z(t)});

Pour la solution vérifiant les conditions initiales indiquées dans l'énoncé, il suffit d'ajouter les dites C.I. dans l'ensemble d'équations fourni en argument à dsolve.

> sol:=dsolve({eq1,eq2,eq3,x(0)=0,y(0)=0,z(0)=3},{x(t),y(t),z(t)});

plot3d étant fait pour tracer des surfaces, il lui faut deux paramètres indépendant. Cela dit, les solutions ne dépendent pas de s, paramètre un peu inutile...

> plot3d(subs(sol,[x(t),y(t),z(t)]),t=0..2*Pi,s=0..1);

> expr:=diff(x(t),t)+diff(y(t),t)+diff(z(t),t):

Pour x, y et z solutions de l'équation différentielle, expr est nulle, donc la somme des trois composantes est constante: on a bien une équation de plan.

> expr1:=subs({eq1,eq2,eq3},expr);

________________________________________________________________________ 65

Page 66: Support Cours d'Info Pour La 2éme Année

Séance 10 et Séance 11

Révision générale : résolution de problèmes et leur programmation 

Remarque : les problèmes de révision peuvent être choisis parmi les exercices et problèmes proposés dans les paragraphes complément d’exercices du support « NOTE DE COURS DE MAPLE, TRAVAUX PRATIQUES avec exercices corrigés »  ou autres.

________________________________________________________________________ 66

Page 67: Support Cours d'Info Pour La 2éme Année

Séances 12 [9]

Application aux systèmes linéaires :ELECTROCINETIQUE

1- Position du problèmeSoit le circuit électrique suivant :

On se propose de calculer les intensités des courants qui parcourent les différentes branches du circuit.

2- Système d’équations

En appliquant la loi des mailles, pour les mailles I et II, et la loi des nœuds, pour le nœud N, on obtient le système d’équations algébriques suivant :

A

Ce système peut se réécrire sous forme matricielle. Soit :

B

2- Résolution avec MapleUtiliser Maple pour trouver les courants I1, I2 et I3. Ecrire une procédure courant qui permet

de trouver les courants I1, I2 et I3.

ZONE MAPLE

1- Utilisation de l’instruction solveOn va tout d’abord utiliser l’instruction solve qui permet de résoudre les équations

algébriques et les systèmes d’équations algébriques. La syntaxe minimale est solve(eq) (cas d’une seule équation) ou solve(syst) (cas d’un système) s’il n’y a pas d’ambiguïté concernant la (les) inconnue(s) de l’équation (système). Dans le cas contraire, il faut la/les préciser. La syntaxe devient alors solve(eq, x) et solve(syst,{x1,x,2x…xN}). Appliquons pour la résolution du sytème A.> restart;

________________________________________________________________________ 67

R1 = 5 kOm

E =6 V R3 = 5 kOm

R2 = 10 kOm

A B

N

M

I III

I1

I2

I3

Page 68: Support Cours d'Info Pour La 2éme Année

> eq1:=R1*I1+R2*I2=E; eq2:=R2*I2-R3*I3=0; eq3:=I1-I2-I3=0;

> syst:={eq1,eq2,eq3};

> solution:=solve(syst,{I1,I2,I3});

> R1:=5;R2:=10;R3:=5;E:=6;evalf(solution,3);

2- Utilisation de l’instruction linsolve

Essayons maintenant de résoudre le problème en utilisant l’équation matricielle B. La commande linsolve(A,B) résout l’équation matricielle A*X=B par rapport à X. On déclare pour cela :

Un vecteur intensities (correspondant à X) et contenant les 3 intensités inconnues Un vecteur generators (correspondant à B) et contenant les 3 tensions membres

droits du système. Une matrice resistors (correspondant à A) et qui contient les coefficients

(résistances) du système.En plus, on se propose d’écrire la solution sous forme d’une procédure qu’on appellera courant. Les paramètres éventuels de la procédure sont R1, R2, R3 et E.> restart: Il ne faut pas oublier de faire appel à la bibliothèque linalg qui contient les outils nécessaires de l'algèbre linéaire > with(linalg): Warning, new definition for normWarning, new definition for traceTexte de la procédure: > courant:=proc(E,R1,R2,R3) resistors:=matrix(3,3,[R1,R2,0,0,R2,-R3,1,-1,-1]); generators:=vector([E,0,0]); intensities:=linsolve(resistors,generators); end; Appel de la procédure > courant(6.,5.,10.,5.);

________________________________________________________________________ 68

Page 69: Support Cours d'Info Pour La 2éme Année

Séance 13 [9]

PENDULE SIMPLE

1. Enoncé du problème.Soit une pendule simple constituée d’un fil inextensible et sans masse de longueur l auquel est suspendue une masse ponctuelle m. La position de la masse est repérée par l’angle θ que fait le fil avec la verticale. A l’instant t = 0, la pendule est lancée depuis sa position d’équilibre θ0 = 0 à la vitesse initiale = v (en rad.s-1 ).On cherche à déterminer les variations de θ en fonction du temps t pour différentes valeurs de v.

2. Résolution à l’aide de Maple.a) Equation différentielle.

Etablir l’équation différentielle vérifiée par θ(t) pour un fil de longueur 1 m .Ecrire cette équation en Maple en précisant la valeur de g ( 9,81 m.s-2 ).

b) Résolution de l’équation différentielle.Demander à Maple la résolution de l’équation précédente, compte tenu des conditions initiales (θ0 = 0 et = v).Au vu de la réponse retournée par Maple, on choisit de résoudre numériquement l’équation (option numeric) pour avoir une solution approchée et de tracer la fonction θ(t) obtenue (odeplot) en faisant varier les vitesses initiales v entre 1 et 10 m.s-1 (instruction seq). On pourra stocker les dessins obtenus dans une table (faire une boucle for dont le corps contiendra un dessin[i] :=odeplot...) puis utiliser la fonction display du module plots avec ou sans l’option insequence=true.

c) Interprétation physique.On remarque l’existence d’une vitesse seuil qui fait passer d’une solution périodique (oscillations) à une solution où q est strictement croissante (tour complet).Donner, à l’aide des graphes obtenus, un encadrement de vseuil .Monter par le calcul que la valeur cherchée est vseuil = 2 g = 6,28 m.s-1 et conclure.

II. ZONE MAPLE1. Equation différentielle. > restart:g:=9.81: > eq:=diff(diff(theta(t),t),t)+g*sin(theta(t))=0;

2. Résolution directe. > syst:={eq,D(theta)(0)=v,theta(0)=0};

>dsolve(syst,theta(t));

________________________________________________________________________ 69

Page 70: Support Cours d'Info Pour La 2éme Année

Remarquez ici que Maple ne donne pas une solution de l'équation. En gros, il donne la solution comme étant l'intégrale de l'équation différentielle et ceci est évident. En fait, quand Maple ne parvient pas à résoudre une équation analytiquement il retourne la démarche à suivre pour la résoudre.Essayant maintenant de simplifier le problème en considérant que l'angle θ est suffisamment faible pour avoir sin(θ)= θ. Il vient que :

> eq:=diff(diff(theta(t),t),t)+g*theta(t)=0;

Résolution directe. > syst:={eq,D(theta)(0)=1,theta(0)=0};

> sol1:=dsolve(syst,theta(t));

> assign(sol1):plot(theta(t),t=1..10);

Essayons maintenant de faire intervenir un facteur de frottement visqueux (µ*v) dans l'équation. Physiquement, ceci veut dire avoir une oscillation amortie de la pendule.

________________________________________________________________________ 70

Page 71: Support Cours d'Info Pour La 2éme Année

> restart:eq2:=diff(diff(theta1(t),t),t)+mu*diff(theta1(t),t)+g*theta1(t)=0;

> syst2:={eq2,D(theta1)(0)=1,theta1(0)=0};

> sol2:=dsolve(syst2,theta1(t));

> mu:=1:g:=9.81: > assign(sol2):plot(theta1(t),t=1..10);

A ce stade, vous pouvez examiner l’influence des conditions initiales et du coefficient de frottement sur la solution de l’équation.Revenons maintenant à l’équation initiale c.a.d avec le sin(θ) et essayons de la résoudre numériquement. Maple offre la possibilité d’utiliser quelques algorithmes de résolution numérique des équations différentielles (Voir le Help). On donne ici seulement la continuité (syst étant supposé défini comme plus haut)3. Résolution numérique. > L:=[seq(dsolve(syst,theta(t),type=numeric),v=1..10)]: > for i to 10 do dessin[i]:=odeplot(L[i],[t,theta(t)],-3..3,numpoints=100,color=black) od: > with(plots): > display([seq(dessin[i],i=1..10)]);

________________________________________________________________________ 71

Page 72: Support Cours d'Info Pour La 2éme Année

En comptant ci dessus les valeurs de v dans le sens décroissant, on détermine la vitesse limite comprise entre 6 et 7 m.s-1, ce qui est conforme à la valeur attendue : v = 6,28 m.s-1 .

________________________________________________________________________ 72

Page 73: Support Cours d'Info Pour La 2éme Année

Références [1] B.BEN BEYA, M.BRICHNI Faculté des Sciences de Tunis (Bibiographie :1. Maple V en classes prépas, Philippe RAMBACH, ellipses. 2. Algorithmes cours et exercices résolus, S. Boutin et S. Tormento, Réal. 3. Jack-Michel Cornil.Philippe Testud Maple introduction raisonnée à l’usage de l’étudiant, de l’ingénieur et du chercheur Springer, 4. Cours d’algorithmique (classe de 1ère année MP et PC, institut préparatoire aux études d’ingénieur de Tunis).

[2] HAMMAMI Mohamed IPEI El Manar[3] HAMMAMI Leila IPEIN[4] CHAABENE Sinda IPEI El Manar[5] DARRAGI Soumeya IPEST[6] MAHJOUBI Med Ali IPEI Monastir[7] NIGROU Meriem IPEIM Manar [8] ELLOUMI Mourad IPEIS[9] ZIDI Zouheir ISSAT Gabès

Ce document a été élaboré par une commission constituée de représentants de tous les établissements des cycles préparatoires aux études d’ingénieur et dont la coordination a été assurée par Monsieur Kamel BEN RHOUMA (ENSI).

________________________________________________________________________ 73