(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
But de l’activité : Ecrire des fonctions Python permettant le calcul de taux de variation, de nombres dérivés, du coefficient directeur et de l’ordonnée à l’origine d’une tangente à une courbe.
On considère la fonction $f$ définie sur $\mathbb{R}$ par $f(x)=\frac{1}{4} x^3+x-3$.
1. Ecrire une fonction Python f qui :
def f(x):
return 1/4*x**3+x-3
f(5)
33.25
2. Ecrire une fonction Python coeff_dir qui :
def coeff_dir(xA,yA,xB,yB):
return (yB-yA)/(xB-xA)
coeff_dir(2,5,3,-2)
-7.0
3. A l’aide de la fonction précédente, écrire une fonction Python taux_variation qui :
def taux_variation(f,a,h):
return coeff_dir(a,f(a),a+h,f(a+h))
4. A l’aide de cette fonction, calculer le taux de variation de $f$ entre $3$ et $3,000001$. Conjecturer la valeur du nombre dérivé $f'(3)$, puis effectuer un calcul pour vérifier.
taux_variation(f,3,0.000001)
7.7500022495338925
5. L’import « from scipy import misc » permet d’utiliser la fonction misc.derivative qui :
Tester cette fonction pour calculer $f'(3)$.
from scipy import misc
ec=10**-9
misc.derivative(f,3,ec)
7.749999753059455
6. Ecrire une fonction Python coeff_tang qui :
def coeff_tang(f,a):
derive=misc.derivative(f,a,ec)
return derive , f(a)-derive*a
Tester cette fonction pour déterminer l’équation de la tangente à la courbe de $f$ en $2$.
coeff_tang(f,2)
(4.000000330961484, -7.000000661922968)
7. La fonction tab_val ci-dessous permet d’obtenir une liste de valeurs de la fonction $f$.
#(Tester puis) modifier la fonction
def tab_val(f,x0,p,n):
t=[]
x=x0
for k in range(n):
t.append(f(x))
x=x+p
return t
# Tester la fonction modifiée
tab_val(f,3,0.5,10)
[6.75, 11.21875, 17.0, 24.28125, 33.25, 44.09375, 57.0, 72.15625, 89.75, 109.96875]
8. Ecrire une fonction Python cdir_secantes qui :
# Ecrire la fonction
def cdir_secantes(f,x_0,p,n):
t=[]
x=x_0
for k in range(n):
x=x+p #Attention: incrément préalable pour éviter une division par 0
t.append(coeff_dir(x_0,f(x_0),x,f(x)))
return t
cdir_secantes(f,3,0.5,10)
[8.9375, 10.25, 11.6875, 13.25, 14.9375, 16.75, 18.6875, 20.75, 22.9375, 25.25]
Prérequis : Fonctions Python réalisées dans l’activité « Fonctions élémentaires autour de la dérivation »
But de l’activité : Approcher la solution d’une équation à l’aide de la méthode de Newton.
On considère la fonction $f$ définie sur $\mathbb{R}$ par $f(x)=\frac{1}{4} x^3+x-3$.
1. Démontrer que $f$ est croissante sur $\mathbb{R}$. On admettra pour la suite que l’équation $f(x)=0$ a une unique solution sur $\mathbb{R}$, notée $α$.
2. Justifier que pour toute abscisse $a$, la tangente $T_a$ à la courbe de $f$ en $a$ coupe l’axe des abscisses en un point $P$.
Déterminer l’expression de l’abscisse de $P$ en fonction de $a$, $f'(a)$ et $f(a)$.
Ecrire une fonction Python etap_Newton qui :
def etap_Newton(f,a):
return a-f(a)/misc.derivative(f,a,ec)
# Tester la fonction
etap_Newton(f,3)
2.129032230312612
3. A partir d’un point de l’axe des abscisses, on peut donc construire une suite de points. On admettra ici que la suite des abscisses de ces points a pour limite $α$.
La fonction Python appl_Newton donnée ci-dessous :
Expliquer ce que représentent les termes de la liste renvoyée.
def appl_Newton(f,a,n):
t=[a]
for k in range(n):
a=etap_Newton(f,a)
t.append(a)
return t
4. Tester cette fonction appl_Newton pour la fonction $f$ de l’énoncé avec $a=3$ et $n=10$.
appl_Newton(f,3,10)
[3, 2.129032230312612, 1.7786264005609027, 1.723683342712288, 1.7224488102335596, 1.7224481994793737, 1.7224481994791472, 1.7224481994791472, 1.7224481994791472, 1.7224481994791472, 1.7224481994791472]
5. Proposer et coder en Python des fonctions polynomiales $g$ et $h$ à coefficients entiers s’annulant respectivement en $\sqrt{5}$ et $\sqrt[3]{7}$.
def g(x):
return x**2-5
def h(x):
return x**3-7
A l’aide des fonctions Python précédentes, proposer des valeurs approchées de ces deux nombres.
# Effectuer les saisies nécessaires
appl_Newton(g,3,5) , appl_Newton(h,3,5)
([3, 2.333333388493576, 2.2380952459752765, 2.236068895667427, 2.236067977500065, 2.23606797749979], [3, 2.259259320548418, 1.9633080713185473, 1.914212760583598, 1.9129320407341106, 1.912931182772846])
Prérequis : Aucun, mais les question 1)a)b) peuvent être supprimées si l’activité « Méthode de Newton » a été traitée.
But de l’activité : Approcher la solution d’une équation à l’aide d’un algorithme de dichotomie (méthode plus lente que la méthode de Newton, mais pour laquelle la précision du résultat est connue).
On considère la fonction $f$ définie sur $\mathbb{R}$ par $f(x)=\frac{1}{4} x^3+x-3$.
1. Démontrer que $f$ est croissante sur $\mathbb{R}$. On admettra pour la suite que l’équation $f(x)=0$ a une unique solution sur $\mathbb{R}$, notée $α$.
Ecrire une fonction Python $f$ qui:
def f(x):
return 1/4*x**3+x-3
Déterminer les images de $0$ et $3$ par $f$, et en déduire que $α∈[0;3]$.
f(0) , f(3)
(-3.0, 6.75)
2. On considère un intervalle $[a;b]$ contenant $α$ et on pose $m=\frac{a+b}{2}$.
Justifier que : (*) si $f(a) \times f(m)<0$ alors $α∈[a;m]$ , et sinon $α∈[m;b]$ .
En utilisant (*), écrire une fonction Python etap_dichoto qui :
def etap_dichoto(f,a,b):
m=(a+b)/2
if f(a)*f(m)<0:
return a,m
else:
return m,b
A partir de l’intervalle $[a;b]=[0;3]$, obtenir successivement 3 nouveaux intervalles contenant $α$.
int1=etap_dichoto(f,0,3)
int2=etap_dichoto(f,*int1)
int3=etap_dichoto(f,*int2)
int1 , int2 , int3
((1.5, 3), (1.5, 2.25), (1.5, 1.875))
Que peut-on dire de la longueur de chaque intervalle obtenu par rapport à la précédente ?
3. Ecrire une fonction Python dichoto_iter qui :
def dichoto_iter(f,a,b,n):
for k in range(n):
a,b=etap_dichoto(f,a,b)
return a,b
Tester avec la fonction $f$ de l’énoncé en partant de l’intervalle $[0;3]$ et en répétant $10$ fois la méthode.
dichoto_iter(f,0,3,10)
(1.7197265625, 1.72265625)
4. Ecrire une fonction Python dichoto_test qui :
def dichoto_test(f,a,b,h):
while b-a>h:
a,b=etap_dichoto(f,a,b)
return a,b
Tester avec la fonction $f$ de l’énoncé pour obtenir un encadrement de α à $10^{-5}$ près.
dichoto_test(f,0,3,10**-5)
(1.7224445343017578, 1.7224502563476562)
5. Proposer et coder en Python des fonctions polynomiales $g$ et $h$ à coefficients entiers s’annulant respectivement en $\sqrt{5}$ et $\sqrt[3]{7}$.
def g(x):
return x**2-5
def h(x):
return x**3-7
A l’aide des fonctions Python précédentes, proposer des encadrements de ces deux nombres à $10^{-7}$ près.
dichoto_test(g,0,3,10**-7) , dichoto_test(f,0,3,10**-7)
((2.2360678911209106, 2.236067980527878), (1.7224481105804443, 1.7224481999874115))
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/