Hi,

On 16 Feb., 10:37, jeal2 <[email protected]> wrote:
> Hello,
>
> I'm trying to use Python to solve (symbolically, for x, y and a0) the
> following set of three simultaneous equations:
> lam+2*y-a0*(1 - x/2)*x-0.005*x/2*x==0
> a0*(1 - x/2)*x-1*y-0.743436700916726*y==0
> x+y-conc==0
>
> I don't see any reason it should be mathematically difficult - just
> complicated and tedious - and Mathematica can do it without any
> trouble. But when I give it to Python it just starts working and
> doesn't finish. Do you have any idea why?
>
> >>> from sympy import *
> >>> lam=Symbol('lam')
> >>> a0=Symbol('a0')
> >>> conc=Symbol('conc')
> >>> x=Symbol('x')
> >>> y=Symbol('y')
>
> # this works ok:>>> solve([lam+2*y-a0*(1 - x/2)*x-0.005*x/2*x], [x])
>
> [(-(-4*(-4*y - 2*lam)/(0.005 - a0) + 4*a0**2/(0.005 - a0)**2)**(1/2)/2
> - a0/(0.005 - a0),), ((-4*(-4*y - 2*lam)/(0.005 - a0) + 4*a0**2/(0.005
> - a0)**2)**(1/2)/2 - a0/(0.005 - a0),)]
>
> # but this doesn't
>
> >>> solve([lam+2*y-a0*(1 - x/2)*x-0.005*x/2*x, a0*(1 - 
> >>> x/2)*x-1*y-0.743436700916726*y, x+y-conc], [x, y,a0])
>
> If you have any ideas I would be very grateful!
> Thanks.

With current master I get this traceback:

In [4]: eqs = [lam+2*y-a0*(1 - x/2)*x-0.005*x/2*x, a0*(1 - x/
2)*x-1*y-0.743436700916726*y, x+y-conc]

In [5]: sym = [x,y,a0]

In [6]: solve(eqs, sym)
---------------------------------------------------------------------------
ExactQuotientFailed                       Traceback (most recent call
last)

/home/one/src/sympy/<ipython console> in <module>()

/home/one/src/sympy/sympy/solvers/solvers.pyc in solve(f, *symbols,
**flags)
    379                 soln = solve_linear_system(matrix, *symbols,
**flags)
    380             else:
--> 381                 soln = solve_poly_system(polys)
    382
    383             # Use swap_dict to ensure we return the same type
as what was


/home/one/src/sympy/sympy/solvers/polysys.pyc in
solve_poly_system(system, *gens)
    104         raise TypeError("expected iterable container, got %s"
% system)
    105
--> 106     solutions = solve_reduced_system(system, gens, entry=True)
    107
    108     if solutions is None:

/home/one/src/sympy/sympy/solvers/polysys.pyc in
solve_reduced_system(system, gens, entry)
     55     def solve_reduced_system(system, gens, entry=False):
     56         """Recursively solves reduced polynomial systems. """
---> 57         basis = groebner(system, gens, polys=True)
     58
     59         if len(basis) == 1 and basis[0].is_ground:

/home/one/src/sympy/sympy/polys/polytools.pyc in groebner(F, *gens,
**args)
   2373         F[i] = sdp_from_dict(f.rep.to_dict(), order)
   2374
-> 2375     G = sdp_groebner(F, lev, order, dom)
   2376
   2377     G = [ Poly(DMP(dict(g), dom, lev), *gens) for g in G ]

/home/one/src/sympy/sympy/polys/groebnertools.pyc in sdp_groebner(F,
u, O, K)
    620
    621         p = sdp_mul_term(p, (monomial_div(M, p_LM),
K.quo(K.one, sdp_LC(p, K))), u, O, K)
--> 622         q = sdp_mul_term(q, (monomial_div(M, q_LM),
K.quo(K.one, sdp_LC(q, K))), u, O, K)
    623
    624         h = normal(sdp_sub(p, q, u, O, K), G)

/home/one/src/sympy/sympy/polys/algebratools.pyc in quo(self, a, b)
    462         """Quotient of `a` and `b`, implies `__floordiv__`.
"""
    463         if a % b:
--> 464             raise ExactQuotientFailed('%s does not divide %s
in %s' % (b, a, self))
    465         else:
    466             return a // b

ExactQuotientFailed: DMP([[Fraction(-1471256443825,
2309382115472961)], [Fraction(294251288765000, 2309382115472961),
Fraction(0, 1)]], QQ) does not divide DMP([[Fraction(1, 1)]], QQ) in
QQ[conc,lam]

So it seems related to polynomials. Mateusz, any idea why this fails?
Maybe the operation should rather be done over RR[conc,lam]?

Vinzent

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to