Université d’Orléans U.F.R. Faculté des Sciences Licence de Physique Analyse nu
Université d’Orléans U.F.R. Faculté des Sciences Licence de Physique Analyse numérique pour les sciences physiques Jean-Philippe Grivet, 2005 Chapitre 1 Représentation graphique de fonctions L’une des activités les plus fréquentes en informatique scientifique consiste à représenter l’allure d’une fonction à l’aide d’un dessin, et de très nombreux logiciels peuvent répondre à cette attente légitime. On peut distinguer deux cas un peu différents en pratique : la fonction est définie par une ou des formules, ou elle est représentée par un tableau de valeurs. Si le premier cas ne présente aucune difficulté, le deuxième demande que l’on sache faire lire un fichier de données par le logiciel considéré, à moins de devoir entrer toutes les valeurs au clavier. J’explique la marche à suivre, pour quelques logiciels pratiques et faciles d’accès, dans les paragraphes qui suivent. 1.1 Scilab Scilab est un logiciel gratuit, très puissant et disponible sur le site de l’INRIA. On peut l’utiliser de façon interactive (comme une calculette) ou préparer, à l’aide d’un éditeur de texte (par exemple celui qui est incorporé dans Scilab depuis la version 2.7), un programme que l’on fera exécuter ensuite. Supposons que je souhaite tracer une sinusoïde amortie, répondant à l’équation y = exp(−αx) cos(βx), pour α = 0.3, β = 2 et 0 ≤x ≤10. Les instructions suivantes conviennent. deff("y = f(x)", "y = exp(-alfa*x)*cos(beta*x)") alfa = 0.4; beta = 0.4; x = 0:0.1:10; fplot2d(x,f) Le résultat apparaît sur la figure. Ce n’est pas ici le lieu de détailler la syntaxe de Scilab, qui est très bien expliquée dans l’aide en ligne, dans les manuels et sur divers sites (voir les références en fin de chapitre) ; je me contenterais de quelques indications. La première ligne définit une fonction f laquelle dépend d’un seul argument, x ; y est une variable interne à la définition et ne joue aucun rôle dans la suite. Une définition de ce genre, dite «en-ligne», ne doit pas occuper plus d’une ligne ! Les points-virgules indiquent à Scilab qu’il ne doit pas afficher à l’écran les valeurs qui viennent d’être définies. La troisième ligne initialise un vecteur, x, dont les coordonnées sont x1 = 0, x2 = 0.1, x3 = 0.2, . . . , x101 = 1. Vous pouvez constater qu’il se passe pas mal de choses «en douce» lors de l’appel de la fonction fplot. Chaque composante du vecteur x est substituée à l’argument formel x de la «fonction externe» f, la valeur de la fonction est calculée et constitue 1 An_Num 2 Fig. 1.1 – Une sinusoïde amortie représentée par Scilab 0 1 2 3 4 5 6 7 8 9 10 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1.0 une composante d’un vecteur. Le programme interpole ensuite entre composantes successives pour produire un tracé lisse. Vous pouvez définir vous-même complètement la suite de points à représenter, comme ceci alfa = 0.4; beta = 0.4; x = 0:0.1:10; y = exp(-alfa*x).*cos(beta*x); plot2d(x,y) Ici, y est un vecteur que Scilab calcule composante par composante à partir des coordonnées du vecteur x. Faites bien attention à l’écriture «.*» (point étoile) qui réalise cette multiplication composante par composante. Sans le point, y n’est que le produit scalaire (une seule valeur) des vecteurs exp(-alfa*x) et cos(beta*x). Les fonctions fplot2d ou plot2d admettent de nombreux paramètres qui permettent de mo- difier le domaine de variation des coordonnées, la couleur et l’épaisseur des traits, etc. . . Comment procéder pour tracer la courbe correspondant à un fichier de valeurs numériques ? C’est une opération très semblable à la précédente. Je suppose que le fichier D:/an_poly/ex112.dta contient les données qui m’intéressent, à raison de trois par ligne, ces nombres étant séparés par des espaces ou une tabulation : 1.0 -2.2 .831 -6 123.456 -3 3.1415 2.718281828 -0.3183098 Je procède alors comme suit M = read("D:/an_poly/ex112.dta", -1,3); plot2d(M(:,1),M(:,3),-3) Scilab admet aussi bien les obliques que les contre-obliques dans les noms de fichiers. À la première ligne, je lis le contenu du fichier et je range les valeurs dans la matrice M. La valeur -1 oblige Scilab à lire toutes les lignes de D:/an_poly/ex112.dta quelque soit leur nombre et le point-virgule est là pour l’empêcher d’afficher ces valeurs à l’écran. Je représente ensuite graphiquement tous les nombres de la troisième colonne de M (ordonnées) en fonction des valeurs correspondantes de la première colonne (abscisses). Sauf indication contraire, Scilab relie les points par de segments. Pour empêcher cela, j’ai indiqué un «style» de trait négatif (-3 ici) ; Scilab représente alors des points isolés à l’aide d’un symbole. Pour imprimer, on utilise l’option «imprimer» du menu déroulant «fichier» dans la fenêtre qui contient le graphe. An_Num 3 Fig. 1.2 – Représentation d’une série de valeurs sous Scilab −7 −5 −3 −1 1 3 5 −4 −3 −2 −1 0 1 2 ⊕ ⊕ ⊕ 1.2 Maple Le logiciel Maple est orienté vers le calcul algébrique ; il possède cependant des possibilités graphiques extrêmement puisssantes, dont voici un tout petit aperçu. Le dialogue suivant permet de tracer une sinusoïde amortie. > y := exp(-alpha*x)*cos(beta*x); y := e(−α x) cos(β x) > y1 := subs(alpha = 0.3, beta = 4,y); y1 := e(−.3 x) cos(4 x) > plot(y1,x = 0..10); Fig. 1.3 – Tracé d’une sinusoïde amortie par Maple –3 –2.5 –2 –1.5 –1 –0.5 0 0.5 –6 –4 –2 2 J’aurais pu me contenter de l’instruction unique > plot( exp(-0.3*x)*cos(4*x),x = 0..10) ; mais la version précédente me permet de définir une quantité y dépendant de deux paramètres dont je peux modifier la valeur aisément. Le symbole % signifie pour Maple «expression précédente» (c’est ¨ qui joue ce rôle pour la version V4). An_Num 4 La lecture d’un tableau de valeurs externe se fait par l’instruction «readdata» qui admet deux paramètres obligatoires, le nom du fichier et le nombre de colonnes. On peut aussi préciser s’il s’agit d’entiers ou de nombres fractionnaires. La manoeuvre est simple dans le cas d’un tableau à deux colonnes, comme le montre l’exemple ci-dessous. J’ai créé le fichier dont le nom complet est \"D:\an_poly\ex122.dta\" et dont le contenu est -2 -3.1 -1.1 -.99 0 1 2.222 3.1415 4 5 Je trace le graphe correspondant à l’aide des instructions > M := readdata("C:/an_poly/ex122.dta",2); M := [[−2., −3.1], [−1.1, −.99], [0., 1.], [2.222, 3.1415], [4., 5.]] > plot(M); Fig. 1.4 – Tracé d’une suite de points par Maple –2 2 4 –2 –1 1 2 3 4 Les nombres entiers ont été transformés en nombres fractionnaires. Remarquez aussi que les contre-obliques du nom de fichier sont remplacées par des obliques sous Maple. Il est un peu plus compliqué d’extraire d’un fichier une colonne d’abscisses et une colonne d’ordonnées. Il faut procéder comme ceci. Le fichier dont le nom DOS complet est D:\an_poly\ex123.dta contient les valeurs : 1.0 -2.2 .831 -6 123.456 -3 3.1415 2.718281828 -0.3183098 An_Num 5 L’instruction > M := readdata("D:/an_poly/ex123.dta",3); lira ces données et produira le résultat M := [[1.0, -2.2, .831],[-6., 123.456, -3.],[3.1415, 2.718281828, -.3183098]] Maple considère M comme une liste de listes, chaque liste représentant une ligne. Le code ci-dessous extrait les nombres de la première colonne (abscisses) et ceux de la troisième colonne(ordonnées), par exemple, puis reporte les points sur un graphique. > restart; > with(plots): > M := readdata("C:/an_poly/ex112.dta",3); M := [[1.0, −2.2, .831], [−16., 123.456, −3.], [3.1415, 2.718281828, −.3183098]] > points := [seq([M[i,1],M[i,3]],i=1..3)]; points := [[1.0, .831], [−16., −3.], [3.1415, −.3183098]] > plot(points,style=POINT,symbol=BOX, thickness=2,symbolsize=20); Fig. 1.5 – Tracé d’une suite de points par Maple –3 –2.5 –2 –1.5 –1 –0.5 0 0.5 –6 –4 –2 2 1.3 gnuplot gnuplot est un autre logiciel gratuit et puissant, disponible pour tous les systèmes d’exploita- tion ; il a l’avantage d’être assez peu encombrant. Il possède un analyseur syntactique qui connaît la plupart des fonctions élémentaires. Il est très facile d’accomplir avec gnuplot les deux tâches qui me servent d’exemples depuis le début. Pour tracer une fonction définie par une formule : > alfa = 0.3; beta = 4; > plot [0:10] exp(-alfa*x)*cos(beta*x); La fonction «plot» admet comme premier paramètre l’intervalle de variation de la variable indé- pendante, laquelle doit s’appeler x, par convention. Pour afficher un fonction définie comme une suite de valeurs (x, y) : > plot [-2.5:0] [-3.5:1.5] "D:/an_poly/ex142.dta" Ici encore, les obliques remplacent les contre-obliques de MS-DOS ; j’ai indiqué l’intervalle de variation pour x et pour y. An_Num 6 Comme gnuplot possède de très nombreuses options, qu’il serait malcommode de préciser à chaque tracé, il est recommandé d’utiliser un fichier de commande. On peut pour cela créer, à la main, un tracé simple puis sauvegarder toutes les options en cours dans un fichier par la commande save <nom_de_fichier>. Ce fichier texte est lisible et modifiable dans n’importe quel éditeur ; on peut donc, à loisir, ajouter ou modifier des paramètres. On exécute ensuite le fichier modifié par la commande load <nom_de_fichier>. La méthode la plus directe pour imprimer sous Windows consiste à cliquer sur l’icone située en haut à gauche du graphe, puis à choisir options/print. 1.4 Excel Tous les tableurs comportent uploads/Litterature/ analyse-numerique-french.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 19, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 1.1889MB