MathGroup Archive 2003

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

Search the Archive

Re: RE: Solve[] handles the same system differently

  • To: mathgroup at smc.vnet.net
  • Subject: [mg40886] Re: [mg40847] RE: [mg40841] Solve[] handles the same system differently
  • From: Bobby Treat <drmajorbob+MathGroup3528 at mailblocks.com>
  • Date: Wed, 23 Apr 2003 01:16:29 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Ah ha!  The trick is to think in terms of variables versus parameters 
 from the start, rather than letting Mathematica impose the distinction 
on us.

Bobby

-----Original Message-----
From: David Park <djmp at earthlink.net>
To: mathgroup at smc.vnet.net
Subject: [mg40886] [mg40847] RE: [mg40841] Solve[] handles the same system 
differently

Joe, I am not certain of the exact answer to your question. The 
internal workings of Solve are sometimes difficult to understand. But 
in solving equations it often helps if you can make the equations exact 
and if you take the &quot;data&quot; out of the equation system and 
substitute it later. Any approximate number in an equation should 
probably be treated as a data parameter. (Similarly, do not put units 
in an equation but put them in the data.) So I would write your second 
set of equations as... data = {Rx -&gt; 3300, VinX1 -&gt; 0, parm1 
-&gt; -0.001, parm2 -&gt; -1.5}; eqns = {VgsX1 == IdsX1 Rx, IdsX1 == 
parm1(1 - (VinX1 - VgsX1)/parm2)^2}; Then the following works nicely... 
sols = Solve[eqns, IdsX1, VgsX1] sols /. data {{IdsX1 -&gt; 
(1/(2*parm1*Rx^2))*(parm2^2 - 2*parm1*parm2*Rx + 2*parm1*Rx*VinX1 - 
parm2*Sqrt[parm2^2 - 4*parm1*parm2*Rx + 4*parm1*Rx*VinX1])}, {IdsX1 
-&gt; (1/(2*parm1*Rx^2))*(parm2^2 - 2*parm1*parm2*Rx + 2*parm1*Rx*VinX1 
+ parm2*Sqrt[parm2^2 - 4*parm1*parm2*Rx + 4*parm1*Rx*VinX1])}} {{IdsX1 
-&gt; 0.00035124 - 0.000288517 I}, {IdsX1 -&gt; 0.00035124 + 
0.000288517 I}} David Park djmp at earthlink.net 
http://home.earthlink.net/~djmp/ From: Joe Gwinn 
To: mathgroup at smc.vnet.net
[mailto:joegwinn at attbi.com] To: mathgroup at smc.vnet.net I am running 
Mathematica 4.0.1.0 under MacOS 9.1, and have encountered a little 
mystery: The following works OK: In[15]:= Solve[{Rx == 3300, VinX1 == 
0, IdsX1 == 0.001(1 - (VinX1 - Rx*IdsX1)/(-1.5))^2}, {IdsX1}] Yielding: 
Out[15]= {{IdsX1 -&gt; 0.000234453}, {IdsX1 -&gt; 0.00088125}} When I 
rearrange the equation system a bit, it fails to find a solution: 
In[16]:= Solve[{Rx == 3300, VinX1 == 0, VgsX1 == Rx*IdsX1, IdsX1 == 
0.001(1 - (VinX1 - VgsX1)/(-1.5))^2}, {IdsX1}] Out[16]= {} What's going 
on? Why does a little algebra (the creation of the variable VgsX1) 
cause a problem? In[16] was generated by copying In[15] and doing some 
editing. No error messages were generated by either. Thanks, Joe Gwinn 


  • Prev by Date: Re: couple of small problems
  • Next by Date: Re: Re: Solve[] handles the same system differently
  • Previous by thread: RE: Solve[] handles the same system differently
  • Next by thread: Re: Re: Solve[] handles the same system differently