Finding roots of differential equations

9 views (last 30 days)
How can I find the roots/zeros of a differential equation such as
  5 Comments
John D'Errico
John D'Errico on 20 Mar 2017
Edited: John D'Errico on 20 Mar 2017
Your question is fairly ambiguous, and can be interpreted in several ways.
Most logical to me would be to assume that since a differential equation implicitly defines a function y(t), then you are asking to solve for the roots of y(t), thus the set of values t such that y(t)=0.
So you need to explain what you are asking. As well, do the parameters B and C have known values? Are there known initial conditions on the differential equation? Is u(t) known?
stevesy55
stevesy55 on 20 Mar 2017
Sorry for not explaining correctly, I'm new to differential equations, laplace and MATLAB.
The constant B = 7 and C = 0, there are no known initial conditions and u(t) is unknown. I need to find the roots, do a partial fraction expansion, an inverse Laplace transform and plot the function f(t). I then need to plot the poles and zeros of the differential equation.
I know some of the commands required are "roots", "residue", "ilaplace" and "plot".

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 20 Mar 2017
If I understand your Question correctly, you have to transform your equation from the time domain into Laplace space (assume all initial conditions are 0), then solve for the roots in s-space. Any book on signal processing or differential equations will tell you how to do the transformation, and will have tables of Laplace transforms.
The transfer function, H(s), will then be given by:
H(s) = U(s)/Y(s)
The ‘roots’ of that function will be the zeros of the numerator. In this second-order system, this becomes a straightforward application of the quadratic formula. If you do not have numerical values for ‘B’ and ‘C’, you will necessarily get only a symbolic result.
  83 Comments
Vignesh Ramakrishnan
Vignesh Ramakrishnan on 7 Mar 2024
Edited: Vignesh Ramakrishnan on 7 Mar 2024
@Star Strider, I am not talking of using the Laplace domain(which is restricted to linear and time-invariant systems) here. Say I have the above non-linear differential system(which I am using to model a pendulum with some weird damping), for which, say a,b are chosen and fixed for obtaining the solution's equilibria by checking the zero crossing when I run this through ode45, and place all this in a loop where a,b are varied, that should be a rough equivalent of a 'root locus'. Something like
for a=0:0.1:10
for b=0:0.1:10
y_roots=roots(ddy(t,a,b));
end
end
Is there an easier way to pull this off?
Star Strider
Star Strider on 7 Mar 2024
Probably the easiest way to detect zero crossings is to use an Events location and function. That should automatically record the times.
I leave the rest of that to you.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!