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).
Brainstorming … qu’a t-on vu la dernière fois ?
Brainstorming … qu’a t-on vu la dernière fois ? is, type and, or, not, `if` (expr, alt1, alt2) définition d’une procédure : proc, local Affichage : plot, with(plot), textplot
Chapitre 6 : Types de données fondamentaux
Rappel de la semaine dernière Maple contient un grand nombre de types de données. Nous avons vu pour le moment les types : complex integer fraction float string
Rappel de la semaine dernière Il existe de nombreux autres types « exotiques » : function, procedure, indexed, series, ::, .., uneval etc. Certains types sont également présents dans d’autres langages de programmation comme les types : suite (exprseq), liste (list), ensemble (set), tableau (array), table (table).
Suites En Maple, une suite est un ensemble d’expressions écrites dans un ordre donné et séparées par des virgules.
Listes En Maple, une liste est une « suite entourée de crochets ».
Suite Liste Pour passer d’une suite à une liste on ajoute des crochets [ ]. Pour passer d’une liste à une suite, on utilise la commande op.
Construction de suites génériques (séquence ou itération) On utilise la commande seq ou bien la programmation par itération pour construire une suite générique.
Construction de suites génériques (séquence ou itération)
Accès à un n-ème terme (suite ou liste) Pour accéder au n-ème terme d’une liste ou d’une suite, on écrit le nom de la variable suivi du numéro du terme entre crochets
Sous-suite, sous-liste et concaténation concaténation de suites concaténation de listes
Quelques particularités des listes Commandes propres aux listes : Nombre d’éléments : nops Substitution d’un élément sachant son nom: subs Substitution d’un élément sachant sa place: subsop Tri : sort.
Quelques particularités des listes Le 5ème élément est remplacé par la valeur 10
Extraction d’une sous-liste par un critère (fonction booléenne) sur la liste On utilise la commande select
Dernière remarque On peut créer des listes de listes
Les ensembles Un ensemble est une suite d’éléments qui ne se répètent pas et n’ont pas d’ordre particulier. En Maple un ensemble se saisit par une énumération d’expressions séparées par des virgules et entourée d’accolades { }.
Les ensembles Illustration :
Suite Ensemble Pour passer d’une suite à un ensemble on ajoute des crochets { }. Pour passer d’un ensemble à une suite, on utilise la commande op.
Opérations sur les ensembles Union, Intersection, Soustraction :
Nombre d’éléments, Accès à un élément, sous-ensemble ...
Extraction d’un sous-ensemble par un critère (fonction booléenne) sur l’ensemble On utilise la commande select
Tableaux Un tableau est une structure de données qui contient des éléments de même type. En Maple, la syntaxe pour déclarer un tableau nommé T est la suivante : T := array(type_de_tableau, fonction_index, liste_valeurs); - type_de_tableau : (optionnel) symetric, antisymetric, sparse, diagonal et identity. - fonction_index : décrit la façon dont les index varient. - liste_valeurs: (optionnel) valeurs contenues dans le tableau.
Tableaux : Illustration nombre de lignes nombre de colonnes
Liste Tableau Pour passer d’une liste de liste à un tableau on utilise la commande convert(…, ‘array’). Pour passer d’un tableau à une liste de liste on utilise également la commande convert(…, ‘listlist’). Remarque : on peut définir un tableau, sans préciser ses dimensions, en donnant ses entrées sous la forme de liste de listes.
Liste Tableau
Nombre d’éléments, Accès à un élément...
Les tables Les tables sont une généralisation des tableaux si ce n’est que les indices sont n’importe quel type d’expression (chaîne, symbole, etc.). Les tables sont utiles uniquement dans le cadre de la programmation avancée.
Les tables - illustration
Chapitre 4 : Graphiques … suite
Courbes paramétrées La syntaxe pour tracer une courbe définie paramétriquement par le vecteur (f(t), g(t)) avec f et g des fonctions dépendant du paramètre t est : plot([f(t), g(t), t=intervalle]); Les crochets sont autour de toute l’expression
Courbes paramétrées - Illustration
Champs de vecteurs En physique, il peut être utile de tracer un champ de vecteurs (par exemple le champ de vecteurs d’une force magnétique, électrique ou gravitationnelle). Maple permet de tracer les champs de la forme (f(x,y), g(x,y)). La commande pour tracer un tel champ est définie par : fieldplot([f(x,y), g(x,y)], x=a..b, y=c..d, options)
Champs de vecteurs
Fonctions implicites Les fonctions implicites en deux dimensions sont définies par une relation de la forme f(x,y) = a. Elles peuvent être tracées en utilisant la commande implicitplot
Fonctions implicites
Graphes de points La commande peut aussi être utilisée pour relier des points entre eux, avec la syntaxe : plot([[a1,b1], [a2,b2], ... ,[an,bn]]); On peut fermer la courbe en mettant [a1,b1] = [an,bn].
Graphes de points plot([[-12, -1],[20,7], [21,3], [-11, -5], [-12,-1]]); plot([[-12, -1],[20,7], [21,3], [-11, -5], [-12,-1]], style=point);
Autres systèmes de coordonnées Il suffit d’ajouter l’option coords = type bipolar, cartesian, cassinian, elliptic, hyperbolic, invcassinian, invelliptic, logarithmic, parabolic, rose, tangent … Exemple : cartesien (u, v) --> polaire (x, y) x = u*cos(v) y = u*sin(v)
Exemple de système polaire
Inégalités Il est possible de tracer des courbes représentatives d’inégalités en utilisant la commande inequal
Graphique en 3D... La syntaxe est similaire à la syntaxe de la commande plot: plot3d(expression, intervalle, options) On retrouve d’ailleurs les mêmes options : plusieurs courbes sur un même graphique, courbes paramétrées, nombreux systèmes de coordonnées ...
Exemples Une Fonction plot3d(sin(x*y), x=-Pi..Pi, y=-Pi..Pi, style=hidden); Une courbe paramétrée plot3d([ x*sin(y)*cos(y), x*cos(y)*cos(y), x*sin(y) ], x=0..2*Pi, y=0..Pi);
Les animations Une suite de graphes 2D ou 3D peut être animée grâce à la commande animate qui a la syntaxe suivante : animate ([f(x,t), x=a..b, t=c..d) où t représente le temps c’est-à-dire le paramètre à faire varier *