Układ równań liniowych

1973 days ago by Henryk

A = matrix(SR,[[6,3],[-1,2]]) # to jest macierz z polskiego wydania Matwiejewa, przykład ze strony 329 t = var('t') # szukamy rozwiązania x(y),y(t) x = function('x',t) y = function('y',t) C_1 = var('C_1') C_2 = var('C_2') 
       
A.eigenvalues() 
       
[3, 5]
A.right_eigenmatrix() 
       
(
[3 0]  [   1    1]
[0 5], [  -1 -1/3]
)
S=A.right_eigenmatrix()[1]; # to jest macierz wektorów własnych S 
       
[   1    1]
[  -1 -1/3]
S_inverse = S.inverse(); S_inverse 
       
[-1/2 -3/2]
[ 3/2  3/2]
D = S_inverse*A*S # to jest macierz diagonalna D 
       
[3 0]
[0 5]
D_1 = matrix(SR,[[exp(3*t),0],[0,exp(5*t)]]) # macierz D_1 posłuży nam do wygenerowania rozwiązania D_1 
       
[e^(3*t)       0]
[      0 e^(5*t)]
(matrix(SR,[[C_1,C_2]])*S*D_1*S_inverse) # ogólne rozwiązania równania są w poniższej postaci 
       
[-1/2*(C_1 - C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t) -3/2*(C_1 -
C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t)]
# przepisujemy te rozwiązania, robiąc odpowiednie podstawienia za x,y x = -1/2*(C_1 - C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t) y = -3/2*(C_1 - C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t) x; y; 
       
-1/2*(C_1 - C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t)
-3/2*(C_1 - C_2)*e^(3*t) + 1/2*(3*C_1 - C_2)*e^(5*t)
# sprawdzamy, czy funkcja x spełnia równanie derivative(x,t)-6*x+y 
       
0
# sprawdzamy, czy funkcja y spełnia równanie derivative(y,t)-3*x-2*y 
       
0