Commit 128076b3 authored by Louis's avatar Louis
Browse files

Nouvel exercice : Résolution de systèmes utilisant les matrices

parent a1eb4a2d
......@@ -1193,6 +1193,12 @@ Jinja2
>>> facteur(2, court="p*x")
'\\numprint{2}x'
* Affichage de matrices
.. doctest:: jinja2
>>> matrice([[1, 2], [3, 4]])
u'\\begin{pmatrix}\\numprint{1} & \\numprint{2}\\\\\\numprint{3} & \\numprint{4}\\\\\\end{pmatrix}'
.. TODO::
Liste des fichiers dans lesquels aller chercher des classes et fonctions à documenter.
......
......@@ -13,6 +13,7 @@
"EtatStableSysteme2": "c28bc307317dca72f2c4bad4d1f134ba",
"Fd1Tangentes": "10ed3a781b3ee3ee8480ed73db2e90c9",
"FractionPartage": "d798dc7ffae542cb6881fd5da25958bb",
"InterpolationMatrices": "2a209226153e27a847a9ecbf3ee7b223",
"MesureAngles": "d5422b7c1b3a0820ab656ac4dc5dba8b",
"Operations": "e6fa199addd2b8b0805dc02079628521",
"Perpendiculaires": "80dc4d19e3f46d4b2e420dfbea25fa05",
......
\begin{enumerate}
\item
\begin{enumerate}
\item
\begin{itemize}
\item Puisque $A( (( X[0]|facteur )) ; (( Y[0]|facteur )) )$ est sur la courbe de $f$, alors $f( (( X[0]|facteur )) )=(( Y[0]|facteur ))$, soit
$a \times (( X[0]|facteur ))^2+b\times (( X[0]|facteur ))+c=(( Y[0]|facteur ))$,
c'est-à-dire $(( (X[0]**2)|facteur ))a + (( X[0]|facteur ))b + c = (( Y[0]|facteur ))$.
\item De même, puisque $B( (( X[1]|facteur )) ; (( Y[1]|facteur )) )$ est sur la courbe de $f$, alors $f( (( X[1]|facteur )) )=(( Y[1]|facteur ))$, soit
$a \times (( X[1]|facteur ))^2+b\times (( X[1]|facteur ))+c=(( Y[1]|facteur ))$,
c'est-à-dire $(( (X[1]**2)|facteur ))a + (( X[1]|facteur ))b + c = (( Y[1]|facteur ))$.
\item Enfin, puisque $C( (( X[2]|facteur )) ; (( Y[2]|facteur )) )$ est sur la courbe de $f$, alors $f( (( X[2]|facteur )) )=(( Y[2]|facteur ))$, soit
$a \times (( X[2]|facteur ))^2+b\times (( X[2]|facteur ))+c=(( Y[2]|facteur ))$,
c'est-à-dire $(( (X[2]**2)|facteur ))a + (( X[2]|facteur ))b + c = (( Y[2]|facteur ))$.
\end{itemize}
On en déduit le système suivant :
\[ \left\{\begin{array}{rcl}
(( (X[0]**2)|facteur ))a + (( X[0]|facteur ))b + c &=& (( Y[0]|facteur )) \\
(( (X[1]**2)|facteur ))a + (( X[1]|facteur ))b + c &=& (( Y[1]|facteur )) \\
(( (X[2]**2)|facteur ))a + (( X[2]|facteur ))b + c &=& (( Y[2]|facteur )) \\
\end{array}\right.\]
\item
\begin{align*}
\left\{\begin{array}{rcl}
(( (X[0]**2)|facteur ))a + (( X[0]|facteur ))b + c &=& (( Y[0]|facteur )) \\
(( (X[1]**2)|facteur ))a + (( X[1]|facteur ))b + c &=& (( Y[1]|facteur )) \\
(( (X[2]**2)|facteur ))a + (( X[2]|facteur ))b + c &=& (( Y[2]|facteur )) \\
\end{array}\right.
&\iff
\begin{pmatrix}
(( (X[0]**2)|facteur ))a + (( X[0]|facteur ))b + c \\
(( (X[1]**2)|facteur ))a + (( X[1]|facteur ))b + c \\
(( (X[2]**2)|facteur ))a + (( X[2]|facteur ))b + c \\
\end{pmatrix} = (( Y|zip|matrice ))\\
&\iff
(( M|matrice)) \times (( [["a"], ["b"], ["c"]]|matrice )) = (( Y|zip|matrice )) \\
&\iff M X=R
\end{align*}
Avec : $M= (( M|matrice ))$, $X= (( [["a"], ["b"], ["c"]]|matrice ))$ et $R= (( Y|zip|matrice ))$.
\end{enumerate}
\item
Comme $M$ est inversible, et que $MX = R$, alors $X = M^{-1}\times R$. À la calculatrice, on obtient
$M^{-1}\times R=(( M|matrice ))^{-1}\times ((Y|zip|matrice)) = (( A|zip|matrice ))$.
Ainsi, $a=(( A[0]|facteur ))$, $b=(( A[1]|facteur ))$, et $c=(( A[2]|facteur ))$.
\item
En utilisant les valeurs de $a$, $b$, et $c$ calculées précédemment, nous connaissons l'expression de la fonction : $f(x) = (( A[0]|facteur ))x^2 + (( A[1]|facteur))x + (( A[2]|facteur ))$.
Nous pouvons maintenant calculer l'image de $(( x|facteur ))$ par cette fonction :
\begin{align*}
f( (( x|facteur )) )
&= (( A[0]|facteur )) \times (( x|facteur ))^2 + (( A[1]|facteur )) \times (( x|facteur)) + (( A[2]|facteur ))\\
&= (( (A[0]*x**2+A[1]*x+A[2])|facteur ))
\end{align*}
Donc $f( (( x|facteur )) ) = (( (A[0]*x**2+A[1]*x+A[2])|facteur ))$.
\end{enumerate}
Dans un repère orthonormé, on cherche à déterminer l'équation d'une fonction dont la courbe passe par les points
$A( (( X[0]|facteur )) ; (( Y[0]|facteur )) )$,
$B( (( X[1]|facteur )) ; (( Y[1]|facteur )) )$ et
$C( (( X[2]|facteur )) ; (( Y[2]|facteur )) )$.
On cherche un trinôme du second degré, c'est-à-dire une fonction $f$ définie sur $]-\infty ; +\infty[$ par $f(x) = ax^2 + bx + c$$a$, $b$ et $c$ sont trois nombres réels, que l'on cherche à déterminer.
\begin{enumerate}
\item
\begin{enumerate}
\item À partir des données de l'énoncé, écrire un système d'équations traduisant cette situation.
\item En déduire que le système précédent est équivalent à : $MX = R$ avec
$M = (( M|matrice ))$, $X= (( [["a"], ["b"], ["c"]]|matrice ))$ et $R$ une matrice colonne que l'on précisera.
\end{enumerate}
\end{enumerate}
\begin{enumerate}
\setcounter{enumi}{1}
\item On admet que la matrice $M$ est inversible.
Déterminer les valeurs des cœfficients $a$, $b$ et $c$, en détaillant les calculs.
\item Quelle est la valeur de $f( (( x|facteur )) )$ ?
\end{enumerate}
\begin{enumerate}
\item
\begin{enumerate}
\item
\begin{itemize}
\item Puisque $A( \numprint{4} ; \numprint{-75} )$ est sur la courbe de $f$, alors $f( \numprint{4} )=\numprint{-75}$, soit
$a \times \numprint{4}^2+b\times \numprint{4}+c=\numprint{-75}$,
c'est-à-dire $\numprint{16}a + \numprint{4}b + c = \numprint{-75}$.
\item De même, puisque $B( \numprint{5} ; \numprint{-126} )$ est sur la courbe de $f$, alors $f( \numprint{5} )=\numprint{-126}$, soit
$a \times \numprint{5}^2+b\times \numprint{5}+c=\numprint{-126}$,
c'est-à-dire $\numprint{25}a + \numprint{5}b + c = \numprint{-126}$.
\item Enfin, puisque $C( \numprint{6} ; \numprint{-191} )$ est sur la courbe de $f$, alors $f( \numprint{6} )=\numprint{-191}$, soit
$a \times \numprint{6}^2+b\times \numprint{6}+c=\numprint{-191}$,
c'est-à-dire $\numprint{36}a + \numprint{6}b + c = \numprint{-191}$.
\end{itemize}
On en déduit le système suivant :
\[ \left\{\begin{array}{rcl}
\numprint{16}a + \numprint{4}b + c &=& \numprint{-75} \\
\numprint{25}a + \numprint{5}b + c &=& \numprint{-126} \\
\numprint{36}a + \numprint{6}b + c &=& \numprint{-191} \\
\end{array}\right.\]
\item
\begin{align*}
\left\{\begin{array}{rcl}
\numprint{16}a + \numprint{4}b + c &=& \numprint{-75} \\
\numprint{25}a + \numprint{5}b + c &=& \numprint{-126} \\
\numprint{36}a + \numprint{6}b + c &=& \numprint{-191} \\
\end{array}\right.
&\iff
\begin{pmatrix}
\numprint{16}a + \numprint{4}b + c \\
\numprint{25}a + \numprint{5}b + c \\
\numprint{36}a + \numprint{6}b + c \\
\end{pmatrix} = \begin{pmatrix}\numprint{-75}\\\numprint{-126}\\\numprint{-191}\\\end{pmatrix}\\
&\iff
\begin{pmatrix}\numprint{16} & \numprint{4} & \numprint{1}\\\numprint{25} & \numprint{5} & \numprint{1}\\\numprint{36} & \numprint{6} & \numprint{1}\\\end{pmatrix} \times \begin{pmatrix}a\\b\\c\\\end{pmatrix} = \begin{pmatrix}\numprint{-75}\\\numprint{-126}\\\numprint{-191}\\\end{pmatrix} \\
&\iff M X=R
\end{align*}
Avec : $M= \begin{pmatrix}\numprint{16} & \numprint{4} & \numprint{1}\\\numprint{25} & \numprint{5} & \numprint{1}\\\numprint{36} & \numprint{6} & \numprint{1}\\\end{pmatrix}$, $X= \begin{pmatrix}a\\b\\c\\\end{pmatrix}$ et $R= \begin{pmatrix}\numprint{-75}\\\numprint{-126}\\\numprint{-191}\\\end{pmatrix}$.
\end{enumerate}
\item
Comme $M$ est inversible, et que $MX = R$, alors $X = M^{-1}\times R$. À la calculatrice, on obtient
$M^{-1}\times R=\begin{pmatrix}\numprint{16} & \numprint{4} & \numprint{1}\\\numprint{25} & \numprint{5} & \numprint{1}\\\numprint{36} & \numprint{6} & \numprint{1}\\\end{pmatrix}^{-1}\times \begin{pmatrix}\numprint{-75}\\\numprint{-126}\\\numprint{-191}\\\end{pmatrix} = \begin{pmatrix}\numprint{-7}\\\numprint{12}\\\numprint{-11}\\\end{pmatrix}$.
Ainsi, $a=\numprint{-7}$, $b=\numprint{12}$, et $c=\numprint{-11}$.
\item
En utilisant les valeurs de $a$, $b$, et $c$ calculées précédemment, nous connaissons l'expression de la fonction : $f(x) = \numprint{-7}x^2 + \numprint{12}x + \numprint{-11}$.
Nous pouvons maintenant calculer l'image de $\numprint{17}$ par cette fonction :
\begin{align*}
f( \numprint{17} )
&= \numprint{-7} \times \numprint{17}^2 + \numprint{12} \times \numprint{17} + \numprint{-11}\\
&= \numprint{-1830}
\end{align*}
Donc $f( \numprint{17} ) = \numprint{-1830}$.
\end{enumerate}
Dans un repère orthonormé, on cherche à déterminer l'équation d'une fonction dont la courbe passe par les points
$A( \numprint{4} ; \numprint{-75} )$,
$B( \numprint{5} ; \numprint{-126} )$ et
$C( \numprint{6} ; \numprint{-191} )$.
On cherche un trinôme du second degré, c'est-à-dire une fonction $f$ définie sur $]-\infty ; +\infty[$ par $f(x) = ax^2 + bx + c$ où $a$, $b$ et $c$ sont trois nombres réels, que l'on cherche à déterminer.
\begin{enumerate}
\item
\begin{enumerate}
\item À partir des données de l'énoncé, écrire un système d'équations traduisant cette situation.
\item En déduire que le système précédent est équivalent à : $MX = R$ avec
$M = \begin{pmatrix}\numprint{16} & \numprint{4} & \numprint{1}\\\numprint{25} & \numprint{5} & \numprint{1}\\\numprint{36} & \numprint{6} & \numprint{1}\\\end{pmatrix}$, $X= \begin{pmatrix}a\\b\\c\\\end{pmatrix}$ et $R$ une matrice colonne que l'on précisera.
\end{enumerate}
\end{enumerate}
\begin{enumerate}
\setcounter{enumi}{1}
\item On admet que la matrice $M$ est inversible.
Déterminer les valeurs des cœfficients $a$, $b$ et $c$, en détaillant les calculs.
\item Quelle est la valeur de $f( \numprint{17} )$ ?
\end{enumerate}
\ No newline at end of file
......@@ -26,7 +26,7 @@
import random
from pyromaths.ex import Jinja2Exercice
from pyromaths.outils.jinja2 import facteur
from pyromaths.outils.jinja2 import facteur, matrice
# Liste des coefficients de la diagonale de la matrice de transition qui
# donnent des états stables dont la valeur exacte a au plus trois décimales.
......@@ -78,3 +78,59 @@ class EtatStableSysteme2(Jinja2Exercice):
'facteur': facteur,
})
return environment
class InterpolationMatrices(Jinja2Exercice):
# Plus ou moins inspiré du sujet de bac ES Amérique du Nord, juin 2015.
description = u"Interpolation polynomiale en utilisant des matrices"
level = u"0.TermES"
def __init__(self):
super(InterpolationMatrices, self).__init__()
X = [None, None, None]
while len(set(X)) != 3:
X = sorted([
random.randint(2, 9),
random.randint(2, 9),
random.randint(2, 9),
])
a = b = c = 0
while len(set([a, b, c])) != 3:
a = random.choice([1, -1]) * random.randint(2, 19)
b = random.choice([1, -1]) * random.randint(2, 19)
c = random.choice([1, -1]) * random.randint(2, 19)
if random.randint(0, 1) == 1:
a = float(a) / 10
b = float(b) / 10
c = float(c) / 10
M = [
[X[0]**2, X[0], 1],
[X[1]**2, X[1], 1],
[X[2]**2, X[2], 1],
]
Y = [
a * X[0]**2 + b * X[0] + c,
a * X[1]**2 + b * X[1] + c,
a * X[2]**2 + b * X[2] + c,
]
self.context = {
"X": X,
"Y": Y,
"A": [a, b, c],
"M": M,
"x": random.randint(10, 19),
}
@property
def environment(self):
environment = super(InterpolationMatrices, self).environment
environment.filters.update({
'facteur': facteur,
'matrice': matrice,
'zip': zip,
})
return environment
......@@ -25,6 +25,7 @@
"""
import math
import numbers
def facteur(nombre, court="",
parentheses=False,
......@@ -261,3 +262,33 @@ def facteur(nombre, court="",
absolu=strabsolu,
variable=variable,
)
def iter_facteurs(liste, short):
"""Applique :func:`facteur` à une liste de nombres.
- Les éléments peuvent être des nombres, ou pas (auquel cas la fonction :func:`str` est appliquée).
- L'argument ``short`` est transmis à :func:`facteur`.
"""
for element in liste:
if isinstance(element, numbers.Number):
yield facteur(element, short)
else:
yield str(element)
def matrice(listes, short=""):
r"""Renvoit le code LaTeX d'une matrice.
- La matrice est sous la forme d'une liste de lignes (où chaque ligne est une liste de coefficients).
- L'argument ``short`` est transmis à :func:`facteur`.
>>> matrice([[1, 2], [3, 4]])
u'\\begin{pmatrix}\\numprint{1} & \\numprint{2}\\\\\\numprint{3} & \\numprint{4}\\\\\\end{pmatrix}'
"""
text = u""
text += r"\begin{pmatrix}"
for ligne in listes:
text += " & ".join(iter_facteurs(ligne, short))
text += r"\\"
text += r"\end{pmatrix}"
return text
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment