Second order diffrential equation solve using ode 45

조회 수: 7 (최근 30일)
Abhik Saha
Abhik Saha 2022년 8월 22일
댓글: Abhik Saha 2022년 8월 22일
I want to solve a second order differential equation of the form
d^2y/dt^2+dy/dt=sin(100t)
I want the value of dy/dt and y.
I am copied my code below where easily I can get the dy/dt as a function of t but I am not able find y as a function of t. I am new to Matlab. Please help me regarding this issue. I copied the code below
---------------------------------------------
main program
---------------------------------------------
t=linspace(0,500,1000); %time span%
y0=[0];
%%solving using ode45
[tsol, ysol]=ode45(@(t,y0) firstodefun2(t,y0), t, y0);
---------------------------------------------------
function definition
----------------------------------------------------
function dy=firstodefun2(t,y0)
dy=zeros(1,1);
dy(1)=sin(100*t)-y0(1);
end

채택된 답변

Sam Chak
Sam Chak 2022년 8월 22일
The code is fixed below. This is a 2nd-order system, and so there are two state variables and two initial values.
t = [0, 10];
y0 = [0 0];
% solving using ode45
[tsol, ysol] = ode45(@(t, y) firstodefun2(t, y), t, y0);
plot(tsol, ysol(:, 1)), grid on, xlabel('t, [sec]'), ylabel('y(t)')
function dy = firstodefun2(t, y)
dy = zeros(2, 1);
dy(1) = y(2);
dy(2) = sin(100*t) - y(2);
end

추가 답변 (1개)

Torsten
Torsten 2022년 8월 22일
Set x(1) = y and x(2) = dy/dt.
Then you get a system of differential equations
dx(1)/dt = x(2)
dx(2)/dt = -x(2) + sin(100*t)
Of course, you also will have to supply two initial conditions (one for y, the second for dy/dt at t=0).

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by