Feuille d’exercices 9 – avancé#
Objectifs
Expressions symboliques
Fonctions : dérivation, intégration, limites
Sommes, produits et séries
Avertissement
Ces exercices sont prévus pour les étudiant·e·s ayant déjà réussi la feuille d’exercices « classiques ».
Exercice 6 : aire d’une ellipse#
Généralement, une ellipse a pour équation cartésienne :
où \(a\) et \(b\) sont deux paramètres de l’ellipse (grand coté et petit coté).
Question 1. Définir l’équation de l’ellipse comme une expression symbolique en les variables \(x, y, a, b\).
var('x y a b')
f = x**2/a**2 + y**2/b**2 - 1
Question 2. En effectuant les substitutions adéquates, vérifier que l’ellipse admet deux symétries axiales, selon l’axe des abscisses et selon l’axe des ordonnées.
bool(f(x=-x) == f)
bool(f(y=-y) == f)
True
Question 3. À partir des questions précédentes, et à l’aide des fonctions d’intégration de sagemath, calculer l’aire de l’ellipse en fonction de \(a\) et \(b\).
assume(b>0)
u = solve(f, x)[1]
u = u.right_hand_side()
print(u)
4 * integrate(integrate(1, x, 0, u), y, 0, b)
sqrt(b^2 - y^2)*a/b
pi*a*b
Exercice 7 : méthode des trapèzes#
Un trapèze rectangle a la forme suivante :
polygon([[0,0], [1,0], [1,3], [0,4]], axes=False)
Il est formé de deux côtés parallèles et de deux angles droits.
Question 1. Écrire une fonction aire_trapeze(base, cote1, cote2) qui calcule l’aire d’un trapèze dont la base (le côté ayant deux angles droits) a longueur base et dont les deux côtés parallèles ont longueur cote1 et cote2.
def aire_trapeze(base, cote1, cote2):
return base * (cote1 + cote2)/2
La méthode des trapèzes permet de calculer une valeur approchée d’une intégrale. Supposons que l’on souhaite calculer
L’idée est la suivante :
on fixe un paramètre entier \(n \ge 1\), destiné à devenir grand,
on découpe l’intervalle \([a,b]\) en \(n\) sous-intervalles réguliers \([t_i, t_{i+1}]\), autrement dit \(t_0 = a\) et \(t_{i+1} = t_i + (b-a)/n\)
on calcule l’aire \(A_i\) du trapèze dont les \(4\) sommets ont pour coordonnées dans le plan :
la valeur approchée de l’intégrale est alors la somme des aires des trapèze :
On estime alors que \(S_n \to I\) lorsque \(n \to \infty\).
var('x')
f = (1/10)*x**3 + (1/2)*x + 1
p = plot(f, color="red", xmin=-2, xmax=2)
for i in range(-2,2):
p += polygon([[i,0], [i+1,0], [i+1,f(x=i+1)], [i,f(x=i)]], color="lightskyblue")
p.show()
Question 2. Écrire une fonction integrale_approchee(f, a, b, n) qui exécute la méthode des trapèzes et retourne la valeur approchée \(S_n\).
def integrale_approchee(f, a, b, n):
s = 0
base = pi/n
for i in range(n):
s += aire_trapeze(base, f(x= a + i*(b-a)/n), f(x=a + (i+1)*(b-a)/n))
return s
On note \(E(n) = |I - S_n|\) l’erreur d’approximation de la méthode des trapèzes.
Question 3. Tracer la courbe de \(E(n)\) en fonction de \(n\), pour la fonction \(f = \sin(x)\) dans l’intervalle \([a, b] = [0, \pi]\).
var('x')
f = sin(x)
a, b = 0, pi
I = integrate(f, x, a, b)
E = [ [n, abs(I - integrale_approchee(f, a, b, n))] for n in range(10, 100)]
points(E)
Question 4. Écrire une fonction integrale_approchee_symbolique(f, a, b) qui retourne une expression symbolique représentant \(S_n\). On rappelle que pour déclarer une variable \(n\) destinée à être entière et strictement positive, il faut ajouter les commandes :
assume(n>0)
assume(n, 'integer')
après la déclaration de la variable.
var('n x i')
assume(n>0)
assume(n, 'integer')
def integrale_approchee_symbolique(f, a, b):
base = pi/n
h = (b-a)/n
# s = sum( aire_trapeze(base, f(x= a + i*h), f(x=a + (i+1)*h)), i, 0, n-1)
s = sum( pi*(f(x= a + i*h)+ f(x=a + (i+1)*h))/(2*n), i, 0, n-1)
return s
Question 5. À l’aide de la fonction taylor, donner un équivalent asymptotique en fonction de \(n\) de la vitesse de convergence de la méthode des trapèzes, pour la fonction \(f(x) = \sin(x)\) dans l’intervalle \([0, \pi]\).
Indication : en tapant taylor?, on cherchera comment utiliser cette fonction.
f = sin(x)
a, b = 0, pi
g = integrale_approchee_symbolique(f, 0, pi)
print(g.simplify_trig())
print(abs(taylor(g-2, n, +oo, 2)))
-pi*sin(pi/n)/(n*(cos(pi/n) - 1))
1/6*pi^2/n^2