• Aucun résultat trouvé

x = np.linspace(a,b,n+1

N/A
N/A
Protected

Academic year: 2022

Partager "x = np.linspace(a,b,n+1"

Copied!
2
0
0

Texte intégral

(1)

# ======================================================================== #

# RESOLUTION D'UNE EQUATION DIFFERENTIELLE DU PREMIER ORDRE : y' = f(y,x). #

# METHODE DE RUNGE-KUTTA (ORDRE 2). #

# Version du 06/12/2014. #

# ======================================================================== #

# Importation des bibliothèques/modules requis.

# =============================================

import numpy as np

import matplotlib.pyplot as plt

# La fonction donnant la dérivée y' en fonction de y et de la variable de référence x.

#

====================================================================================

def f(y,x):

return x + y

# Le coeur de l'algorithme : le schéma numérique proprement dit.

# ==============================================================

def RK2(y0,a,b,n,s):

# Le pas h = (b-a)/n

# Initialisation du tableau des abscisses grâce à la fonction linspace de numpy.

x = np.linspace(a,b,n+1)

# Initialisation du tableau des ordonnées (n+1 valeurs car il y a n pas ...).

# Ce tableau numpy est initialisés avec des 0.

# Remarque : on peut également travailler avec des listes Python "classiques".

y = np.zeros(n+1) y[0] = y0

# Le schéma numérique.

for i in range(n):

y_mid = y[i] + h * f(y[i],x[i]) / 2 y[i+1] = y[i] + h * f(y_mid,x[i] + h / 2) # Génération des points pour l'affichage graphique.

plt.plot(x,y,s,label=str(n)+' pas')

# A l'issue du calcul des n points, on affiche y[n], c'est à dire la valeur approchée de y(b).

print('Approximation de y(' + str(b) + ') par la méthode de Runge-Kutta (ordre 2) (' + str(n) + ' pas) :',y[n])

# Programme principal.

# ====================

# Initialisations y0, x0, b = 1, 0, 8

print('Résolution de y\'(x)=x+y(x) avec la condition initiale : y(' + str(x0) + ')=' + str(y0))

# On efface le graphique précédent ...

plt.clf()

# Génération des nuages de points avec différents nombres de pas RK2(y0,x0,b,10,'ro') # points rouges

RK2(y0,x0,b,100,'go') # points verts RK2(y0,x0,b,400,'yo') # points jaunes

# Solution exacte

print('Valeur exacte de y(' + str(b) + ') : ' + str(-1-b+2*np.exp(b))) x = np.linspace(x0,b,201)

plt.plot(x,-1 -x + 2 * np.exp(x),label='Solution exacte')

# Titre

plt.title('Méthode de Runge-Kutta (ordre 2)') plt.legend(loc = 'upper left')

1

(2)

# Affichage graphique plt.show()

# Fin du programme principal.

# ===========================

2

Références

Documents relatifs

Soit x le nombre cherché. Dans le triangle ABC, le plus grand côté est BC. On sait que O est le centre du cercle circonscrit au triangle ABC rectangle en A. Or, dans un

Le DAS, « Débit d'Absorption Spécifique », est un indice qui mesure le niveau de radiofréquences émis par un téléphore portable envers l'usager durant son

La corrélation entre deux variables qui sont dans le même groupe soit positive.. La corrélation entre deux variables qui ne sont pas dans le même

Exprime en fonction de x et sous la forme d'une expression simplifiée l'aire du rectangle

Effectue ce programme pour un nombre x de départ et écris une expression simplifiée du résultat en fonction de

Démontre que tout entier impair peut s'écrire comme la différence des carrés de deux entiers naturels consécutifsb. Trouve tous les triplets

Si le conducteur roule à la même vitesse qu'à la question précédente, quelle sera sa distance de freinage.. À quelle vitesse peut-il rouler sans risquer un accident en cas

Attention dans le calcul du discriminant, b² est toujours positif en effet (–13)²=169, il ne faut pas confondre avec -13²=-169.. 4 Résoudre les équations du second degré