Adapt preamble

This commit is contained in:
Pierre-antoine Comby 2019-01-09 20:46:09 +01:00
parent e066a2653a
commit 38f2abe05b
6 changed files with 235 additions and 149 deletions

View file

@ -1,7 +1,6 @@
\documentclass[main.tex]{subfiles} \documentclass[main.tex]{subfiles}
\begin{document} \begin{document}
\section{Concept du modèle d'état} \section{Concept du modèle d'état}
\subsection{Définitions} \subsection{Définitions}
@ -385,6 +384,26 @@ De plus,
En pratique, soit $V\in \mathbb{K}^{n\times }$ inversible, tel que $V^{-1}AV = J$, $J\in \mathbb{K}^{n \times n}$ matrice de Jordan ou bien $J = \Lambda = \text{diag}(\lambda_1...\lambda_n), \lambda_i$ valeurs propres de A En pratique, soit $V\in \mathbb{K}^{n\times }$ inversible, tel que $V^{-1}AV = J$, $J\in \mathbb{K}^{n \times n}$ matrice de Jordan ou bien $J = \Lambda = \text{diag}(\lambda_1...\lambda_n), \lambda_i$ valeurs propres de A
\begin{thm}[Exponentielle d'un bloc de Jordan]
On note $J_p(\lambda) \in \K^{p\times p}$ le $p$-ième bloc de jordan $
\begin{bmatrix}
\lambda & 1& & \\
& \ddots & \ddots & \\
& & \lambda & 1
\end{bmatrix}$
On a :
\[
e^{J_p(\lambda)t} = e^{\lambda t}
\begin{bmatrix}
1 & t & \frac{t^2}{2} & \dots & \frac{t^p-1}{(p-1)!}&\frac{t^p}{p!} \\
& \ddots & \ddots & \ddots & \ddots &\frac{t^p-1}{(p-1)!}\\
& & \ddots & \ddots & \ddots & \vdots \\
& & & \ddots & \ddots & \frac{t^2}{2}\\
& & & & \ddots & t\\
& & & & & 1 \\
\end{bmatrix}
\]
\end{thm}
\begin{prop} \begin{prop}
\[A^k = V J^k V^{-1}\] ou bien si $J = \Lambda = \text{diag}(\lambda_1...\lambda_n)$, \[A^k = V \Lambda^k V^{-1} \] \[A^k = V J^k V^{-1}\] ou bien si $J = \Lambda = \text{diag}(\lambda_1...\lambda_n)$, \[A^k = V \Lambda^k V^{-1} \]
@ -392,12 +411,11 @@ En pratique, soit $V\in \mathbb{K}^{n\times }$ inversible, tel que $V^{-1}AV = J
\[ e^{tA} = e^{tVJV^{-1}} = V e^{tJ} V^{-1} \] \[ e^{tA} = e^{tVJV^{-1}} = V e^{tJ} V^{-1} \]
ou si $J = \Lambda = \text{diag}(\lambda_1...\lambda_n)$, ou si $J = \Lambda = \text{diag}(\lambda_1...\lambda_n)$,
\[ e^{tA} = V e^{t\Lambda}V^{-1} \] \[ e^{tA} = V e^{t\Lambda}V^{-1} \]
$\Lambda^k = \text{diag}(\lambda_i^k)$ $\Lambda^k = \text{diag}(\lambda_i^k)$
$e^{t\Lambda} = \text{diag}(e^{t\lambda_i})$ $e^{t\Lambda} = \text{diag}(e^{t\lambda_i})$
\end{prop} \end{prop}
\subsubsection{Cas analogique} \subsubsection{Cas analogique}
\begin{thm} \begin{thm}
La solutions de l'équation d'état est: La solutions de l'équation d'état est:
@ -452,6 +470,61 @@ k=1 & x_2 = & A_dx_1 + B_du_1 \\
\subsection{Modèle d'état pour quelques associations de systèmes (TD1)} \subsection{Modèle d'état pour quelques associations de systèmes (TD1)}
\newpage
\section{Stabilité}
\subsection{Concept de stabilité}
\emph{sur le poly}
On étudie la stabilité d'un système dynamique au sens de \textsc{Lyapunov}.
\begin{defin}
Un état d'équilibre du système autonome est un vecteur d'état, noté $x_e\in \K^n$ tel que
\[
A x_e =0
\]
\end{defin}
\begin{defin}
Un point d'équilibre $x_e,u_e$ est :
\begin{description}
\item[ - simplement stable] ~\\
si pour tout voisinage $V_1$ de $x_e$, il existe un voisinage $V_2$ tel que $\forall x_0 \in V_2, \forall t, x(t) \in V_1 $
\item[- asymptotiquement stable]~\\
Si il existe un voisinage $V_1$ de $x_e$ tel que $\forall x_0 \in V_1$, $x(t)\xrightarrow[t\to\infty]{} x_e$
\item[- globalement asymptotiquement stable] ~\\
si $\forall x_0$, $x(t)\xrightarrow[t\to\infty]{} x_e$.
\item[- instable] sinon
\end{description}
\end{defin}
\subsection{Caractérisation des différents type de stabilité}
Soit $A \in \K^{n\times n}$ une matrice d'évolution d'un système $(\Sigma)$, de valeurs propres $\lambda_1, ..., \lambda_r$ deux à deux disctintes et de multiplicité algébrique (ordre des racines du polynome annulateur, taille des sous-espace propres) respectives $m_1, ... ,m_r $. on note $\nu_1 ,...,\nu_r$ les multiplicité géométrique (taille des sous-espaces caractéristiques \footnote{$\forall k\ge \nu_i , (A-\lambda_iI_n)^k = 0$})
\begin{thm}[Stabilité analogique]
La stabilité de l'origine (apres translation d'état) est donnée par :
\begin{itemize}
\item si $\exists i $ tq $\Re(\lambda_i)>0 $ alors 0 est \textbf{instable}
\item sinon:
\begin{itemize}
\item si $\forall i , \Re(\lambda_i)<0$ alors 0 est \textbf{globalement asymptotiquement stable}
\item si $\exists j, \Re(\lambda_j) = 0 $ et $\nu_j>1$ alors 0 est \textbf{instable}
\item si $\forall j, \Re(\lambda_j) = 0 $ et $\nu_j=1$ alors 0 est \textbf{stable sans être asymptotiquement stable}
\end{itemize}
\end{itemize}
\end{thm}
\begin{thm}[Stabilité numérique]
La stabilité de l'origine (apres translation d'état) est donnée par :
\begin{itemize}
\item si $\exists i $ tq $|\lambda_i| > 1 $ alors 0 est \textbf{instable}
\item sinon:
\begin{itemize}
\item si $\forall i , |\lambda_i|<1$ alors 0 est \textbf{globalement asymptotiquement stable}
\item si $\exists j, |\lambda_j| = 1 $ et $\nu_j>1$ alors 0 est \textbf{instable}
\item si $\forall j, |\lambda_j| =1 $ et $\nu_j=1$ alors 0 est \textbf{stable sans être asymptotiquement stable}
\end{itemize}
\end{itemize}
\end{thm}
\section{Commandabilité et observabilité} \section{Commandabilité et observabilité}
Problème : existe-t-il une commande $u(t)$ permettant de passer d'un point de fonctionnement à $t=t_1$ à un autre à $t=t_2$ ? Problème : existe-t-il une commande $u(t)$ permettant de passer d'un point de fonctionnement à $t=t_1$ à un autre à $t=t_2$ ?
@ -673,7 +746,6 @@ De même :
\end{proof} \end{proof}
\section{Relation modèle d'état / fonction de transfert} \section{Relation modèle d'état / fonction de transfert}
\subsection{Modèle d'état vers fonction de transfert} \subsection{Modèle d'état vers fonction de transfert}
@ -721,43 +793,6 @@ Or, $P_A(p) = det(p1_n-A)$. $Adj(p1_n-A)\in\K^{n\times n}[X]$ Les éléments de
\emph{Voir polycopié} \emph{Voir polycopié}
\subsubsection*{Formes canoniques à matrice d'évolution compagnon}
\paragraph{Exemple :} $4y^{(3)}(t)-2y^{(1)}(t)+8y(t) = 2u^{(1)}(t)-u(t)$\\
On se ramène à une forme conforme au cours (coefficient de plus haut degré égal à 1) :
\[ y^{(3)}(t)-\frac{1}{2}y^{(1)}(t)+2y(t) = \frac{1}{2}u^{(1)}(t)-\frac{1}{4}u(t)\]
\begin{multicols}{2}
Forme compagnon horizontal de type I :
\[ A_c = \left[\begin{array}{ccc}
0 & 1 & 0 \\
0 & 0 & 1 \\
-2 & 1/2 & 0
\end{array} \right]
\quad
B_c = \left[\begin{array}{c} 0 \\ 0 \\1 \end{array} \right] \]
\[ C_c = [-1/4 \quad 1/2 \quad 0], \quad D=0\]
Forme compagnon horizontal de type II :
\[ A_c = \left[\begin{array}{ccc}
0 & 1/2 & -2 \\
1 & 0 & 0 \\
0 & 1 & 0
\end{array} \right]
\quad
B_c = \left[\begin{array}{c}1 \\ 0 \\0 \end{array} \right] \]
\[ C_c = [0 \quad 1/2 \quad -1/4] , \quad D=0\]
\end{multicols}
Forme compagnon vertical de type I :
\[ A_o = \left[\begin{array}{ccc}
0 & 1 & 0 \\
1/2 & 0 & 1 \\
-2 & 0 & 0
\end{array}\right]
\quad
B_o = \left[\begin{array}{c}-1/4 \\ 1/2 \\ 0 \end{array} \right] \]
\[ C_c = [ 1\quad 0 \quad 0] , \quad D=0\]
\subsubsection*{Forme modale (pôles simples)} \subsubsection*{Forme modale (pôles simples)}
\begin{align*} \begin{align*}
@ -780,8 +815,136 @@ y & = [1/\gamma_1 \quad 1/\gamma_2 \quad 1/\gamma_3]x_m+0, \quad \forall \gamma_
\end{align*} \end{align*}
\subsection{Changement de base vers une forme canonique} \subsection{Changement de base vers une forme canonique}
\subsubsection{Forme canonique de commandabilité}
\begin{defin}
Pour un système $(\Sigma)$ la forme canonique de commandabilité est :
\[ \begin{array}{ll}
A_c =
\begin{bmatrix}
0 & 1 & 0 & \dots & 0 \\
\vdots & \ddots & \ddots &\ddots & \vdots \\
\vdots & & \ddots &\ddots & 0 \\
0 & \cdots & \cdots &0 &1 \\
-a_0 &-a_1 & \cdots &-a_{n-2} &-a_{n-1} \\
\end{bmatrix}
& B_c =
\begin{bmatrix}
0 \\
\vdots \\
\vdots \\
0 \\
1
\end{bmatrix} \\
C_c =
\begin{bmatrix}
\quad b_0 & \quad b_1& \cdots & \quad b_{n-2} & \quad b_{n-1}
\end{bmatrix} &
D_c = D
\end{array}
\]
$A_c$ est une matrice compagnon horizontale de type I .
\end{defin}
\paragraph{Détermination de la matrice de passage}~\\
On cherche M tel que $M^{-1}AM = A_c $ et $ M^{-1}B = B_c$ . En décrivant $M$ par ses colonnes : $M =\vect{ m_1 & ... & m_n}$ on a :
\[
m_n = B
\]
et \[\left\{
\begin{array}{rl}
m_{n-1}-a_{n-1}B &= AB \\
m_{n-2}-a_{n-2}B &= Am_{n_1}\\
&\vdots\\
m_1- a_1 B &= A m_2\\
-a_0B &= Am_1
\end{array}\right.
\]
Soit encore :
\[
\begin{cases}
m_{n-1} &= (A+a_{n-1}I_n)B \\
m_{n-2} &= (A^2+a_{n-1}A +a_{n-2}I_n)B \\
&\vdots\\
m_{1} &= (A^{n-1}+a_{n-1}A^{n-2}+ ... + a_1A + a_0 I_n)B
\end{cases}
\]
\begin{prop}
La matrice $M$ est une matrice de changement de base vers la forme canonique de commandabilité si et seulement si:
\[
rg(M)) = rg(\vect{B & AB & \cdots & A^{n-1} &B}) =rg(\mathcal{C}(A,B) = n
\]
Cette matrice est donc inversible ssi le système est commandable.
\end{prop}
\subsubsection{Forme canonique d'observabilité}
\begin{defin}
Pour un système $(\Sigma)$ la forme canonique de commandabilité est :
\[ \begin{array}{ll}
A_c =
\begin{bmatrix}
-a_{n-1} & 1 & 0 & \dots & 0 \\
-a_{n-2} & 0 & \ddots &\ddots &\vdots \\
\vdots & \vdots & \ddots & 1& 0 \\
-a_{1} & 0 & \cdots &0 &1 \\
-a_0 & 0 & \cdots & \cdots & 0 \\
\end{bmatrix}
& B_c =
\begin{bmatrix}
b_{n-1} \\
b_{n-2} \\
\vdots \\
b_{1} \\
b_{0}
\end{bmatrix} \\
C_o =
\begin{bmatrix}
\quad1_{~}&\quad0& \cdots & \cdots & 0
\end{bmatrix} &
D_o = D
\end{array}
\]
$A_c$ est une matrice compagnon verticale de type I .
\end{defin}
\paragraph{Détermination de la matrice de passage}~\\
On cherche M tel que $M^{-1}AM = A_o $ et $ CM = C_oM$ . Soit egalement:
\[
\begin{cases}
M^{-1}A = A_oM^{-1}\\
C = C_0M^{-1}
\end{cases}
\]
On pose $T=M^{-1}$ alors , en décrivant la matrice suivant ces $n$ lignes
$T= vect{t_1 \\ t_2 \\ \vdots \\ t_n\\ }$
\[
t_1 = C
\]
et
\[
\begin{cases}
t_2 &= C(A+a_{n-1}I_n) \\
t_3 &= C(A^2+a_{n-1}A +a_{n-2}I_n) \\
&\vdots\\
t_{n} &= C(A^{n-1}+a_{n-1}A^{n-2}+ ... + a_1 I_n)
-a_0 C =t_nA
\end{cases}
\]
\begin{prop}
La matrice $T$ est une matrice de changement de base vers la forme canonique d'observabilité si et seulement si
\[
rg(T) = rg(\vect{C& CA& ...& CA^{n-1}}^T) =rg(\mathcal{O}(C,A) = n
\]
Cette matrice est donc inversible ssi le système est commandable.
\end{prop}
\subsubsection{forme modale}
\emph{Voir polycopié}
\subsection{Dualité observation-commande} \subsection{Dualité observation-commande}
\[ (S) : \[ (S) :
@ -796,8 +959,9 @@ y & = Cx+Du
\[G(s) = C(s1_n-A)^{-1}B+D \in \R[X]\] \[G(s) = C(s1_n-A)^{-1}B+D \in \R[X]\]
$G(s)$ est scalaire, donc en transposant ($G(s)=G(s)^T, D=D^T$) : $G(s)$ est scalaire, donc en transposant ($G(s)=G(s)^T, D=D^T$) :
\[G(s) = B^T(s1_n-A)^{-1}C^T+D \in \R[X]\] \[G(s) = B^T(s1_n-A)^{-1}C^T+D \in \R[X]\]
\begin{defin}
Ainsi, $\exists \tilde{x}\in \R^n$ tel que On a donc forme duale du modèle d'état (monovariable uniquement).
$\exists \tilde{x}\in \R^n$ tel que
\[ (S) : \[ (S) :
\left\{ \left\{
\begin{array}{ll} \begin{array}{ll}
@ -807,8 +971,7 @@ y & = B^T\tilde{x}+Du
\right. \right.
\] \]
C'est la forme duale du modèle d'état (monovariable uniquement). \end{defin}
\subsection{Commandabilité et observabilité pour les formes canoniques} \subsection{Commandabilité et observabilité pour les formes canoniques}
Une forme canonique : Une forme canonique :
@ -1236,7 +1399,7 @@ La dynamique du système $(\Sigma)$ bouclé au correcteur est donné par l'union
\end{itemize} \end{itemize}
\end{prop} \end{prop}
\newpage
\section{Modèle d'état d'un système analogique discrétisé par un CNA-BOZ} \section{Modèle d'état d'un système analogique discrétisé par un CNA-BOZ}
\begin{center} \begin{center}
\begin{tikzpicture} \begin{tikzpicture}
@ -1264,7 +1427,7 @@ Pour $(\Sigma)$ on a :
x(t) &= e^{tA}x_0 + \int_0^t e^{(t-\tau)A}Bu(\tau)d\tau x(t) &= e^{tA}x_0 + \int_0^t e^{(t-\tau)A}Bu(\tau)d\tau
\intertext{Pour $t=kT_e$} \intertext{Pour $t=kT_e$}
x_k &= e^{kT_eA}x_0 + \int_0^{kT_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau\\ x_k &= e^{kT_eA}x_0 + \int_0^{kT_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau\\
\intertext{Alors} \intertext{}
x_{k+1} &= e^{T_eA}\left(e^{kT_eA}x_0+ \int_0^{kT_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau+ \int_{kT_e}^{(k+1)T_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau \right) \\ x_{k+1} &= e^{T_eA}\left(e^{kT_eA}x_0+ \int_0^{kT_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau+ \int_{kT_e}^{(k+1)T_e} e^{(kT_e-\tau)A}Bu(\tau)d\tau \right) \\
x_{k+1} &= e^{T_eA}\left(x_k - \int_0^{-T_e} e^{\sigma A}Bu_kd\sigma \right) \\ x_{k+1} &= e^{T_eA}\left(x_k - \int_0^{-T_e} e^{\sigma A}Bu_kd\sigma \right) \\
x_{k+1} &= \underbracket{e^{T_eA}}_{A_d}x_k + \underbracket{\int_0^{T_e} e^{\sigma A}Bd\sigma}_{B_d} u_k x_{k+1} &= \underbracket{e^{T_eA}}_{A_d}x_k + \underbracket{\int_0^{T_e} e^{\sigma A}Bd\sigma}_{B_d} u_k

View file

@ -1,38 +1,11 @@
\documentclass[12pt,a4paper,french]{book} \documentclass{../../cours}
% Packages
\usepackage[utf8x]{inputenc} % encodage
\usepackage{mathtools} % math
\usepackage{cancel} % rayer des trucs en maths
\usepackage{amsfonts} % math
\usepackage{amssymb} % math
\usepackage{mathrsfs}
\usepackage{graphicx} % pour inserer des graphiques
\usepackage[french]{babel} % pour ecrire en francais
\usepackage[left=2.00cm, right=2.00cm, top=3.00cm, bottom=3.00cm]{geometry} % la mise en page
\usepackage{fancyhdr} % la mise en page
\usepackage[dvipsnames,x11names]{xcolor} % Un peu de couleur !
\usepackage{float}
\usepackage{subcaption}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{subfiles} % Gere les sous-fichier
\usepackage{hyperref} % Creer des lien dans le pdf, en particulier sur la table des matières
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{positioning}
\usepackage{schemabloc}
\usepackage{circuitikz}
\usepackage{pgfplots}
\usepackage{../../raccourcis} \usepackage{../../raccourcis}
\usepackage{../../boites} \usepackage{multicol}
\hypersetup{
colorlinks = true,
linkcolor=.,
}
% Mise en page % Mise en page
\title{421 - Controle de processus} \title{Notes de Cours}
\setcounter{secnumdepth}{3} \author{Pierre-Antoine Comby}
\renewcommand{\thesection}{\arabic{section}} \teacher{Samy Tliba}
\module{421}
\begin{document} \begin{document}

View file

@ -1,36 +1,11 @@
\documentclass[12pt,a4paper,french]{book} \documentclass{../../cours}
% Packages
\usepackage[utf8x]{inputenc} % encodage
\usepackage{mathtools} % math
\usepackage{cancel} % rayer des trucs en maths
\usepackage{amsfonts} % math
\usepackage{amssymb} % math
\usepackage{mathrsfs}
\usepackage{graphicx} % pour inserer des graphiques
\usepackage[french]{babel} % pour ecrire en francais
\usepackage[left=2.00cm, right=2.00cm, top=3.00cm, bottom=3.00cm]{geometry} % la mise en page
\usepackage{fancyhdr} % la mise en page
\usepackage[dvipsnames,x11names]{xcolor} % Un peu de couleur !
\usepackage{float}
\usepackage{subcaption}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{subfiles} % Gere les sous-fichier
\usepackage{hyperref} % Creer des lien dans le pdf, en particulier sur la table des matières
\usepackage{tikz}
\usepackage{schemabloc}
\usepackage[european,cuteinductors,siunitx,straightvoltages]{circuitikz}
\usepackage{pgfplots}
\usepackage{../../raccourcis} \usepackage{../../raccourcis}
\usepackage{../../boites}
\hypersetup{
colorlinks = true,
linkcolor=.,
}
% Mise en page % Mise en page
\title{431 - Système de transmission d'information} \title{Notes de Cours}
\setcounter{secnumdepth}{3} \author{Pierre-Antoine Comby}
\renewcommand{\thesection}{\arabic{section}} \teacher{Eric Vourc'h \& Arnaud Bournel}
\module{431}
\begin{document} \begin{document}

View file

@ -1,38 +1,12 @@
\documentclass[12pt,a4paper,french]{book} \documentclass{../../cours}
% Packages
\usepackage[utf8x]{inputenc} % encodage
\usepackage{mathtools} % math
\usepackage{cancel} % rayer des trucs en maths
\usepackage{amsfonts} % math
\usepackage{amssymb} % math
\usepackage{mathrsfs}
\usepackage{graphicx} % pour inserer des graphiques
\usepackage[french]{babel} % pour ecrire en francais
\usepackage[left=2.00cm, right=2.00cm, top=3.00cm, bottom=3.00cm]{geometry} % la mise en page
\usepackage{fancyhdr} % la mise en page
\usepackage[dvipsnames,x11names]{xcolor} % Un peu de couleur !
\usepackage{float}
\usepackage{subcaption}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{subfiles} % Gere les sous-fichier
\usepackage{hyperref} % Creer des lien dans le pdf, en particulier sur la table des matières
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{positioning}
\usepackage{schemabloc}
\usepackage{circuitikz}
\usepackage{pgfplots}
\usepackage{../../raccourcis} \usepackage{../../raccourcis}
\usepackage{../../boites}
\hypersetup{
colorlinks = true,
linkcolor=.,
}
% Mise en page % Mise en page
\title{451 - Signal et Image} \title{Notes de Cours}
\setcounter{secnumdepth}{3} \author{Pierre-Antoine Comby}
\renewcommand{\thesection}{\arabic{section}} \teacher{Cécile Durieu}
\module{451}
\usepackage{multicol}
\begin{document} \begin{document}

View file

@ -1,7 +1,9 @@
#!/bin/sh #!/bin/bash
# Pour compiler tous les fichiers sources du dépot: # Pour compiler tous les fichiers sources du dépot:
find . -name "main.tex" -execdir latexmk -pdf -e '$latex=q/latex %O -shell-escape %S/' {} \; find . -name "main.tex" -execdir latexmk -pdf -e '$latex=q/latex %O -shell-escape %S/' {} \;
#clean up : #clean up :
rm -f **/*.aux **/*.log
shopt -s globstar
rm -f **/*.aux **/*.log **/*.out

View file

@ -3,7 +3,7 @@
%ensembles usuels %ensembles usuels
\newcommand{\R}{\mathbb{R}} \newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}} \renewcommand{\C}{\mathbb{C}}
\newcommand{\N}{\mathbb{N}} \newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}} \newcommand{\Z}{\mathbb{Z}}
@ -12,7 +12,6 @@
\newcommand{\Lin}{\mathcal{L}} \newcommand{\Lin}{\mathcal{L}}
\newcommand{\Img}{\text{Im}} \newcommand{\Img}{\text{Im}}
\newcommand{\Ker}{\text{Ker}} \newcommand{\Ker}{\text{Ker}}
\newcommand{\A}{\text{A}} \newcommand{\A}{\text{A}}
\newcommand{\B}{\text{B}} \newcommand{\B}{\text{B}}
\newcommand{\fromatob}{\A\to\B} \newcommand{\fromatob}{\A\to\B}