Как я могу построить частотную характеристику колебательной системы с помощью нелинейных дифференциальных уравнений?
У меня есть система нелинейных дифференциальных уравнений для колебательной системы с тремя степенями свободы.система дифференциальных уравнений
Сначала я хочу построить график y, y_L и y_R в зависимости от времени (для данного значения для Omega), а затем я хочу построить графики доменов (максимальные значения y, y_L и y_R) против различных количеств Omega. К сожалению, я не очень хорош в Octave. Я написал следующий код в Octave (на основе образца, предоставленного одним из пользователей), но он заканчивается этой ошибкой: "тела анонимных функций должны быть отдельными выражениями".
Буду признателен, если кто-нибудь сможет мне помочь.
Вот код:
Me = 4000;
me = 20;
c = 2000;
c1 = 700;
c2 = 700;
k = 20000;
k1 = 250000;
k2 = 20000;
a0 = 0.01;
om = 25;
mu1 = (c+2*c2)/(Me);
mu2 = (c2)/(Me);
mu3 = (c1+c2)/(me);
mu4 = (c2)/(me);
w12 = (2*k2)/(Me);
w22 = (k1+k2)/(me);
a1 = (k2)/(me);
a2 = (k)/(Me);
F0 = (k1*a0)/(Me);
couplode = @(t,y) [y(2); mu4*y(4) - mu3*y(2) - w22*y(1) + a1*y(3) + F0*cos(om*t); y(4); mu2*(y(2)+y(6)) - mu1*y(4) - w12*y(3) + 0.5*w12*(y(1)+y(5)) + a2((y(3)).^3; y(6); mu4*y(4) - mu3*y(6) - w22*y(5) + a1*y(3) + F0*cos(om*t)];
[t,y] = ode45(couplode, [0 0.49*pi], [1;1;1;1;1;1]*1E-8);
figure(1)
plot(t, y)
grid
str = {'$$ \dot{y_L} $$', '$$ y_L $$', '$$ \dot{y} $$', '$$ y $$', '$$ \dot{y_R} $$', '$$ y_R $$'};
legend(str, 'Interpreter','latex', 'Location','NW')
1 ответ
У вас есть странный термин в конце определения вектора
... + a2((y(3)).^3
Вы конечно имели в виду
... + a2*y(3).^3
Вы получите лучшую видимость и упростите отладку, разбив это на отдельные строки
couplode = @(t,y) [ y(2);
mu4*y(4)-mu3*y(2)-w22*y(1)+a1*y(3)+F0*cos(om*t);
y(4);
mu2*(y(2)+y(6)) - mu1*y(4) - w12*y(3) + 0.5*w12*(y(1)+y(5)) + a2*y(3).^3;
y(6);
mu4*y(4)-mu3*y(6)-w22*y(5)+a1*y(3)+F0*cos(om*t)];
По крайней мере, в этой форме пробелы или отсутствие пробелов не имеют значения. В общем в матлаб / октаве
[a +b -c]
такой же как
[a, +b, -c]
, поэтому нужно быть осторожным, чтобы выражение не интерпретировалось как строка матрицы. Пробелы на обоих участках знака операции возвращаются к однозначной интерпретации.