Aperçu de Scilab. Figure 1.1 : Simulation d'une orbite cométaire (vidéo)



Documents pareils
pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Introduction : Cadkey

VOS PREMIERS PAS AVEC TRACENPOCHE

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Les correcteurs accorderont une importance particulière à la rigueur des raisonnements et aux représentations graphiques demandées.

@telier d'initiation

Trier les ventes (sales order) avec Vtiger CRM

Transférer et enregistrer les photos sur l'ordinateur

Les Enseignants de l Ere Technologique - Tunisie. Niveau 1

TITRE PARTIE TITRE SECTION. Faire des anaglyphes avec CatiaV5

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

TP Blender n 2 : Importation d un modèle SketchUp et animation

Celestia. 1. Introduction à Celestia (2/7) 1. Introduction à Celestia (1/7) Université du Temps Libre - 08 avril 2008

Erratum de MÉCANIQUE, 6ème édition. Introduction Page xxi (milieu de page) G = 6, m 3 kg 1 s 2

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

Chapitre 9 : Applications des lois de Newton et Kepler à l'étude du mouvement des planètes et des satellites

Vue 2D / 3D / Dessin / Cotation Utilise : Logiciel edrawings Fichier.EPRT Dossier Tp-eDrawings

Tutoriel : logiciel de présentation Openoffice Impress

TUTORIAL 1 ETUDE D UN MODELE SIMPLIFIE DE PORTIQUE PLAN ARTICULE

Manuel d utilisation de Gestion 6

3 - Description et orbite d'un satellite d'observation

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Ref : Résolution problème d'accès aux supports de cours

NOTICE D' UTILISATION CAMWORKS FRAISAGE. Luc Vallée Lycée Blaise Pascal Segré

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

Ressources pour débutant du logiciel SMART Notebook

Ressources pour débutant du logiciel SMART Notebook

Cours Informatique Master STEP

Utilisation de XnView

La révolution des satellites de Jupiter

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Interwrite Workspace version 8 avec le projecteur Epson

Sommaire. Aide Page 1

Oscillations libres des systèmes à deux degrés de liberté

PowerPoint offre trois modes d affichage principaux : le mode Normal, le mode Trieuse de diapositives et le mode Diaporama

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

Intégrales doubles et triples - M

Java 7 Les fondamentaux du langage Java

Utilisation d'interwrite avec un vidéoprojecteur interactif EPSON

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

- Université Paris V - UFR de Psychologie ASDP4 Info Introduction à Windows


Application 1- VBA : Test de comportements d'investissements

PHPWEBSITE -Tutoriel image

Chapitre 1. Prise en main

Chapitre 4 Pierre, papier, ciseaux

Responsive Design. Technologies du web. Stéphane Bouvry, 2014

Créer un diaporama avec Open Office. Sommaire

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Module Prestashop Moyen de paiement - Financement de commandes à crédit avec Sofinco

LE PLAN. A l aide de la molette de la souris vous pouvez diminuer/augmenter la taille du plan.

SEANCE 4 : MECANIQUE THEOREMES FONDAMENTAUX

Chapitre 4 : Guide de Mouvement et Masque

Utilisation du logiciel GALAAD

Mise en scène d un modèle dans l espace 3D

1 Comment faire un document Open Office /writer de façon intelligente?

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Seafile, pour simplifier l'accès à ses fichiers, les partager et les synchroniser

Swyx Skin Editor - Guide de l'utilisateur. SwyxIt Skin Editor L éditeur de création des habillages individuels

Utilisation du visualiseur Avermedia

DYNAMIQUE DE FORMATION DES ÉTOILES

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

HTML5 et CSS3 pour des sites Responsive Web Design

LES NOUVEAUTÉS DE ARCON 15 PRO

ESPACE MULTIMEDIA DU CANTON DE ROCHESERVIERE

Créer une base de données

Créer un diaporama avec OpenOffice.org Impress

TRUCS & ASTUCES SYSTEME. 1-Raccourcis Programme sur le Bureau (7)

T u t o r i e l s PhotoFiltre

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Navigation dans Windows

TD de Physique n o 1 : Mécanique du point

La programmation orientée objet et le langage C++

Fiche animateur : module écriture collaborative

Utiliser Internet Explorer 7

Choisir entre le détourage plume et le détourage par les couches.

DÉCOUVERTE DE CAPTURE ONE

Utilisation de l éditeur.

La gravitation universelle

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Table des matières. 10 Gimp et le Web. Option de traitement d'images Mémento pour la séance N o Création d'animation

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Création de maquette web

StarDraw, le module de dessin de StarOffice 6/7

MEGA ITSM Accelerator. Guide de Démarrage

Introduction à MATLAB R

Guide utilisateur Archivage intermédiaire Messagerie. Enterprise Connect pour Outlook 2010 EC V 1.0

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

S cribe N G pour l'en seignant

Séance 0 : Linux + Octave : le compromis idéal

MECANIQUE DU POINT. y e y. z e z. ] est le trièdre de référence. e z. où [O, e r. r est la distance à l'axe, θ l'angle polaire et z la côte

Freeway 7. Nouvelles fonctionnalités

Quantité de mouvement et moment cinétique

Transcription:

1 Aperçu de Scilab Scilab est un logiciel de calcul numérique libre et multiplate-forme destiné aussi bien au théoricien qu'à l'ingénieur. Il dispose d'un langage de programmation de haut niveau, bien adapté au formalisme mathématique, et de modules complémentaires dédiés à des applications scientifiques telles que le traitement du signal et des images, l'analyse statistique, les simulations de mécanique, de dynamique des fluides, l'optimisation numérique, la modélisation et la simulation de systèmes dynamiques hybrides, etc. Pour vous donner une petite idée de ses capacités, prenons l'exemple d'une comète en orbite autour du Soleil, dont la trajectoire est perturbée par la présence d'une planète évoluant sur une orbite stable autour du Soleil. Malgré la complexité du problème, vous pouvez facilement, avec Scilab, simuler un tel système et obtenir une animation en trois dimensions du mouvement des différents corps, comme sur la vidéo ci-dessous. Figure 1.1 : Simulation d'une orbite cométaire (vidéo) Cette animation est obtenue à l'aide d'un programme écrit en langage Scilab et présenté dans Exemple 1.1 suivant. page 2

Exemple 1.1 : Script permettant de visualiser la trajectoire d'une comète autour du Soleil // simulation de la trajectoire (perturbée) d'une comète // paramétrisation d'une sphère function [x,y,z]=sphere(theta,phi) A=0.1,B=0.01 x=a*cos(phi).*cos(theta) y=a*cos(phi).*sin(theta) z=b*sin(phi) // fonction pour dessiner une sphère function plot_sphere(x,y,z) phi=[0:0.1:2*3.15]; theta=[2*3.15:-0.05:0]; [dx,dy,dz]=eval3dp(sphere,theta,phi); surf(x+dx,y+dy,z+dz); // fonction pour dessiner le plan z=0 function plot_ecliptique(ebox) x=[ebox(1);ebox(2)] y=[ebox(3);ebox(4)] z=zeros(2,2) surf(x,y,z) // les fonctions calculant les forces gravitationnelles function [u2]=force_g(t,u,masse) module=-g*masse*((u(1)^2+u(2)^2+u(3)^2)^(-3/2)) u2=[module*u(1); module*u(2); module*u(3)] function [du]=force(t,u,masse0,masse1) u1=[u(1);u(2);u(3)] du1=[u(4);u(5);u(6)] u2=[u(7);u(8);u(9)] du2=[u(10);u(11);u(12)] ddu1=force_g(t,u1,masse0) ddu2=force_g(t,u2,masse0)+force_g(t,u2-u1,masse1) du=[du1;ddu1;du2;ddu2] // constantes G=0.04; m0=1000; m1=1; dt=0.05; T=50; dx=0.5; dy=0.5; dz=0.5; alpha=65; Beta=150; page 3

// calcul des trajectoires //coordonnées initiales de la planète x1=5;y1=0;z1=0;vx1=0;vy1=2.5;vz1=0; //coordonnées initiales de la comète x2=6;y2=6;z2=0.21;vx2=-2;vy2=-0.5;vz2=-0.1; //résolution de l'équation différentielle avec ode t=[0:dt:t]; u0=[x1; y1; z1; vx1; vy1; vz1; x2; y2; z2; vx2; vy2; vz2]; u=ode(u0,0,t,list(force,m0,m1)); // récupération des résultats X=[u(1,:)',u(7,:)']; Y=[u(2,:)',u(8,:)']; Z=[u(3,:)',u(9,:)']; // lancement de la fenêtre graphique ebox=[min(x),max(x),min(y),max(y),min(z),max(z)]; N=length(t); // nombre d'étapes drawlater() plot_ecliptique(ebox) // tracé du plan de l'écliptique plot_sphere(0,0,0) // soleil plot_sphere(x(1,1),y(1,1),z(1,1)) // planète plot_sphere(x(1,2),y(1,2),z(1,2)) // comète A=gca(); A.axes_visible=["off" "off" "off"]; A.rotation_angles=[alpha Beta]; A.data_bounds=ebox; drawnow() // boucle principale créant l'animation graphique for k=1:5:n Beta=Beta+k/300; // angle de vue realtimeinit(0.05) // unité de temps drawlater() // ouverture du buffer graphique clf() // on efface le buffer graphique plot_ecliptique(ebox) // tracé du plan de l'écliptique param3d1(x(1:k,:),y(1:k,:),... // affichage des list(z(1:k,:),[5,2])) // trajectoires plot_sphere(0,0,0) // le soleil plot_sphere(x(k,1),y(k,1),z(k,1)) // la planète plot_sphere(x(k,2),y(k,2),z(k,2)) // la comète title('comet dynamics simulation : t='+msprintf(... '%2.2f',t(k))+'/'+string(T)+' years') // le titre xinfo(string(t(k))) // affichage du temps A=gca(); // redimensionnement de la fenêtre graphique A.axes_visible=["off" "off" "off"]; A.rotation_angles=[alpha Beta]; // rotation pt de vue A.data_bounds=ebox; drawnow() // affichage du buffer graphique realtime(k)// pause pour ajuster le rythme d'affichage end page 4

Cet exemple donne un petit aperçu des possibilités de Scilab aussi bien en matière graphique qu'au niveau du calcul numérique. Avec un peu de maîtrise, vous pourrez rapidement aller plus loin et créer des programmes permettant à un utilisateur d'interagir avec l'interface graphique de Scilab pour générer ses propres animations, telle que celle présentée sur la vidéo ci-dessous. Figure 1.2 : Simulation d'un pendule accroché à un ressort (vidéo) Dans cet exemple, nous simulons la trajectoire d'un pendule accroché à un ressort (de raideur k) que l'on laisse osciller librement après l'avoir lâché sans élan depuis une position donnée. L'évolution du pendule se modélise par un système d'équations différentielles faisant intervenir deux variables : avec : a l'angle du pendule par rapport à la verticale ; r la longueur du ressort constituant le pendule ; et les conditions initiales :. page 5

Pour étudier un tel système, très sensible aux conditions initiales, il est important de pouvoir modifier facilement la position de départ du pendule et observer l'influence de chaque paramètre sur le mouvement. Ici Scilab permet de créer une interface graphique qui simplifie la saisie des paramètres et de se concentrer sur l'analyse des résultats. Avec le script de l'exemple 1.2, vous pouvez modifier la position initiale du pendule d'un simple clic de souris dans la fenêtre graphique puis étudier son mouvement. Exemple 1.2 : Script permettant de modifier la position initiale du pendule ********* // animation d'un pendule élastique ********* // fonction pour créer la matrice de rotation function M=rot(a) M=[cos(a),sin(a);-sin(a),cos(a)]; // quelques constantes n=40; // nombre de spires du ressort T=5; // durée de la simulation g=9.81; // g (gravitation) k=10; // k (raideur du ressort) dt=0.01; // dt (pas de temps) ********* // lancement de l'affichage ********* // titre de la fenêtre xtitle("(clic gauche pour démarrer l''animation, clic droit pour arrêter)") // page de titre (en LaTeX) titlepage(["résolution numérique d''une EDO le pendule à ressort : ";" "; "$$\Large r{d^2\over dt^2}a+2{d\over dt}r \times {d\over dt}a=g \times \sin(a)$$"; " "; "$$\Large {d^2\over dt^2}r-{k\over m}(r-r_0)=r\left({d\over dt} a\right)^2+g\times \cos(a)$$";" "; " avec les conditions initiales : "; "$$\Large a(0)=? \;\;\;\;\;\; {d\over dt}a(0)=0 \;\;\;\;\;\; r(0)=r_0=? \;\;\;\;\;\; {d\over dt}r(0)=0 $$"]) ********* // traitement des interactions avec la fenêtre graphique ********* // attente d'un clic de souris dans la fenêtre [c_i,c_x,c_y,c_w]=xclick(); while (c_i<>2)&(c_i<>5) // tant qu'on n'a pas fait un clic droit clf() //effacer la fenêtre *** // récupération des données initiales de l'animation *** // titre de la fenêtre xtitle("(un click pour initialiser la position du pendule, a(0) et r(0) )") // paramétrage du handle Axes de la fenêtre plot(0,0,'.k');a=gca();a.x_location="origin"; A.y_location="origin";A.auto_scale="off";A.isoview="on"; page 6

A.data_bounds=[-1-1; 1,0];xgrid(3) // récupération des coordonnées de la position initiale // du pendule : [c_i,x,y,c_w]=xclick(); // calcul des données initiales : a=sign(x)*abs(atan(x/y));a0=a;da=0; // calcul de l'angle a(0) l=sqrt(x^2+y^2);r=l;,dr=0; // calcul de r(0) // adapter la taille de la fenêtre à la taille maximale // du pendule : A.data_bounds=[-1.5,-max(4*l,4);1.5,max(l,0.5)]; *** // boucle créant l'animation *** for t=0:dt:t // calcul des nouvelles positions // résolution des équations différentielles sur a et r // par la méthode d'euler dda=-(g*sin(a)+2*dr*da)/r; ddr=r*(da)^2-k*(r-l)+g*cos(a); da=da+dt*dda; dr=dr+dt*ddr; a=a+dt*da; r=r+dt*dr; // calcul de la ligne traçant le ressort ressortr=linspace(0,r,n)'; // étirement du ressort // coordonnées transversales à l'axe du ressort -> /\/\/\ ressorta=[0;(-1).^[0:n-3]';0]*(l/10); //rotation de l'image du ressort selon l'angle a x=[x;r*sin(a)]; y=[y;-r*cos(a)]; M=-rot(-a); N=[ressortr,ressorta]*M; ressorty=n(:,1);ressortx=n(:,2); // affichage du pendule drawlater() // écriture dans le buffer graphique clf() // effacer la fenêtre plot(ressortx,ressorty) //affichage du ressort du pendule xstring(0,0.1,["t=" string(t)]) // temps écoulé // la boule du prendule : xfarc(r*sin(a)-0.05,-r*cos(a)+0.05,0.1,0.1,0,360*64) // redimensionnement de la fenêtre graphique A=gca();A.data_bounds=[-1.5,-max(4*l,4);1.5,max(l,0.5)]; A.auto_scale="off";A.isoview="on"; A.axes_visible=["off" "off" "off"]; drawnow() // afficher le buffer graphique realtime(t); // delai d'affichage end *** // choix d'une nouvelle animation ou d'une sortie du script *** xtitle("(un clic pour continuer )") // titre de la fenêtre plot(x,y,'-r') // affichage trajectoire page 7

A=gca();A.isoview="on";xgrid(3); //afficher une grille (verte) // attente d'un clic de souris dans la fenêtre graphique : [c_i,x,y,c_w]=xclick(); clf(); // choix d'une nouvelle action xtitle("(clic gauche pour démarrer l''animation, clic droit pour arrêter)") plot(0,0,'.k');a=gca();a.x_location="origin"; A.y_location="origin"; // attente d'un clic de souris dans la fenêtre : [c_i,x,y,c_w]=xclick(); end Ces deux exemples font appel à des notions de base d'utilisation de Scilab, que nous allons vous présenter dans la suite de ce livre. À la fin de votre lecture, vous serez à même de les réaliser par vous-même, comme nous vous le montrerons au dernier chapitre Deux études de cas : le pendule et l'orbite cométaire. Attention > Pour une bonne exécution des scripts ci-dessus, utilisez Scilab 5.4.1 ou +. page 8