Double Variable Second order Differential Equation
조회 수: 14 (최근 30일)
이전 댓글 표시
I am attempting to solve a double mass-spring-damper system. I already solved for single mass using ode45. However I am unable to figure out how to use this with two variables and also solve a second order differential.
The Equation I used was
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/574917/image.png)
The function I used is shown below.
function dy=damped_spring_mass(F,m,D,w0,b,t,y)
x=y(1);
v=y(2);
dy=zeros(2,1);
dy(1)=v;
dy(2)=(F*sin(w0*t)-D*x-c*v)/m;
I used this function to in ode45 as shown below
y0=[0;0];
tspan=[0 30];
%% Spring constants
k1= 5;
k01 = 1;
k12 = 2;
c=0.1;
D1= k1+c*(k01+k12);
%% mass constants
m1=1;
%% Damper C0fficients
b1=3;
%% Force
F= 0.1;
w0=2;
%% Diff Eq and plot
[Td,Yd]=ode45(@(t,y) damped_spring_mass(F,m1,D1,w0,b1,t,y),tspan,y0);
plot(Td,Yd(:,1));
For a double mass system, I have two equations
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/574922/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/574927/image.png)
The new constants are provided below
%% Spring constants
k2= 2;
k23 = 3;
k34 = 1;
c=0.1;
D2= k2+c*(k23+k34);
%% mass constants
m2=2;
%% Damper C0fficients
b2=5;
Any help would be greatly appreciated. If you need more information please let me know!
댓글 수: 0
채택된 답변
James Tursa
2021년 4월 9일
Just write a derivative function using four states instead of two. The states will be x, y, dxdt, and dydt. The derivitives of these states will be dxdt, dydt, d2xdt2, and d2ydt2. E.g.,
function dy = damped_spring_mass(t,y, other constants )
dxdt = y(3);
x = y(1);
dydt = y(4);
y = y(2);
d2xdt2 = your expression for this in terms of constants and x, y, dxdt, dydt
d2ydt2 = your expression for this in terms of constants and x, y, dxdt, dydt
dy = [dxdt;dydt;d2xdt2;d2ydt2];
end
댓글 수: 5
James Tursa
2021년 4월 12일
The dy should be the last line in your derivative function code. E.g.,
function dy=damped_spring_mass(F,m,n,K,k,J,w0,d,b,t,y)
dxdt = y(3);
x = y(1);
dydt = y(4);
y = y(2);
d2xdt2 =(F*sin(w0*t)-d*dxdt+d*dydt-K*x+K*y)/m;
d2ydt2 =((d-b)*dydt-d*dxdt+k*x-J*y)/n;
dy = [dxdt;dydt;d2xdt2;d2ydt2];
end
추가 답변 (1개)
Merve Buyukbas
2021년 4월 6일
댓글 수: 2
Sajawal Feroze
2022년 4월 20일
https://www.mathworks.com/matlabcentral/answers/434127-how-to-solve-system-of-2nd-order-differential-equations-using-ode45
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!