import numpy as np #pour disposer des tableaux de type array
import matplotlib.pyplot as plt #pour les graphiques
%matplotlib inline
#pour l'affichage des graphiques dans la page et non pas dans une fenetre pop up
import operator #pour utiliser les opérateurs de base sous forme de fonctions
from sympy import * #pour le calcul formel
init_printing()
t = symbols('t')
def dérivée(exp, t):
return diff(exp,t)
def simplifier(exp):
return simplify(exp)
def factoriser(exp):
return factor(exp)
Soit $f$ la fonction définie sur $\mathbb{R}$ par $f(x)=x^3-6x^2+6$ definie sur $\mathbb{R}$ et dérivable sur $\mathbb{R}$ .
#expression de f(x)
fexp = t**3 - 6*t**2 + 6
fexp
#expression de f'(x)
fprimexp = dérivée(fexp, t)
fprimexp
simplifier(fprimexp)
f = lambdify(t, fexp,"numpy")
fprim = lambdify(t, fprimexp,"numpy")
#tracé des courbes de f et f'
#Message d'erreur pour f' pour le point d'abscisse 0 (division par 0)
xmin, xmax, ymin, ymax = -6, 8, -50 , 50
plt.axis([xmin, xmax, ymin, ymax])
tx = np.linspace(xmin, xmax, 1001)
ty = f(tx)
tz = fprim(tx)
plt.axhline(color='blue')
plt.axvline(color='blue')
plt.grid(True)
plt.plot(tx, ty, linestyle='-', linewidth=2, color='red', label=r'$y=f(x)$')
plt.plot(tx, tz, linestyle='-', linewidth=1, color='green', label=r"$y=f'(x)$")
plt.legend(loc='lower right')
D'après un corollaire du théorème des valeurs intermédiaires, l'équation $f(x)=0$ possède donc une unique solution $\alpha$ dans l'intervalle $]-\infty;0]$.
D'après un corollaire du théorème des valeurs intermédiaires, l'équation $f(x)=0$ possède donc une unique solution $\alpha$ dans l'intervalle $[0;4]$
D'après un corollaire du théorème des valeurs intermédiaires, l'équation $f(x)=0$ possède donc une unique solution $\alpha$ dans l'intervalle $[4;+\infty[$.
def balayage(g, a, b, pas, k):
"""Retourne un intervalle d'amplitude pas encadrant l'unique solution de g(x)= k
dans l'intervalle [a,b]"""
if g(a) < k:
comparaison = lambda u, v : operator.lt(u,v)
else:
comparaison = lambda u, v : operator.gt(u,v)
x = a
#en-tete du tableau
print('|{etape:^16}|{t:^12}|{ft:^12}|'.format(etape='Etape', t='t', ft='g(t)'))
count = 1
while comparaison(g(x), k):
print('|{etape:^16}|{t:^12.6f}|{ft:^12.6f}|'.format(etape=count,t=x, ft=g(x)))
x += pas
count += 1
print('|{etape:^16}|{t:^12.6f}|{ft:^12.6f}|'.format(etape=count,t=x, ft=g(x)))
return x - pas, x
balayage(f, 5, 6, 0.1, 0)
balayage(f, 5.8, 5.9, 0.01, 0)
balayage(f, 5.82, 5.83, 0.001, 0)