summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-02-14 03:01:39 +0000
committerNorbert Preining <norbert@preining.info>2023-02-14 03:01:39 +0000
commitdc5dafdd7c01d469b556bc5bef745a6f1c84a5cb (patch)
treeae456a344d540979045234c3d72a7236777a7d99 /macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
parent88bea5fae4bc9a51d1cd6311662f9e001c3bd643 (diff)
CTAN sync 202302140301
Diffstat (limited to 'macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex')
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex338
1 files changed, 300 insertions, 38 deletions
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
index 1f7bc60547..a90b7486a9 100644
--- a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
@@ -3,8 +3,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[french,a4paper,11pt]{article}
-\def\TPversion{0.1.3}
-\def\TPdate{10 Février 2023}
+\def\TPversion{0.1.4}
+\def\TPdate{12 Février 2023}
\usepackage[executable=python.exe]{pyluatex}
\usepackage[table,svgnames]{xcolor}
\usepackage{amsmath,amssymb}
@@ -20,7 +20,7 @@
\usepackage{multicol}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
-\sisetup{locale=FR,output-decimal-marker={,}}
+\sisetup{locale=FR,output-decimal-marker={,},group-minimum-digits=4}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [ResolSysteme]}
@@ -36,12 +36,12 @@
\let\TikZ\tikzlogo
\newcommand\TableauDocumentation{%
\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
- {\huge \LaTeX} & & & & &\\
- & {\huge \hologo{pdfLaTeX}} & & & & \\
- & & {\huge \hologo{LuaLaTeX}} & & & \\
- & & & {\huge \TikZ} & & \\
- & & & & {\huge \TeXLive} & \\
- & & & & & {\huge \hologo{MiKTeX}} \\
+ {\LARGE \LaTeX} & & & & &\\
+ & {\LARGE \hologo{pdfLaTeX}} & & & & \\
+ & & {\LARGE \hologo{LuaLaTeX}} & & & \\
+ & & & {\LARGE \TikZ} & & \\
+ & & & & {\LARGE \TeXLive} & \\
+ & & & & & {\LARGE \hologo{MiKTeX}} \\
\end{tblr}
}
@@ -162,6 +162,10 @@
{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+\smallskip
+
+{$\blacktriangleright$~~Des commandes pour travailler sur des graphes probabilistes (2x2, 3x3 ou 4x4).}
+
\vspace{1cm}
\begin{center}
@@ -221,12 +225,13 @@
\subsection{Introduction}
\begin{noteblock}
-La package \textit{propose} des outils pour travailler sur des matrices ou des systèmes linéaires (de taille réduite !) :
+La package \textit{propose} des outils pour travailler sur des matrices ou des systèmes linéaires ou des graphes probabilistes (de tailles réduites !) :
\begin{itemize}
- \item en calculant des produits matriciels \textit{simples} (dimensions réduites) ;
- \item en affichant la \textbf{solution} (si elle existe) ;
- \item en affichant le \textbf{déterminant} et l'éventuelle \textbf{inverse} de la matrice des coefficients.
+ \item en calculant des \textbf{produits matriciels} \textit{simples} (dimensions réduites) ;
+ \item en affichant la \textbf{solution} (si elle existe) d'un système linéaire ;
+ \item en affichant le \textbf{déterminant} et l'éventuelle \textbf{inverse} de la matrice des coefficients ;
+ \item en déterminant un \textbf{état probabiliste} ou l'éventuel \textbf{état stable} d'un graphe probabiliste.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{noteblock}
@@ -235,7 +240,7 @@ La package \textit{propose} des outils pour travailler sur des matrices ou des s
À noter que les calculs -- en interne -- peuvent être effectués de deux manières :
\begin{itemize}
- \item via les packages \textsf{xint*} pour des formats \textbf{2x2} ou \textbf{3x3} ;
+ \item via les packages \textsf{xint*} pour des formats \textbf{2x2} ou \textbf{3x3} (et dans une certaine mesure pour des \textbf{4x4}) ;
\item via \textsf{python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2x2}, \textbf{3x3} ou \textbf{4x4}.
\end{itemize}
@@ -253,7 +258,7 @@ La méthode par \textsf{python} utilise quoi qu'il en soit le module \texttt{sym
\subsection{Packages utilisés, choix de formatage}
\begin{noteblock}
-Le package charge les packages suivantes :
+\textsf{ResolSysteme} charge les packages suivantes :
\begin{itemize}
\item \texttt{xintexpr}, \texttt{xinttools}, \texttt{xstring} et \texttt{listofitems} ;
@@ -302,8 +307,20 @@ Le package peut donc se charger de deux manières différentes, suivant si l'uti
\usepackage[pyluatex]{ResolSysteme}
\end{PresentationCode}
+\section{Comparaison avec d'autres solutions}
+
+\begin{noteblock}
+D'autres solutions existent pour faire du calcul matriciel, on peut pas exemple citer les excellents packages \textsf{calculator} ou \textsf{lualinalg} !
+
+\smallskip
+
+L'idée est ici de proposer une version, adaptée à des dimensions classiques, avec formatage des calculs, sous forme de fraction irréductible notamment. Les formatages étant effectués \textit{a posteriori}, j'ai choisi de limiter ce package à des formats de taille raisonnable (\textbf{1x2} à \textbf{4x4}).
+\end{noteblock}
+
\part{Historique}
+\verb|v0.1.4|~:~~~~Ajout de commandes pour du calcul matriciel sans pyton (de taille raisonnable) + commandes pour des graphes probabilistes.
+
\verb|v0.1.3|~:~~~~Ajout de commandes pour du calcul matriciel (de taille raisonnable) + inversion comportement des commandes étoilées.
\verb|v0.1.2|~:~~~~Ajout d'une commande d'affichage (formaté) d'une matrice 2x2, 3x3 ou 4x4.
@@ -314,7 +331,7 @@ Le package peut donc se charger de deux manières différentes, suivant si l'uti
\pagebreak
-\part{Commandes}
+\part{Commandes et calculs matriciels}
\section{Une commande interne : écriture sous forme d'une fraction}
@@ -369,7 +386,7 @@ Concernant cette commande, qui est dans un bloc \texttt{ensuremath} :
\subsection{Interaction avec les commandes \og matricielles \fg, limitations}
\begin{warningblock}
-En \textit{interne}, le formatage des résultats est géré par cette commande, et les options disponibles existent donc de la même manière pour les commandes liées aux systèmes linéaires.
+En \textit{interne}, le formatage des résultats est donc géré par cette commande, et les options disponibles existent donc de la même manière pour les commandes liées aux systèmes linéaires et aux calculs matriciels.
\smallskip
@@ -382,16 +399,16 @@ Les \textit{transformations} en fraction devraient pouvoir fonctionner avec des
\pagebreak
-\section{Affichage d'une matrice}
+\section{Affichage d'une matrice carrée}
\subsection{La commande}
\begin{cautionblock}
-La première commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\texttt{python} est ici non nécessaire):
+Une commande (matricielle) est dédiée à l'affichage d'une matrice \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} (\textsf{python} est ici non nécessaire !) :
\begin{itemize}
\item en saisissant les coefficients via une syntaxe propre au package (l'affichage est géré en interne par \textsf{nicematrix}) ;
- \item en caclulant et convertissant éventuellement les coefficients sous forme de fraction (grâce à la commande précédente !).
+ \item en calculant et convertissant éventuellement les coefficients sous forme de fraction (grâce à la commande précédente !).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -417,7 +434,7 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
- \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}).
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}
@@ -453,8 +470,12 @@ L'idée est de proposer des commandes pour effectuer des calculs matriciels \tex
\item $(1\times3)\times(3\times3)$ ;
\item $(3\times3)\times(3\times3)$ ;
\item $(3\times3)\times(3\times1)$ ;
+ \item $(1\times4)\times(4\times1)$ ;
+ \item $(1\times4)\times(4\times4)$ ;
+ \item $(4\times4)\times(4\times4)$ ;
+ \item $(4\times4)\times(4\times1)$ ;
\end{itemize}
- \item le carré d'une matrice 2x2 ou 3x3 ;
+ \item le carré d'une matrice 2x2 ou 3x3 ou 4x4 ;
\item la puissance d'une matrice 2x2 ou 3x3 ou 4x4 (via \textsf{python}).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
@@ -463,14 +484,15 @@ L'idée est de proposer des commandes pour effectuer des calculs matriciels \tex
\begin{PresentationCode}{listing only}
%commandes disponible avec les deux versions, pyluatex ou non
\ProduitMatrices(*)[option de formatage]<options nicematrix>(matrice 1)(matrice 2)[Clé]
-\CarreMatrice(*)[option de formatage]<options nicematrix>(matrice)(-5,6 § 1,4)[Clé]
+\ProduitMatricesPY(*)[option de formatage]<options nicematrix>(matrice 1)(matrice 2)[Clé]
+\CarreMatrice(*)[option de formatage]<options nicematrix>(matrice)[Clé]
%commande disponible avec l'option pyluatex
\MatricePuissancePY(*)[option de formatage]<options nicematrix>(matrice)(puissance)[Clé]
\end{PresentationCode}
\begin{warningblock}
-Dans le cas où le produit matriciel n'existe pas, ou ne rentre pas dans le cadre des cas possibles, rien ne sera affiché !
+Dans le cas où le produit matriciel n'existe pas (un test de dimensions est effectué), ou ne rentre pas dans le cadre des cas possibles, rien ne sera affiché !
\end{warningblock}
\subsection{Utilisation}
@@ -489,7 +511,7 @@ Concernant ces commandes, qui sont à insérer dans un environnement \textit{mat
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
- \item les arguments suivants, \textit{obligatoires} et entre \textsf{(...)}, sont quant à eux, les matrices données par leurs coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ou la matrice et la puissance ;
+ \item les arguments suivants, \textit{obligatoires} et entre \textsf{(...)}, sont quant à eux, les matrices données par leurs coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}) ou la matrice et la puissance ;
\item le dernier argument, \textit{optionnel} et entre \textsf{[...]} propose l'unique \frquote{clé} \Cle{Aff} pour afficher le calcul avant le résultat.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
@@ -504,6 +526,17 @@ $\ProduitMatrices[dec](0.5,0.3,0.2)(0.75,0.1,0.15 § 0.4,0.4,0.2 § 0.6,0.1,0.3)
\end{PresentationCode}
\begin{PresentationCode}{}
+$\ProduitMatrices(1,1,1,5 § 2,1,5,6 § 0,5,-6,0 § 1,-5,4,2)(1 § 2 § 3 § 4)[Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+$\ProduitMatrices%
+ (1,1,1,5 § 2,1,5,6 § 0,5,-6,0 § 1,-5,4,2)%
+ (1,5,4,0 § 2,-1,-1,5 § 3,0,1,2, § 4,6,9,10)
+ [Aff]$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
$\CarreMatrice(-5,6 § 1,4)[Aff]$
\end{PresentationCode}
@@ -530,11 +563,10 @@ $\MatricePuissancePY(1,1,1,1 § 5,-2,1,5 § 0,5,2,-1 § 0,1,1,1)(5)[Aff]$
\subsection{Introduction}
\begin{cautionblock}
-La deuxième commande (matricielle) disponible est pour calculer le déterminant d'une matrice :
+Une commande est disponible pour calculer le déterminant d'une matrice :
\begin{itemize}
- \item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -562,7 +594,7 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
- \item le second argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{héritée} de \texttt{sympy}).
+ \item le second argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}).
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}
@@ -586,6 +618,11 @@ $\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § -1/3,4,-1 § -1,0,0)$.
\end{PresentationCode}
\begin{PresentationCode}{}
+Le dét. de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pNiceMatrix}$
+est $\det(A)=\DetMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
%version python
Le dé. de $A=\AffMatrice(1,2 § 3,4)$ est
$\det(A)=\DetMatricePY(1,2 § 3,4)$.
@@ -593,7 +630,8 @@ $\det(A)=\DetMatricePY(1,2 § 3,4)$.
\begin{PresentationCode}{}
Le dét. de $A=\AffMatrice[dec](-1,0.5 § 1/2,4)$ est
-$\det(A)=\DetMatricePY[d](-1,0.5 § 1/2,4)$.\end{PresentationCode}
+$\det(A)=\DetMatricePY[d](-1,0.5 § 1/2,4)$.
+\end{PresentationCode}
\begin{PresentationCode}{}
%version python
@@ -601,6 +639,12 @@ Le dét. de $A=\AffMatrice(-1,1/3,4 § 1/3,4,-1 § -1,0,0)$ est
$\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
\end{PresentationCode}
+\begin{PresentationCode}{}
+%version python
+Le dét. de $A=\AffMatrice(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$
+est $\det(A)=\DetMatricePY(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
+\end{PresentationCode}
+
\pagebreak
\section{Inverse d'une matrice}
@@ -608,11 +652,11 @@ $\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
\subsection{Introduction}
\begin{cautionblock}
-La troisième commande (matricielle) disponible est pour calculer l'éventuelle inverse d'une matrice :
+Une commande (matricielle) disponible est pour calculer l'éventuelle inverse d'une matrice :
\begin{itemize}
\item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour la version \textsf{python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -641,7 +685,7 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
- \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}) ;
\item le dernier argument, \textit{optionnel} et entre \textsf{[...]} propose l'unique \frquote{clé} \Cle{Aff} pour afficher le calcul avant le résultat.
\end{itemize}
À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
@@ -674,16 +718,120 @@ $A^{-1}=
\pagebreak
+\section{États avec un graphe probabiliste}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+\cmaj{0.1.4} Il existe des commandes pour travailler sur un graphe probabiliste (avec le package en version \textsf{python}) :
+
+\begin{itemize}
+ \item afficher un état probabiliste (\textbf{1x2} ou \textbf{1x3} ou \textbf{1x4}, version normale ou version \textsf{python}) ;
+ \item déterminer un état probabiliste à une certaine étape, uniquement en version \textsf{python}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique ou python
+\AffEtatProb[opt de formatage]<opts nicematrix>(matrice ligne)
+\EtatProbPY[opt de formatage]<opts nicematrix>(état init)(mat de trans)(étape)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant la commande d'affichage d'un état, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,...} (syntaxe \textit{inspirée} de \texttt{sympy}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{tipblock}
+Concernant la commande d'affichage d'un état à une étape donnée, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat \textsf{[dec] par défaut} :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,a13} (syntaxe \textit{inspirée} de \texttt{sympy}) ;
+ \item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice de transition donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}) ;
+ \item le cinquième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, le numéro de l'étape voulue
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{}
+État initial : $P_0 = \AffEtatProb[t](1/3,2/3)$.
+
+Matrice de transition :
+$M=\AffMatrice[dec](0.75,0.25 § 0.9,0.1)$
+
+État à l'instant 5 :
+$P_5 \approx \EtatProbPY[dec=3](1/3,2/3)%
+ (0.75,0.25 § 0.9,0.1)
+ (5)$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+État initial : $P_0 = \AffEtatProb[dec](0.33,0.52,0.15)$.
+
+Matrice de transition :
+$M=\AffMatrice[dec]%
+(0.1,0.2,0.7 § 0.25,0.25,0.5 § 0.15,0.75,0.1)$
+
+État à l'instant 7 :
+$P_7 \approx \EtatProbPY[dec=3]
+ (0.33,0.52,0.15)%
+ (0.1,0.2,0.7 § 0.25,0.25,0.5 § 0.15,0.75,0.1)
+ (7)$
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+État initial : $P_0 = \AffEtatProb[dec](0.33,0.52,0.15,0)$.
+
+Matrice de transition :
+$M=\AffMatrice[dec]%
+(0.1,0.2,0.3,0.4 § 0.25,0.25,0.25,0.25 § 0.15,0.15,0.2,0.5 § 0.3,0.3,0.2,0.2)$
+
+État à l'instant 4 :
+$P_4 \approx \EtatProbPY[dec=3]
+ (0.33,0.52,0.15,0)%
+ (0.1,0.2,0.3,0.4 § 0.25,0.25,0.25,0.25 § 0.15,0.15,0.2,0.5 § 0.3,0.3,0.2,0.2)%
+ (4)$
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Résolution de systèmes}
+
\section{Résolution d'un système linéaire}
\subsection{Introduction}
\begin{cautionblock}
-La deuxième commande (matricielle) disponible est pour déterminer l'éventuelle solution d'un système linéaire qui s'écrit matriciellement $A\times X=B$:
+Il existe une commande (matricielle) pour déterminer l'éventuelle solution d'un système linéaire qui s'écrit matriciellement $A\times X=B$:
\begin{itemize}
\item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
- \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package en version \textsf{python}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}
@@ -712,8 +860,8 @@ Concernant cette commande, qui est à insérer dans un environnement \textit{mat
\item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
\end{itemize}
\item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
- \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $A$ donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
- \item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $B$ donnée par ses coefficients \textsf{b11,b21,...} (syntaxe héritée de \texttt{sympy}) ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $A$ donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}) ;
+ \item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $B$ donnée par ses coefficients \textsf{b11,b21,...} (syntaxe \textit{inspirée} de \texttt{sympy}) ;
\item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à la \textit{clé} \Cle{Matrice} -- de présenter le vecteur solution.
\end{itemize}
À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
@@ -750,12 +898,95 @@ La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
\pagebreak
+\section{Recherche d'un état stable (graphe probabiliste)}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+\cmaj{0.1.4} Il existe une commande (matricielle) pour déterminer l'éventuel état stable d'un graphe probabiliste :
+
+\begin{itemize}
+ \item \textbf{2x2} pour le package \textit{classique} ;
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package en version \textsf{python}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\EtatStable[opt de formatage]<opts nicematrix>(matriceA)
+
+%version python
+\EtatStablePY[opt de formatage]<opts nicematrix>(matriceA)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{inspirée} de \texttt{sympy}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+L'état stable du gr. prob. de matrice
+$M=\AffMatrice[dec](0.72,0.28 § 0.12,0.88)$
+
+est $\Pi = \EtatStable[d](0.72,0.28 § 0.12,0.88)$
+ou $\Pi = \EtatStable[dec](0.72,0.28 § 0.12,0.88)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'état stable du gr. prob. de matrice
+$M=\AffMatrice[dec](0.72,0.28 § 0.12,0.88)$
+
+est $\Pi = \EtatStablePY[d](0.72,0.28 § 0.12,0.88)$
+ou $\Pi = \EtatStablePY[dec](0.72,0.28 § 0.12,0.88)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'état stable du gr. prob. de matrice
+$M=\AffMatrice[dec](0.9,0.03,0.07 § 0.30,0.43,0.27 § 0.14,0.07,0.79)$
+
+est $\Pi = \EtatStablePY[d](0.9,0.03,0.07 § 0.30,0.43,0.27 § 0.14,0.07,0.79)$
+ou $\Pi = \EtatStablePY[dec](0.9,0.03,0.07 § 0.30,0.43,0.27 § 0.14,0.07,0.79)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'état stable du gr. prob. de matrice
+$M=\AffMatrice[dec]%
+ (0.1,0.2,0.3,0.4 § 0.25,0.25,0.25,0.25 § 0.15,0.15,0.2,0.5 § 0.3,0.3,0.2,0.2)$
+
+est $\Pi \approx
+\EtatStablePY[dec=5]%
+(0.1,0.2,0.3,0.4 § 0.25,0.25,0.25,0.25 § 0.15,0.15,0.2,0.5 § 0.3,0.3,0.2,0.2)$.
+\end{PresentationCode}
+
+
+\pagebreak
+
\part{Fonctions python utilisées}
\begin{cautionblock}
Les fonctions utilisées par les packages \textsf{pyluatex} ou \textsf{pythontex} sont données ci-dessous.
-Elles sont accessibles en \textit{natif} une fois l'option \textsf{lua} activée, grâce notamment à la macro \texttt{\textbackslash py}.
+Elles sont accessibles en \textit{natif} une fois l'option \textsf{pyluatex} activée, grâce notamment à la macro \texttt{\textbackslash py}.
\end{cautionblock}
\begin{PresentationCodePython}{listing only}
@@ -836,4 +1067,35 @@ def puissance_matrice_DD(a,b,c,d,puiss) :
return PuissMatTmp
\end{PresentationCodePython}
+\begin{PresentationCodePython}{listing only}
+def etat_prob_QQ(AA,BB,CC,DD,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,puiss) :
+ MatTmpInit = sy.Matrix(([AA,BB,CC,DD])).T
+ MatTmpTrans = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ EtatProbRes = MatTmpInit * MatTmpTrans**puiss
+ return EtatProbRes
+
+def etat_prob_TT(AA,BB,CC,a,b,c,d,e,f,g,h,i,puiss) :
+ MatTmpInit = sy.Matrix(([AA,BB,CC])).T
+ MatTmpTrans = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ EtatProbRes = MatTmpInit * MatTmpTrans**puiss
+ return EtatProbRes
+
+def etat_prob_DD(AA,BB,a,b,c,d,puiss) :
+ MatTmpInit = sy.Matrix(([AA,BB])).T
+ MatTmpTrans = sy.Matrix(([a,b],[c,d]))
+ EtatProbRes = MatTmpInit * MatTmpTrans**puiss
+ return EtatProbRes
+\end{PresentationCodePython}
+
+\begin{PresentationCodePython}{listing only}
+def resol_etat_stable_TT(a,b,c,d,e,f,g,h,i) :
+ solution=sy.solve([(a-1)*x+d*y+g*z,b*x+(e-1)*y+h*z,c*x+f*y+(i-1)*z,x+y+z-1],[x,y,z])
+ return solution
+
+def resol_etat_stable_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+ solution=sy.solve([(a-1)*x+e*y+i*z+m*t,b*x+(f-1)*y+j*z+n*t,
+ c*x+g*y+(k-1)*z+o*t,d*x+h*y+l*z+(p-1)*t,x+y+z+t-1],[x,y,z,t])
+ return solution
+\end{PresentationCodePython}
+
\end{document} \ No newline at end of file