SHOW:
|
|
- or go back to the newest paste.
| 1 | - | def eqS((A, B, C, D), (An, Bn, Cn, Dn)): |
| 1 | + | def analitInitial((A, B, C, D), x0, T): |
| 2 | - | A = mt(A); B = mt(B); C = mt(C); D = mt(D) |
| 2 | + | T = arange(T[0], T[1], T[2]) |
| 3 | - | An = mt(An); Bn = mt(Bn); Cn = mt(Cn); Dn = mt(Dn) |
| 3 | + | x0 = array(x0) |
| 4 | - | b = B[:, 0] |
| 4 | + | |
| 5 | - | bn = Bn[:, 0] |
| 5 | + | J, V = eig(A) |
| 6 | - | n = len(A) |
| 6 | + | J = mt(J * eye(3, 3)) |
| 7 | - | Sy = b |
| 7 | + | S = mt(V) |
| 8 | - | Sny = bn |
| 8 | + | y = ([], []) |
| 9 | - | for i in range(1, n): |
| 9 | + | |
| 10 | - | Apow = copy(A) |
| 10 | + | for i in range(len(T)): |
| 11 | - | Anpow = copy(An) |
| 11 | + | y[0].append(T[i]) |
| 12 | - | if not i == 1: |
| 12 | + | yy = C * S * mt(expm(J * T[i])) * mt(inv(V)) * mt(x0).transpose() |
| 13 | - | for j in range(i-1): |
| 13 | + | y[1].append(array(yy[0])[0][0]) |
| 14 | - | Apow = dot(Apow, A) |
| 14 | + | plot(y[0], y[1]) |
| 15 | - | Anpow = dot(Anpow, An) |
| 15 | + | title('Analytical construction')
|
| 16 | - | Sy = hstack((Sy, dot(Apow, b))) |
| 16 | + | xlabel('t, s.')
|
| 17 | - | Sny = hstack((Sny, dot(Anpow, bn))) |
| 17 | + | ylabel('y(t)')
|
| 18 | - | return dot(Sy, inv(Sny)) |
| 18 | + | grid(color='g', linestyle='--') |
| 19 | show() |