Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a11 = -0.4;
- a12 = -0.8;
- a21 = 1;
- a22 = -0.3;
- b1 = -1.4;
- b2 = 0.08;
- c = 0.9;
- d = 0.0086;
- T = 0.12;
- A = [
- a11 a12 b1;
- a21 a22 b2;
- 0 0 -1/T
- ];
- B = [
- 0; 0; 1/T
- ];
- syms omega_z(t) alpha(t) delta(t) u(t) n_y(t)
- assume(t, "real")
- n_y = c * alpha + d * delta;
- X = [omega_z; alpha; delta];
- X_star = [omega_z; n_y; delta];
- % Получим матрицу T
- % Матрица Т состоит из нулей кроме 3-х элементов: t_11 = 1; t_22 = 1/c;
- % t_23 = -d/c
- matrix_T = [
- 1 0 0;
- 0 1/c -d/c;
- 0 0 1
- ];
- % X == matrix_T * X_star
- Уравнение в изначальном виде:
- dX = diff(X, t);
- dX_star = diff(X_star, t);
- eq1 = dX == A*X + B*u;
- Уравнение при переходе к новому базису:
- A_star = inv(matrix_T)*A*T
- B_star = inv(matrix_T)*B
- % dX_star == A_star * X_star + B_star * u
- tmp = @(t, omega_z, n_y, delta) A_star * X_star + B_star * u
- tspan = [0 3];
- y0 = -5:5;
- tmp1 = ode45(tmp, tspan, y0)
- plot(t, tmp1(:, 2), '-.')
- % A = 1;
- % B = 2;
- % tspan = [0 5];
- % y0 = [0 0.01];
- % [t,y] = ode45(@(t,y) odefcn(t,y,A,B), tspan, y0);
- %
- % plot(t, y(:,1), '-o', t, y(:,2), '-.')
- tmp;
- function dydt = odefunc(t, exp)
- dydt = zeros(3, 1);
- dydt(1) = 1;
- end
- function dydt = odefcn(t,y,A,B)
- dydt = zeros(2,1);
- dydt(1) = y(2);
- dydt(2) = (A/B)*t.*y(1);
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement