Feuille d’exercices 9 – avancé

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 :

\[ \left(\frac{x}{a}\right)^2 + \left(\frac{y}{b}\right)^2 = 1 \]

\(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)
../_images/889abf1f65b3ca87703f2c3549af05ca45736183b3db3529bed83b0bbf424c83.png

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

\[ I = \int_a^b f(t) dt \]

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 :

\[ (t_i, 0), \quad (t_{i+1}, 0), \quad (t_{i+1}, f(t_{i+1})), \quad (t_i, f(t_i)) \]
  • la valeur approchée de l’intégrale est alors la somme des aires des trapèze :

\[ S_n = \sum_{i=0}^{n-1} A_i \]

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()
../_images/a086a65a3c814ea31df2fd2ba2711b10ba486ebd91c36c737fae06d8282f5dfc.png

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)
../_images/0c8d28f4ea6411cf6ab19fc51bfefb848a7cbd0197a52a8923ddcc68fddf7853.png

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