Calcul numérique (avec Maple) Maplesoft http://www.maplesoft.com/ Maple version 9.5
Le logiciel de calcul formel Maple Sources utilisées pour ce cours : Raphaël Giromini http://www.giromini.org/maple/index.html M. Chare (cours-tds années précédant 2006). José-Marconi Rodrigues (tps précédant 2006).
Emploi du temps Mardi : Vendredi : ~8 cours, ~12 tds, 10 tps; Cours : 13h30 - 15h00 Amphi1 TD : 17h00 - 18h30 s.312 Vendredi : TP (gp1, MI) : 14h - 16h00 s.512 TP (gp2; PC) : 16h - 18h00 s.512 ~8 cours, ~12 tds, 10 tps; Examen sans documents : mardi 13 mars, 13h30-15h00 (après 5CM, 5tds, 5tps). (dernier TDs : 2 heures)
Modalités d’évaluation Après chaque TP vous enverrez vos résultats à l’une des deux adresses suivantes (en fonction du groupe dans lequel vous êtes): Marc.Chaumont@lirmm.fr Julien.Dalmasso@lirmm.fr Les tps sont notés; critères d’évaluation : qualité, commentaires, exécution correcte...
Préambule
Préambule Maple est un logiciel de calcul formel : Après évaluation l’expression 2/6 est réduite et exprimée de manière formelle par 1/3 Maple permet d’aider à la résolution de problèmes mathématiques et numériques : grâce à des fonctions permettant de résoudre des équations typiques (dérivées, intégrales, algèbre linéaire…) et d’évaluer graphiquement. grâce à la possibilité de programmer (imposer une suite de commandes) .
Chapitre 1 : Premiers pas avec Maple
Environnement de travail Maple
Environnement de travail Maple
Quelques commandes de base Il y a à la fin de chaque commande : Soit un point-virgule ; Soit deux points : Le fait de taper sur la touche [entrée] indique à Maple qu’il faut évaluer l’expression (ou exécuter la commande).
Quelques commandes de base
Quelques commandes de base Remarque : Si l’on tape simultanément sur [shift]+[entrée] on retourne à la ligne sans évaluation.
Quelques commandes de base Le caractère pourcent (%) permet de rappeler la valeur du dernier calcul effectué par la machine (par Maple). %% permet de rappeler 2 calculs en arrière, %%% permet de rappeler 3 calculs en arrière, ...
Exercice Quel est l’affichage obtenu après évaluation par Maple ? Comment cette série de commandes a-t-elle été saisie ? Remarque : length est une fonction qui calcule le nombre de décimales d’un nombre.
Exercice Comment cette série de commandes a-t-elle été saisie ? On tape simultanément [shift]+[entrée] après chaque instruction
Quelques commandes de base Les opérations arithmétiques simples : Addition + Soustraction - Multiplication * Division / Puissance ^
Exercice Évaluer les expressions suivantes : 2a+1a; 3*a/b+2*a/b+a^0; 3*x^2+2*x^0=2; sin(x)^2+cos(x)^2; 3!+2*x^0; ln(exp(1)); a^2+2*a*b+b^2;
Exercice
Quelques commandes de base Lorsqu’une fonction vous est inconnue ou lorsque vous ne savez pas comment l’utiliser vous pouvez appeler l’aide en ligne en tapant point d’interrogation suivi du nom de la fonction. Exemple : >?sin
Quelques commandes de base Aide en ligne : >?sin
Menu d’aide en ligne Ou taper >?
Quelques commandes de base Lorsque l’on souhaite commenter un programme (suite de commandes) on utilise le dièse suivi du commentaire : Exemple : … tout ce qui ce trouve après le # n’est pas évalué
Quelques commandes de base L’affectation et la notion de variable L’affectation (attribution d’une valeur à une variable) se fait en utilisant le := … c’est votre premier programme
Quelques commandes de base Ré-initialisation de l’environnement : >restart; Les variables précédemment affectées sont « dé-assignées ». Ré-initialisation d’une variable particulière : > x:=2: unassign(‘x’);
Exercice Évaluer le programme suivant : restart; x:=1: a:=1: b:=1: 2a+1a; 3*a/b+2*a/b+a^0; 3*x^2+2*x^0=2; sin(x)^2+cos(x)^2; 3!+2*x^0; ln(exp(1)); a^2+2*a*b+b^2;
Exercice
Quelques notions de programmation
La conditionnelle Expression booléenne Instructions > restart; #a et b sont deux valeurs, par exemple #a := 3; et b := 5; if (a > b) then Max:=a else Max:=b end if; Max; Expression booléenne Instructions On appelle ceci une structure de contrôle
La conditionnelle Imbrication de conditionnelle : > #... if (a > b) then m:=a elif (b > c) then m:=b else m:= c end if; m;
La conditionnelle La conditionnelle de manière générale : if <conditional expression> then <statement sequence> | elif <conditional expression> then <statement sequence> | | else <statement sequence> | end if
La notion de séquence : Une autre façon de voir l’itération (for, while …) L’évaluation d’une expression avec différentes valeurs d’un paramètre* peut être effectuée via la commande seq > seq(i^2, i=1..5); 1, 4, 9, 16, 25 > seq(sin(Pi*i/6), i=0..6); * les différentes valeurs du paramètre sont consécutives
Séquences particulières La somme : > a:=Sum(i, i=1..10); b:=sum(i, i=1..10); evalf(a); Le produit : > a:=Product(i^2, i=1..10); b:=product(i^2, i=1..10);
La notion d’itération Une approche plus algorithmique de la séquence La boucle « for » : Exemple : > s:=0: #Initialisation de s for n from 1 to 10 #Début de la boucle for do s:=s+n #Instruction répétée #C’est le corps de la boucle od: #Fin de boucle s; #Affichage de la valeur de s 55
La notion d’itération Une approche plus algorithmique de la séquence La boucle « for » : Exemple : > s:=0: #Initialisation de s for n from 1 to 10 #Début de la boucle for do s:=s+n #Instruction répétée #C’est le corps de la boucle od: #Fin de boucle s; #Affichage de la valeur de s 55 Le caractère ‘ : ’ ne se retrouve pas partout.
La notion d’itération Une approche plus algorithmique de la séquence La boucle « for » : Exemple : > s:=0: #Initialisation de s for n from 1 to 10 #Début de la boucle for do s:=s+n #Instruction répétée #C’est le corps de la boucle od: #Fin de boucle s; #Affichage de la valeur de s 55 L’instruction s:=s+n est exécutée (évaluée) pour n valant 1, puis 2, puis 3 … Une fois que l’instruction s:=s+n a été exécutée 10 fois, la variable s contient la valeur 55.
La notion d’itération Une approche plus algorithmique de la séquence La boucle « for » : Exemple : > s:=0: #Initialisation de s for n from 1 to 10 #Début de la boucle for do s:=s+n #Instruction répétée #C’est le corps de la boucle od: #Fin de boucle s; #Affichage de la valeur de s Consigne de programmation : Aller à la ligne après chaque commande Indentez vos programmes (décalez le code sur la droite lors de l’ouverture d’une structure de contrôle telle que for, while, if …) Alignez les commentaires,
La notion d’itération Une approche plus algorithmique de la séquence Répétition de plusieurs instructions : s:=0: #initialisation u:=0: for i from 1 to 5 #Début de la boucle for do s:=s+i^2: #Instruction répétée u:=u+s*2 #Instruction répétée od: s; u; 55 210
La notion d’itération Une approche plus algorithmique de la séquence Incrémentation différente de 1 : N:=21; somme:=0: for i from 1 to N by 2 do somme:=somme+i: od: somme;
La notion d’itération Une approche plus algorithmique de la séquence La boucle « while » : > restart; S:=NULL: # Initialisation de S n:=1: # Initialisation de n NBITER:=5: # Constante NBITER while n < NBITER # Boucle while do S:=S,sin(n*Pi/7): n:=n+1: od: # Fin de la boucle while S; Remarque : sin(4*Pi/7) = sin(3*Pi/7)
Quelques fonctions de base Conversion d’une expression en une autre. Exemple d’un changement de base : >convert(9, binary); #Decimal vers binaire 1001 >convert(11, decimal, binary); #Binaire vers décimal 3 convert - convert an expression to a different form Calling Sequence convert(expr, form, arg3, ...) Parameters expr - any expression form - name arg3, ... - (optional) other arguments
Quelques fonctions de base Savoir si un nombre est premier ? >isprime(11); true Arrondi au premier entier inférieur : >floor(10.7); 10 Arrondi au premier entier supérieur >ceil(10.2); 11 Arrondi à l’entier le plus proche : >round(10.1);