Commit 9939a9ae authored by Marc GELGON's avatar Marc GELGON
Browse files

notebooks added

parent 22e17049
%% Cell type:markdown id: tags:
# Composition de deux modèles de mouvement affines
%% Cell type:markdown id: tags:
L'objectif de cet exercice est de montrer que la composition de deux modèles de mouvement affine est un mouvement affine.
Un mouvement affine est une version simplifiée du modèle quadratique.
Soit un champ de mouvement suivant un modèle affine, paramétré par les coefficients $a_1 a_2 a_3 a_4 a_5 a_6$, qui à tout point $(x,y)$ associe un vecteur $(u(x,y),v(x,y))$
$$ u(x,y) = a_{1}+a_{2}x+a_{3}y$$
$$ v(x,y) = a_{4}+a_{5}x+a_{6}y$$
qui peut s'écrire aussi $$ [u v ]^T = M . A $$
où $$ A= [a_1 a_2 a_3 a_4 a_5 a_6]$$
On en profite pour montrer quelques exemples d'utilisation de la librarie de calcul symbolique python Sympy
%% Cell type:code id: tags:
``` python
from sympy import *
a1,a2,a3,a4,a5,a6 = symbols('a1,a2,a3,a4,a5,a6')
b1,b2,b3,b4,b5,b6 = symbols('b1,b2,b3,b4,b5,b6')
x,y,u,v,z = symbols('x,y,u,v,z')
xp,yp,xpp,ypp,up,vp = symbols('xp,yp,xpp,ypp,up,vp')
# pour avoir des jolies sorties à l'écran
init_printing(use_latex='mathjax')
# premier modele de mouvement de (x,y)->(xp,yp)
u=a1+a2*x+a3*y
v=a4+a5*x+a6*y
xp=x+u
yp=y+v
# second modele de mouvement de (xp,yp)->(xpp,ypp)
#
up=b1+b2*xp+b3*yp
vp=b4+b5*xp+b6*yp
xpp=xp+up
ypp=yp+vp
```
%% Cell type:code id: tags:
``` python
xpp
```
%% Output
$$a_{1} + a_{2} x + a_{3} y + b_{1} + b_{2} \left(a_{1} + a_{2} x + a_{3} y + x\right) + b_{3} \left(a_{4} + a_{5} x + a_{6} y + y\right) + x$$
a₁ + a₂⋅x + a₃⋅y + b₁ + b₂⋅(a₁ + a₂⋅x + a₃⋅y + x) + b₃⋅(a₄ + a₅⋅x + a₆⋅y + y)
+ x
%% Cell type:code id: tags:
``` python
ypp
```
%% Output
$$a_{4} + a_{5} x + a_{6} y + b_{4} + b_{5} \left(a_{1} + a_{2} x + a_{3} y + x\right) + b_{6} \left(a_{4} + a_{5} x + a_{6} y + y\right) + y$$
a₄ + a₅⋅x + a₆⋅y + b₄ + b₅⋅(a₁ + a₂⋅x + a₃⋅y + x) + b₆⋅(a₄ + a₅⋅x + a₆⋅y + y)
+ y
%% Cell type:code id: tags:
``` python
# les ecritures ci-dessous ne font pas bien apparaitre qu'il s'agit d'un modele affine
# donc on va developper par rapport aux b_i puis factoriser par rapport a x et y
# pour faire plus clairement apparaitre les modeles affine
xpp_expand = xpp.expand(basic=True)
ypp_expand = ypp.expand(basic=True)
xpp_factorized = collect(xpp_expand,x) # factorisation par rapport a x
xypp_factorized = collect(xpp_factorized,y) # on enchaine par une factorisation par rapport a y
ypp_factorized = collect(ypp_expand,y) # factorisation par rapport a y
yxpp_factorized = collect(ypp_factorized,x) # on enchaine par une factorisation par rapport a x
```
%% Cell type:code id: tags:
``` python
xypp_factorized
```
%% Output
$$a_{1} b_{2} + a_{1} + a_{4} b_{3} + b_{1} + x \left(a_{2} b_{2} + a_{2} + a_{5} b_{3} + b_{2} + 1\right) + y \left(a_{3} b_{2} + a_{3} + a_{6} b_{3} + b_{3}\right)$$
a₁⋅b₂ + a₁ + a₄⋅b₃ + b₁ + x⋅(a₂⋅b₂ + a₂ + a₅⋅b₃ + b₂ + 1) + y⋅(a₃⋅b₂ + a₃ + a₆
⋅b₃ + b₃)
%% Cell type:code id: tags:
``` python
yxpp_factorized
```
%% Output
$$a_{1} b_{5} + a_{4} b_{6} + a_{4} + b_{4} + x \left(a_{2} b_{5} + a_{5} b_{6} + a_{5} + b_{5}\right) + y \left(a_{3} b_{5} + a_{6} b_{6} + a_{6} + b_{6} + 1\right)$$
a₁⋅b₅ + a₄⋅b₆ + a₄ + b₄ + x⋅(a₂⋅b₅ + a₅⋅b₆ + a₅ + b₅) + y⋅(a₃⋅b₅ + a₆⋅b₆ + a₆
+ b₆ + 1)
%% Cell type:markdown id: tags:
Les deux expressions ci-dessus sont bien de la forme
$$ u(x,y) = a_{1}+a_{2}x+a_{3}y$$
$$ v(x,y) = a_{4}+a_{5}x+a_{6}y$$
donc prennent bien la forme de modeles affines
%% Cell type:code id: tags:
``` python
```
This diff is collapsed.
This diff is collapsed.
Supports Markdown
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