RE: Solve[] handles the same system differently
- To: mathgroup at smc.vnet.net
- Subject: [mg40847] RE: [mg40841] Solve[] handles the same system differently
- From: "David Park" <djmp at earthlink.net>
- Date: Tue, 22 Apr 2003 06:42:50 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
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 "data" 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 -> 3300, VinX1 -> 0, parm1 -> -0.001, parm2 -> -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 -> (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 -> (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 -> 0.00035124 - 0.000288517 I}, {IdsX1 -> 0.00035124 + 0.000288517 I}} David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Joe Gwinn [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 -> 0.000234453}, {IdsX1 -> 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