Le système à résoudre peut s'écrire sous forme vectorielle dY/dt = F(t,Y). Cette page effectue son intégration en autorisant, au plus,
huit composantes. Décomposé en 8 équations différentielles ordinaires du premier ordre, ce système s'écrit alors :
dy1/dt = f1(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy2/dt = f2(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy3/dt = f3(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy4/dt = f4(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy5/dt = f5(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy6/dt = f6(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy7/dt = f7(t,y1,y2,y3,y4,y5,y6,y7,y8)
dy8/dt = f8(t,y1,y2,y3,y4,y5,y6,y7,y8)
L'algorithme employé appartient à la famille des méthodes de Runge-Kutta. Il est du cinquième ordre et effectue une évaluation de l'erreur locale qui permet de faire varier le pas d'intégration pour contrôler l'erreur. Il est ici implémenté d'une manière simple favorisant la rapidité d'exécution au détriment du contrôle d'erreur, un peu assoupli. Au besoin, ceci peut être compensé en réduisant un peu la valeur de précision relative spécifiée dans les données d'entrée ci-dessous. Pour maîtriser la 1convergence et la qualité du résultat, l'utilisateur doit encadrer la variation du pas en fournissant une borne inférieure et une borne supérieure pour la valeur du pas.
La progression du calcul est manifestée par une barre d'avancement, au fur et à mesure de l'intégration. A la fin du calcul, les résultats numériques sont écrits dans la section "Affichage des résultats de simulation" qui s'insère avant l'annexe ci-dessous. La représentation graphique n'est tracée que lorsque le calcul est fini (les intervalles de variation étant inconnus a priori).
A la première ouverture de cette page, le formulaire est rempli avec un exemple fonctionnel (dont le résultat est à comparer à la solution exacte y1=sin(2πt), y2= 2πcos(2πt)) ; il est possible de cliquer tout de suite sur le bouton "lancer la simulation" pour expérimenter le fonctionnement du logiciel.
Pour garder une trace complète de la simulation, le plus simple est "d'imprimer" cette page en PDF (attention : il peut y avoir de nombreuses pages de résultats numériques de simulation après les graphiques ; vérifier avant de lancer une impression sur papier). Il est aussi possible d'enregistrer les tracés sous forme d'images individuelles (au format png, de préférence).
Le bon fonctionnement de l'application a été testé sous Firefox 45.0 et Ubuntu Web browser 0.23 (sous Ubuntu 14.04 LTS), sous Firefox 43.0.1 ou 45.0.1 et sous IE 11 (sous Windows 7), ainsi que sous Chrome 47.0 (sous Android). Des versions plus anciennes des navigateurs peuvent être insuffisantes.
Pour enregistrer le tracé: clic droit puis "Enregistrer l'image sous…". Le format png (par défaut) exporte le tracé avec une marge transparente.
Opérateur | Description |
+ | addition |
- | soustraction |
* | multiplication |
/ | division |
% | modulo (reste de la division entière) |
(pour l'élévation à la puissance, utiliser la fonction Math.pow) | |
Constante | Description |
Math.E | le nombre d'Euler e (environ 2.718) |
Math.LN2 | le logarithme népérien de 2 (environ 0.693) |
Math.LN10 | le logarithme népérien de 10 (environ 2.302) |
Math.PI | Le nombre pi (environ 3.14) |
Math.SQRT1_2 | la racine carrée de 1/2 (environ 0.707) |
Math.SQRT2 | la racine carrée de 2 (environ 1.414) |
Fonction | Description |
Math.abs(x) | Renvoie la valeur absolue de x |
Math.acos(x) | Renvoie l'arccosinus de x en radians |
Math.asin(x) | Renvoie l'arcsinus de x radians |
Math.atan(x) | Renvoie l'arctangente de x, compris entre -PI/2 and PI/2 radians |
Math.atan2(y,x) | Renvoie l'arctangente du quotient de ses arguments |
Math.ceil(x) | Renvoie l'arrondi supérieur de x |
Math.cos(x) | Renvoie le cosinus de x (x exprimé en radians) |
Math.exp(x) | Renvoie ex |
Math.floor(x) | Renvoie la partie entière de x |
Math.log(x) | Renvoie le logarithme népérien de x |
Math.max(x,y,z,...,n) | Renvoie la plus grande valeur |
Math.min(x,y,z,...,n) | Renvoie la plus petite valeur |
Math.pow(x,y) | Renvoie la valeur de x à la puissance y |
Math.random() | Renvoie un nombre aléatoire entre 0 et 1 |
Math.round(x) | Arrondi x à l'entier le plus proche |
Math.sin(x) | Renvoie le sinus de x (x exprimé en radians) |
Math.sqrt(x) | Renvoie la racine carrée de x |
Math.tan(x) | Renvoie la tangente de x (x exprimé en radians) |
INFORMATION : cette page (RKM_method.htm) peut être téléchargée (faire enregistrer sous...) pour être exécutée localement mais il faut aussi télécharger et placer dans le même dossier le fichier compagnon traceXY.js qui contient des fonctions de tracé graphique. Par ailleurs, ce code requiert un navigateur récent.
© Sellig Zed, mars 2016. Logiciel libre diffusé sous licence CeCILL ; le module graphique traceXY.js est placé sous licence CeCILL-C (pour en savoir plus, voir le code source de la page et celui du module graphique).