从ODE45开始采用角加速度MATLAB

时间:2013-12-02 09:23:42

标签: matlab equation-solving acceleration

我正在解决eqaution运动,我需要数值积分,所以我决定在Matlab中使用ode45。我找到了位移和速度,现在我需要找到角加速度并随时间绘制。

我的代码和功能:

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);

1 个答案:

答案 0 :(得分: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);

但是,当我尝试在Octave上运行您的代码时,ode45无法解决方程式。这些情节看起来像这样:

enter image description here

您是否能够在MATLAB中获得有意义的位移和速度结果?如果没有,我建议你检查你的方程式,并确保在尝试推导加速度之前得到合理的结果。