MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Why doesn't Mathematica solve this simple differential equation?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69363] Re: [mg69317] Re: Why doesn't Mathematica solve this simple differential equation?
  • From: "Chris Chiasson" <chris at chiasson.name>
  • Date: Sat, 9 Sep 2006 03:26:40 -0400 (EDT)
  • References: <eddqq8$3vq$1@smc.vnet.net> <edjh7r$luh$1@smc.vnet.net> <200609060829.EAA12936@smc.vnet.net>

http://forums.wolfram.com/mathgroup/archive/1998/Jan/msg00083.html

does that message help any?



On 9/6/06, Joseph Gwinn <JoeGwinn at comcast.net> wrote:
> In article <edjh7r$luh$1 at smc.vnet.net>,
>  Joseph Gwinn <JoeGwinn at comcast.net> wrote:
>
> > In article <eddqq8$3vq$1 at smc.vnet.net>,
> >  Joseph Gwinn <JoeGwinn at comcast.net> wrote:
> >
> > > Here is the system I'm trying to solve.  It's an electrical circuit
> > > consisting of a capacitor C1 (with initial voltage 4.0 volts), a
> > > resistor R1, and a diode in series.
> >
> > I just read the Mathematica 5.2 NDSolve Advanced Documentation section
> > on  Differential Algebraic Equations.
> >
> > It occurs to me that, aside from the typos, what may be happening is
> > that I'm handing Mathematica something that looks like a Differential
> > Algebraic Equation (DAE) of index exceeding 1, as Mathematica was able
> > to solve the system with one implicit equation (for the diode, with a
> > capacitor but no resistor).
>
> I now have a clean example of the problem:
>
> eqns41 = {Vc'[t] == -Il[t]/C1, Vc[t] == (R1 + R2)*Il[t], Vc[0] == Vo}
>
> eqns42 = eqns41 /. {C1 -> 1.0*10^-6, R1 -> 16, R2 -> 27, Vo -> 4.0}
>
> eqns42soln = NDSolve[eqns42, Vc, {t, 0, 1}]
>
> The above fails: "NDSolve::overdet: There are fewer dependent variables,
> {Vc[t]}, than equations, so the system is underdetermined."
>
> eqns41a = Eliminate[eqns41, Il[t]]
>
> eqns42a = eqns41a /. {C1 -> 1.0*10^-6, R1 -> 16, R2 -> 27, Vo -> 4.0}
>
> eqns42asoln = NDSolve[eqns42a, Vc, {t, 0, 1}]
>
> The above works.
>
> Eliminate[] cannot make a self-consistent system from an inconsistent
> system, so the original system must also be consistent.  Yet it fails.
>
> Does Mathematica think that this system is some kind of complicated DAE?
> Apparently, given that Eliminate[] solves the problem.  Why couldn't
> NDSolve do its own algabraic reduction?  The variable Il[t] was not
> requested as an output.
>
> I have a few more such examples, so the issue isn't restricted to this
> example.
>
> The other issue is that *all* combinations of real electronic components
> (that is, circuits) lead to a numerically solvable system of ODEs,
> because all circuits will do something real if constructed and tested.
> So, aside from eliminating silly mistakes, this should not be hard, and
> I'm trying to figure out the root cause of these random-appearing
> failures.  Mathematica is probably trying to do something that ordinary
> circuit simulators (such as SPICE) wouldn't dream of.
>
> Joe Gwinn
>
>


-- 
http://chris.chiasson.name/


  • Prev by Date: Re: difficulties with xml
  • Next by Date: Re: numerical integration
  • Previous by thread: Re: Why doesn't Mathematica solve this simple differential equation?
  • Next by thread: Re: Why doesn't Mathematica solve this simple differential equation?