2013-12-02 3 views
0

Я решаю движение эквалайзера, и мне нужна численная интеграция, поэтому я решил использовать ode45 в Matlab. Я нашел смещение и скорость, теперь мне нужно найти Угловое ускорение и сделать график со временем.От ODE45 принять Угловое ускорение MATLAB

Там мой код и функции:

Код:

global r b m2 m3 m4 g I M 

% Quantities 
r=0.2; 
b=0.1; 
m2=1; 
m3=0.2; 
m4=2; 
g=9.81; 
tspan=0:0.01:2; 

% Calculation 
I=(m2*r^2)/3 
M0=m2*g*b+g*r*(m3+m4) 
M=1.2*M0 

% Runge- Kutta 
[t,x]=ode45(@funkce,tspan,[0 0]); 

% Plotting 
figure(1); 
plot(t,x(:,2)); 
grid; 

figure(2); 
plot(t,x(:,1)); 
grid; 

Функция:

function v=funkce(t,x); 

global r b m2 m3 m4 g I M 

% Method 
v(1,1)= (x(1)^2*(m4*r^2*cos(x(2))*sin(x(2)))+M-cos(x(2))*m2*g*b+(m3+m4)*g*r)/(I+m3*r^2+m4*r^2*cos(x(2))^2); 
v(2,1)= x(1); 
+0

К сожалению об угловых в тегах, я совершаю ошибку;) – MrPitivier

ответ

1

Может быть, я что-то отсутствует, но если у вас есть смещение и скорость, единственное, что вам нужно сделать, чтобы получить ускорение, - это отличить скорость:

% Assuming x(:,1) is the velocity, haven't checked your equations 
accel = zeros(size(x(:,1))); 
accel(2:end) = diff(x(:,1))./diff(t); 

Однако, когда я попытался запустить свой код на октаву, ode45 не смог решить уравнения. Участки выглядит следующим образом:

enter image description here

удалось получить значимые результаты для перемещения и скорости в среде MATLAB Вы? Если нет, я предлагаю вам проверить свои уравнения и убедиться, что вы получите разумные результаты, прежде чем пытаться получить ускорение.

+0

Спасибо, если я хорошо понимаю, может быть, вы вставляете перемещение и скорость: х (:, 2) ... смещение, х (:, 1) ... скорость – MrPitivier

+0

Okey, можно исправить это? alpha = градиент (x (:, 1), t (:)); Как вы думаете? – MrPitivier

+0

Как я уже сказал, я не знал, какой из 'x (:, 1)' или 'x (:, 2)' был смещением или скоростью. Из вашего кода не было ясно, и я не собирался проверять ваши уравнения для вас. Вы можете попробовать «градиент», но «diff» намного проще для вашей проблемы, на мой взгляд. Тем не менее, вам нужно проверить численную стабильность и валидность решения и, если нужно, проверить свои уравнения. – am304