help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: differential equation


From: Thomas Shores
Subject: Re: differential equation
Date: Mon, 16 May 2011 22:41:00 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Thunderbird/3.1.10

On 05/16/2011 04:52 PM, Liam Groener wrote:
On May 16, 2011, at 9:35 AM, CdeMills wrote:

Hello,

I'm trying to simulate an electrical circuit whose time-domain differential
equation is
V" + k1 V' +k2 V = a1 I' + a2 I
Vs(t) - Rs I = V
where V and I are the device voltage and current, respectively, and the rest
are constants. Vs is the time-varying voltage source, and Rs its internal
resistance. Starting from equilibrium, all values and their derivatives are
set to zero.

I don't see how to formulate the problem, in particular adding the source
equation into the picture.

LSODE: let's say x1 = V, x2 = I, x3 = V'; so we have
x1' = x3
x2' = ??? =>  I' depends on Vs'(t) ???
x3' = a1 * ??? + a2 x2 - k1 x3 - k2 x1
How to fill the "???"

DASSL: same variables
res1 = x1'-x3
res2 = ...
res3 = x3' - a1 x2' - a2 x2 - k1 x3 - k2 x1
In all cases, I need a relationship around I', and would like Vs(t) to be a
step source, in this case Vs'(t) would become infinite ???

Any hints ?

I would substitute I = (Vs-V)/Rs into your first equation and use lsode.
You would then have 2 d.e.'s:
x'(1) = x(2)
x'(2) = aVs - k1 x(2) - b x(1)
where:
a = a1/Rs and b = k2+a1/Rs

The initial conditions would be:
x(1)=0, x(2)=0
Don't worry about the infinite derivative, the imbalance in the initial voltage 
should take care of that.

_______________________________________________
Help-octave mailing list
address@hidden
https://mailman.cae.wisc.edu/listinfo/help-octave
Interesting. This works. In any case, the three variable cannot possibly work, since lsode is based on methods (ABM, BDF) that assume continuous solutions, and this is all they will generate. However, the formula Vs = V+Rs*I guarantees that one of V or I cannot possibly be continuous at any jump discontinuity of Vs. Thus the 3-variable approach cannot possibly work in any formulation since it would mandate that V, V' and I be continuous initially and at every interior point. In that regard, the conditions that I and I' vanish initially make the system inconsistent if they are meant to be used as part of an initial value problem. Your approach ignore those constraints and banished the potential discontinuities due to the step source on the right hand side of the first order ode as simple jump discontinuities, so the problem remains well posed. Here's a script that illustrates these points with an impulse function.

Thomas Shores

% DEtest.m

clear
global k = [1,2] # [k1,k2]
global a = [2,2] # [a1,a2]
global Rs = 0.5

function retval = heaviside(t)
retval = (t==0)*0.5 + (t>0);
end

function retval = Vs(t)
retval = heaviside(t-0.5)-heaviside(t-1);
end

function retval = Vsp(t)
retval = zeros(size(t)); # ignore any dirac delta function
end

function retval = fcn(x,t)
# here x = [V; Vp]
global k;
global a;
global Rs;

retval = [0;0];
retval(1) = x(2);
retval(2) = a(1)*(Vsp(t)-x(2))/Rs + a(2)*(Vs(t)-x(1))/Rs - k(1)*x(2) - k(2)*x(1);
end

% main: give it a spin
x0 = [0;0];
t = linspace(0,4,800);
x = lsode(@fcn,x0,t);
clf
plot(t',x(:,1),"-1;V(t);")
hold on, grid
plot(t',x(:,2),"-2;V'(t);")
plot(t',(Vs(t)'-x(:,1))/Rs,"-3;I(t);")
plot(t,Vs(t),"-4;Vs(t);")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]