Solving a second order differential equation with matlab.

Hey,
I wanted to plot a second order differential equation in Matlab to see how it would look. The equation is the following:
y = x + 2*cos(omega)*y'-y''
This equation corresponds to an IIR filter with the poles on the unit circle. I will be using it to generate harmonic oscillations.
"x" only gives a unit impulse, and omega = 2*pi*(f0/fs), and is used to control the oscillations.
Please show me what I should write to be able to see these oscillations in Matlab.
Thanks in advance.

 採用された回答

madhan ravi
madhan ravi 2018 年 12 月 14 日
編集済み: madhan ravi 2018 年 12 月 14 日

1 投票

syms y(x)
dy=diff(y);
dy2=diff(y,2);
omega=5; %your value acheived by 2*pi*(f0/fs) formula
ode=y == x + 2*cos(omega)*dy-dy2 ;
vars = y(x);
V = odeToVectorField(ode)
M = matlabFunction(V,'vars', {'x','Y'})
interval = [0 10]; %time interval
y0 = [0 0]; %initial conditions
ySol = ode45(M,interval,y0);
tValues = linspace(interval(1),interval(2),1000);
yValues = deval(ySol,tValues,1); %number 1 denotes first solution likewise you can mention 2 for the next solution
plot(tValues,yValues)
hold on
yValues = deval(ySol,tValues,2);
plot(tValues,yValues,'r')

2 件のコメント

Marius Turcan
Marius Turcan 2018 年 12 月 15 日
Thank you for your answer.
It is working, and producing the same plot you've provided.
I have a follow-up question, which is how would I go from here if I want to see a continuous evaluation of the oscillations produced, the same way you would see on an oscilloscope?
Would I be better off implementing the corresponding filter in Simulink and viewing that way?
madhan ravi
madhan ravi 2018 年 12 月 15 日
編集済み: madhan ravi 2018 年 12 月 15 日
Would I be better off implementing the corresponding filter in Simulink and viewing that way?
I have no experience with simulink.. but I am pretty sure it's more handy to simulate

サインインしてコメントする。

その他の回答 (0 件)

質問済み:

2018 年 12 月 14 日

編集済み:

2018 年 12 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by