Je veux savoir si le modèle d'auto-retour devient incontrôlable!
Par exemple, $ ξ (t) $ d'aujourd'hui est $ ξ (t-1) $ d'hier, $ ξ (t-2) $ de papa et la veille de cela $ ξ (t-3) $. À partir de $ u (t) $, supposons que vous décidiez:
Exprimant cela sous forme de matrice,
x(t)=
\begin{pmatrix}
-0.5&0.34&0.08\\
1&0&0\\
0&1&0
\end{pmatrix} \times
x(t-1)
Ce sera. Depuis, cela s'est généralisé
x(t)=Ax(t-1)
Poignées.
x(t)=7x(t-1)
Ceci est multiplié par 7 à chaque fois que $ t $ augmente, donc
x(t)=7^tx(0)
Ensuite, quand $ t → ∞ $, cela devient incontrôlable car c'est $ 7 ^ t → ∞ $. Par contre, si le coefficient est de 0,2 $, il n'y aura pas d'emballement. C'est facile, non?
x(t)=
\begin{pmatrix}
5&0&0\\
0&-3&0\\
0&0&0.8
\end{pmatrix} \times
x(t-1)
Dans le cas de, la puissance de la matrice diagonale doit uniquement être la puissance du composant tel quel.
x(t)=
\begin{pmatrix}
5&0&0\\
0&-3&0\\
0&0&0.8
\end{pmatrix}^t
x(0)
Peut être écrit.
Si la matrice n'est pas une matrice diagonale, elle sera convertie de force en matrice diagonale. Apportez une matrice régulière $ P $ à la variable d'origine $ x (t) $
x(t)=Py(t)
Réfléchissons à la façon de convertir en une autre variable avec. À ce moment, comment $ x (t) = Ax (t-1) $ est-il converti?
Premièrement, $ x (t) = Py (t) $
y(t)=P^{-1}x(t)=P^{-1}Ax(t-1)\\
=P^{-1}A(Py(t-1))=(P^{-1}AP)y(t-1)
Si vous mettez $ Λ = P ^ {-1} AP $,
y(t)=Λy(t-1)
Peut être placé. Si ce $ Λ $ est une matrice diagonale,
y(t)=Λ^ty(0)
Vous pouvez facilement trouver $ y (t) $ avec
x(t)=Py(t)=PΛty(0)=PΛ^tP^{-1}x(0)
J'étais heureux de trouver x aussi.
Cette procédure "apportant un $ P $ pratique et faisant de $ P ^ {-1} AP $ une matrice diagonale" est appelée diagonalisation.
Ce que je veux faire
P^{-1}AP≡Λ=diag(λ_1,...,λ_n)
Est de trouver $ P $ comme. Généralement pour une matrice carrée $ A $
Ap=λp\\
p≠o
Le nombre $ λ $ et le vecteur $ p $ qui satisfont les conditions sont appelés respectivement valeurs propres et vecteurs propres.
Les calculs sont faciles si vous utilisez pleinement les fonctions de Numpy. Calculons avec la matrice suivante.
A=
\begin{pmatrix}
5&3&4\\
6&8&-8\\
6&9&-9
\end{pmatrix}
import numpy as np
def get_eigenpairs(arr):
#np.linalg.eig renvoie une valeur unique dans le premier argument et un vecteur unique dans le deuxième argument
w, v = np.linalg.eig(arr)
eigenpairs = []
#Parce que v est normalisé à 1. Je ne sais pas si c'est le cas.
#Par conséquent, la valeur numérique est restaurée en divisant par la valeur minimale à l'exclusion de 0 dans chaque colonne.
for i, val in enumerate(w):
vec = v[:, i] / np.min(np.abs(v[:, i][v[:, i] != 0]))
eigenpairs.append((val, vec))
eigenpairs.sort(key=lambda x:x[0])
return eigenpairs
A = np.array([[5,3,-4],[6,8,-8],[6,9,-9]])
get_eigenpairs(A)
#array([[-1.0, array([1., 2., 3.])],
# [2.0, array([-1., -3., -3.])],
# [3.0, array([1., 2., 2.])]], dtype=object)
J'ai 3 vecteurs propres. Celles-ci correspondent respectivement à des valeurs uniques $ -1, 2, 3 $. Alors, arrangez trois vecteurs propres
P=
\begin{pmatrix}
1&-1&1\\
2&-3&2\\
3&-3&2
\end{pmatrix}
Vérifions si $ P ^ {-1} AP $ est une matrice diagonale.
P = np.empty((3,3))
#Stockez 3 vecteurs propres dans une matrice 3x3
for i,val in enumerate(get_eigenpairs(a)):
P[i] = val[1]
np.rint(np.dot(np.dot(np.linalg.inv(P.T),a),P.T))
#array([[-1., 0., 0.],
# [ 0., 2., -0.],
# [ 0., 0., 3.]])
Il a été confirmé que $ P ^ {-1} AP = diag (-1,2,3) $ a été obtenu avec succès. Désormais, vous pouvez facilement vous renseigner sur l'emballement du modèle à retour automatique.