En général, on ne peut pas résoudre une équation quelconque en utilisant le calcul algébrique et Python. Par contre, si on sait déjà qu’une certaine équation admet une solution dans un intervalle, on peut programmer des fonctions qui nous donneront une valeur approchée de cette solution. Il existe plusieurs méthodes, nous verrons ici la méthode dite « par balayage ».

Préparons le terrain

Avant tout, il faut définir le problème.

Soit une fonction f définie sur un intervalle [a;b], soit k un nombre réel. Supposons que l’équation f(x)=k ait une solution dans l’intervalle [a;b]. Il s’agit de trouver une valeur approchée de cette solution à e près, où e est un nombre positif.

Par exemple, on peut vouloir trouver une valeur approchée de \sqrt 3 à e=0,01 près, ce qui revient à résoudre l’équation x^2=3 dans l’intervalle [0;2]. Il est assez facile de voir que cette équation admet bien une solution, qui est positive et inférieure à 2.

Du côté de Python, on va définir la fonction f, appelée pourquoi pas f aussi. Par exemple si on veut résoudre une équation de la forme x^2=k, on définit :

def f(x):
    return x*x

Dans la suite, nous supposerons que la fonction mathématique f est définie dans Python.

Résolution par balayage : le principe

Supposerons que f(x)\leq a, que l’équation f(x)=k admet une solution sur [a;b] et que f est croissante sur [a;b].

Le principe est de calculer f(a), qui est inférieur ou égal à k, et de parcourir (ou « balayer ») tout l’intervalle [a;b] en progressant de e en e (a+e, puis éventuellement a +2e…) en calculant les images de ces nombres. On finira par obtenir une image supérieure à k.

Le premier nombre pour lequel on aura obtenu cette image sera une valeur approchée à e près par excès de la solution de l’équation.

Dans notre exemple, on va calculer 0^2, puis éventuellement 0,01^20,02^20,03^2, etc. jusqu’à obtenir une image supérieure à 3.

La fonction Python

La fonction Python suivante prend quatre paramètres : la fonction f et le nombre réel k de l’équation f(x)=k, ainsi que la borne a de l’intervalle [a;b] et un paramètre e qui est la précision voulue. Elle renvoie une valeur approchée à e près par excès de la solution de l’équation f(x)=k, à condition que l’équation admette au moins une solution dans cet intervalle.

def resoudreEquationParBalayage(f,k,a,e):
    s = a
    while f(s)<= k:
        s=s+e
    return s

Si on veut une valeur approchée de \sqrt 3, solution de l'équation x^2=3, à 0,01 près, on demandera  resoudreEquationParBalayage(f,3,0,0.01) qui donne 1.7400000000000013.

Notez que nous n’avons pas besoin de b et que, dans l’exemple, on commence le balayage à 0 puisqu’on sait que \sqrt 3 est un nombre positif.

Quelques exercices

Modifier la fonction resoudreEquationParBalayage pour qu’elle réponde au problème quand f(a) \geq k.

Modifier la fonction resoudreEquationParBalayage pour qu’elle réponde au problème, mais en partant de b. On pourra distinguer deux cas, suivant que f(b) est inférieur ou supérieur  k.

2 réflexions sur “Résoudre des équations par balayage avec Python

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s