Commit b39a7d7f authored by Louis's avatar Louis
Browse files

[exercice] Nouvel exercice : Déterminer un état stable

parent 6453ac68
\exercice*
Puisque $P$ est l'état stable, alors $P=P\times M$.
\begin{align*}
P\times M &= \begin{pmatrix}x&y\end{pmatrix}\times
\begin{pmatrix}
(( a | decimal )) & (( (1-a) | decimal )) \\
(( (1-b) | decimal )) & (( b | decimal )) \\
\end{pmatrix}\\
&= \begin{pmatrix}
(( a | decimal )) x + (( (1-b) | decimal )) y & (( (1-a) | decimal )) x + (( b | decimal )) y
\end{pmatrix}
\end{align*}
Or $\begin{pmatrix}x&y\end{pmatrix}=P=P\times M$, donc les coefficients des matrices sont deux à deux égaux, donc $x=(( a | decimal )) x + (( (1-b) | decimal )) y$.
D'autre part, puisque $P$ est un état probabiliste, alors $x+y=1$, donc $y=1-x$. Donc, en remplaçant $y$ par $1-x$ dans l'équation précédente, on obtient :
\begin{align*}
x &= (( a | decimal )) x + (( (1-b) | decimal )) (1-x) \\
x &= (( a | decimal )) x + (( (1-b) | decimal )) - (( (1-b) | decimal ))x\\
x-(( a | decimal )) x +(( (1-b) | decimal ))x &= (( (1-b) | decimal ))\\
(1-(( a | decimal ))+(( (1-b) | decimal )))x &= (( (1-b) | decimal ))\\
(( (2-a-b) | decimal )) x &= (( (1-b) | decimal ))\\
x &= \frac{(( (1-b) | decimal ))}{(( (2-a-b) | decimal ))}\\
x &= (( ((1-b)/(2-a-b)) | decimal ))
\end{align*}
Enfin, puisque $y=1-x$, alors $y=1-(( ((1-b)/(2-a-b)) | decimal ))=(( ((1-a)/(2-a-b)) | decimal ))$.
L'unique état stable de ce graphe est donc $\begin{pmatrix}
(( ((1-b)/(2-a-b)) | decimal )) &
(( ((1-a)/(2-a-b)) | decimal ))
\end{pmatrix}$.
\exercice
On considère un graphe probabiliste d'ordre 2, dont la matrice de transition est :
\[
M=\begin{pmatrix}
(( a | decimal )) & (( (1-a) | decimal )) \\
(( (1-b) | decimal )) & (( b | decimal )) \\
\end{pmatrix}
\]
On note $P=\begin{pmatrix}x&y\end{pmatrix}$ l'état stable de ce graphe. Déterminer $x$ et $y$.
\exercice*
Puisque $P$ est l'état stable, alors $P=P\times M$.
\begin{align*}
P\times M &= \begin{pmatrix}x&y\end{pmatrix}\times
\begin{pmatrix}
0,95 & 0,05 \\
0,45 & 0,55 \\
\end{pmatrix}\\
&= \begin{pmatrix}
0,95 x + 0,45 y & 0,05 x + 0,55 y
\end{pmatrix}
\end{align*}
Or $\begin{pmatrix}x&y\end{pmatrix}=P=P\times M$, donc les coefficients des matrices sont deux à deux égaux, donc $x=0,95 x + 0,45 y$.
D'autre part, puisque $P$ est un état probabiliste, alors $x+y=1$, donc $y=1-x$. Donc, en remplaçant $y$ par $1-x$ dans l'équation précédente, on obtient :
\begin{align*}
x &= 0,95 x + 0,45 (1-x) \\
x &= 0,95 x + 0,45 - 0,45x\\
x-0,95 x +0,45x &= 0,45\\
(1-0,95+0,45)x &= 0,45\\
0,5 x &= 0,45\\
x &= \frac{0,45}{0,5}\\
x &= 0,9
\end{align*}
Enfin, puisque $y=1-x$, alors $y=1-0,9=0,1$.
L'unique état stable de ce graphe est donc $\begin{pmatrix}
0,9 &
0,1
\end{pmatrix}$.
\ No newline at end of file
\exercice
On considère un graphe probabiliste d'ordre 2, dont la matrice de transition est :
\[
M=\begin{pmatrix}
0,95 & 0,05 \\
0,45 & 0,55 \\
\end{pmatrix}
\]
On note $P=\begin{pmatrix}x&y\end{pmatrix}$ l'état stable de ce graphe. Déterminer $x$ et $y$.
\ No newline at end of file
......@@ -58,6 +58,8 @@ sys.path[0] = realpath(_path)
from pyromaths.Values import VERSION
print "Version ", VERSION
COMMON_INSTALL_REQUIRES = ['jinja2']
def _unix_opt():
'''UNIX/Linux: generate Python eggs and RPM packages.'''
return dict(
......@@ -73,7 +75,7 @@ def _unix_opt():
# ('share/pyromaths/packages', glob('data/packages/*'))
] + \
find_data_files('data/ex','share/pyromaths/ex/',['img/*.png']),
install_requires = ["lxml>=2.2.2"],
install_requires = COMMON_INSTALL_REQUIRES + ["lxml>=2.2.2"],
)
def _mac_opt():
......@@ -126,8 +128,9 @@ def _mac_opt():
'data/images/whatsthis.png']),
('data/templates', glob('data/templates/*.tex')),
# ('data/packages', glob('data/packages/*')),
] + find_data_files('data/ex','data/ex/',['img/*.png']),
] + find_data_files('data/ex','data/ex/',['img/*.png', 'templates/*.tex']),
setup_requires = ['py2app>=0.7.3', 'lxml>=2.2.2'],
install_requires = COMMON_INSTALL_REQUIRES,
options = {'py2app': py2app},
)
......@@ -161,6 +164,7 @@ Name: "{commondesktop}\Pyromaths"; Filename: "{app}\pyromaths.exe"
)
],
setup_requires = ['py2exe'],
install_requires = COMMON_INSTALL_REQUIRES,
options = dict(py2exe=dict(compressed = True,
optimize = 2,
bundle_files = 3,
......
......@@ -7,6 +7,10 @@ import pkgutil
import types
import sys
import jinja2
from pyromaths import Values
class Exercise(object):
''' Base class for all exercise types. '''
......@@ -176,3 +180,56 @@ def load_levels(pkg=None, recursive=True):
levels[lvl] = sublevels[lvl]
return levels
################################################################################
# Exercices créés à partir de templates Jinja2
TEMPLATEDIR = os.path.join(
Values.data_dir(),
"ex",
"templates",
)
class Jinja2Exercice(TexExercise):
"""Exercice utilisant un template jinja2."""
def __init__(self):
super(Jinja2Exercice, self).__init__()
self.context = {}
@property
def environment(self):
"""Création de l'environnement Jinja2, duquel sera chargé le template."""
environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(TEMPLATEDIR)
)
environment.block_start_string = '(*'
environment.block_end_string = '*)'
environment.variable_start_string = '(('
environment.variable_end_string = '))'
environment.comment_start_string = '(% comment %)'
environment.comment_end_string = '(% endcomment %)'
environment.line_comment_prefix = '%!'
environment.trim_blocks = True
environment.lstrip_blocks = True
return environment
@property
def statement_name(self):
"""Nom du fichier de l'énoncé (sans le répertoire)."""
return os.path.join("{}-statement.tex".format(self.__class__.__name__))
@property
def answer_name(self):
"""Nom du fichier du corrigé (sans le répertoire)."""
return os.path.join("{}-answer.tex".format(self.__class__.__name__))
def tex_statement(self):
"""Génération de l'énoncé"""
return [self.environment.get_template(self.statement_name).render(self.context)]
def tex_answer(self):
"""Génération du corrigé"""
return [self.environment.get_template(self.answer_name).render(self.context)]
# -*- coding: utf-8 -*-
#
# Pyromaths
#
# Un programme en Python qui permet de créer des fiches d'exercices types de
# mathématiques niveau collège ainsi que leur corrigé en LaTeX.
#
# Copyright (C) 2018 -- Louis Paternault (spalax@gresille.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
"""Exercice de Terminale ES, spécialité : Déterminer un état stable en utilisant un système."""
import random
from pyromaths.outils.decimaux import decimaux
from pyromaths.ex import Jinja2Exercice
# 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.
CANDIDATS = [
[.45, .30],
[.50, .25],
[.55, .20],
[.55, .25],
[.60, .15],
[.65, .10],
[.70, .05],
[.70, .10],
[.70, .50],
[.70, .55],
[.75, .45],
[.80, .40],
[.80, .70],
[.85, .40],
[.85, .55],
[.85, .65],
[.85, .75],
[.90, .30],
[.95, .55],
[.95, .65],
[.95, .80],
[.95, .85],
]
class EtatStableSysteme2(Jinja2Exercice):
description = u"Recherche d'état stable (avec un système)"
level = u"0.TermES"
def __init__(self):
super(EtatStableSysteme2, self).__init__()
ab = random.choice(CANDIDATS)
random.shuffle(ab)
self.context = {
"a": ab[0],
"b": ab[1],
}
@property
def environment(self):
environment = super(EtatStableSysteme2, self).environment
environment.filters.update({
'decimal': decimaux,
})
return environment
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