Inverse Laplace contains a complex number

9 views (last 30 days)
I am using ilaplace to study circuits. Recently I drew a schematic the inverse Laplace of which (in the time domain) has a complex number. This is new to me. Is there a way to ensure that I don't get complex numbers with an inverse Laplace? One of the terms is:
0.0876468*exp(-255.018*t)*(cos(5101.72*t)*1.0i + sin(5101.72*t))
  5 Comments
Karl Snow
Karl Snow on 27 Nov 2018
I am not enough of a mathematician, I suppose, to make any claims. I am an engineer. However, I do have some support for what I said. Refer to:https://www.reddit.com/r/ECE/comments/2rd5zr/imaginary_voltages/
In it "someone" said: "Complex signals only have physical significance in the freq domain. If you say that V=1j that presumes a sinusoid at some frequency and means that the voltage at that freq has a 90deg phase shift. However, This is only a convention/mathematical shorthand (albeit an incredibly useful and fundamental one) and the actual observed voltage is the Real part of this complex representation. Working in the time domain, imaginary/complex voltages has no physical significance. So no, there is no such thing as a directly observable imaginary voltage."
Perhaps another mathematician could weigh in.
Walter Roberson
Walter Roberson on 27 Nov 2018
Not having physically measurable significance is not at all the same as saying that the equations will not include the components .

Sign in to comment.

Accepted Answer

David Goodmanson
David Goodmanson on 28 Nov 2018
Edited: David Goodmanson on 28 Nov 2018
Hi Karl
You show one of the terms, and I assume you have another one that is the complex conjugate that one so that the entire result is real. Here is a simple example of what is probably going on.
syms s a
F = 2*s/(s^2+a^2);
f = ilaplace(F)
f = 2*cos(a*t)
G = 1/(s+i*a) + 1/(s-i*a) % same as F, in partial fractions
g = ilaplace(G)
g = exp(-a*t*1i) + exp(a*t*1i)
( s^2 + a^2 ) has two complex roots, and ilaplace does not recombine the resulting complex expressions in G. However,
g1 = simplify(g)
g1 = 2*cos(a*t)
You can also try simplifying before doing ilaplace
G2 = simplify(G)
G2 = (2*s)/(a^2 + s^2) % same as F
g2 = ilaplace(G2)
g2 = 2*cos(a*t)
  2 Comments
Karl Snow
Karl Snow on 29 Nov 2018
Thanks very much David. Actually, the expression I included in my first post was not only half of a complex conjugate but was not the correct solution. Eventually, I found it and I will include it here. I have been using simplify() in my scripts and I am a little unsure why it is not working for me since it did for you. However, this circuit is more complicated and has more terms. First, I had MATLAB solve the system of equations I wrote down from the schematic in the s-domain. This produced the following:
i1_s = (1.0e-12*s^3 + 5.6e-8*s^2 + 0.000255*s + 1.0)/(s*(3.0e-12*s^3 + 3.67e-7*s^2 + 0.00151*s + 2.0))
i2_s = (0.001*s*(1.0e-9*s + 0.000055))/(3.0e-12*s^3 + 3.67e-7*s^2 + 0.00151*s + 2.0)
i3_s = (5.0e-8*s)/(3.0e-12*s^3 + 3.67e-7*s^2 + 0.00151*s + 2.0)
These are currents in the s-domain. Then I used the following script to get the time domain expression for just the first current.
inverse=ilaplace(i1_s);
inverse =
0.187815*exp(-118120.0*t) - exp(t*(- 2106.71 - 1098.06i))*(0.177241 + 0.30653i) - exp(t*(- 2106.71 + 1098.06i))*(0.177241 - 0.30653i) + 0.5
numInverse = vpa(inverse);
numInverse =
0.187815*exp(-118120.0*t) - exp(t*(- 2106.71 - 1098.06i))*(0.177241 + 0.30653i) - exp(t*(- 2106.71 + 1098.06i))*(0.177241 - 0.30653i) + 0.5
simp = simplify(numInverse);
simp =
0.187815*exp(-118120.0*t) - exp(t*(- 2106.71
- 1098.06i))*(0.177241 + 0.30653i) - exp(t*(- 2106.71 + 1098.06i))*(0.177241 - 0.30653i) + 0.5
digits(6);
t_domain=vpa(simp)
t_domain =
0.187815*exp(-118120.0*t) - exp(t*(- 2106.71 - 1098.06i))*(0.177241 + 0.30653i) - exp(t*(- 2106.71 + 1098.06i))*(0.177241 - 0.30653i) + 0.5
So, the use of vpa and simplify didn't seem to accomplish anything for me. I also tried using simplify on the complex conjugates individually but it just gave me the same thing back. I manipulated the t_domain expression by hand to get:
i1_t = 0.187815*exp(-118120t) 2*b*exp(-ct)*sin(dt) - 2*a*exp(-ct)*cos(dt) + 0.5
a=0.177241
b=0.30653
c=2106.71
d=1098.06
Which is what I wanted to get all along with MATLAB. So, MATLAB is definitely a big help but not yet as much as I wish it to be. Thanks again for your assistance!
Karl
David Goodmanson
David Goodmanson on 3 Dec 2018
Edited: David Goodmanson on 3 Dec 2018
Hi Karl,
you're welcome, although I didn't actually provide any value added. But I do want to comment on the idea that laplace transforms can be done in the real domain only.
While the person you quoted acknowledges complex variables are incredibly useful and fundamental, he/she says that it is only is only a convention/mathematical shorthand. That makes it sound like a matter of bookkeeping, which is highly misleading at best. To begin with, the standard way to derive an inverse laplace transform involves a path of integration in the complex plane. Even for the forward laplace transform, how do you derive the simple expression
Int e^(-st) cos(at) dt = s/(s^2+a^2) ?
It can be done in real variables with integration by parts and knowledge of the differential eqn for cos(at), but it is much, much easier and more direct to split the cos expression into (1/2) exp(iat) + (1/2) exp(-iat), do integrals and recombine. More complicated expressions are done in similar fashion.
For linear circuit theory you generally get the ratio of two polynomials in s. So you can do partial fractions, pair up compex conjugare roots and create a set of all-real expressions. That processis is of course correct, but it sweeps a lot of stuff under the rug.

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!