On Tue, May 8, 2012 at 2:27 PM, phneoix <[email protected]> wrote:
> values={T: 300, a: 3, f: 6, W: 200}
>
> print sy.solve([
> sy.Eq(f, m*a).subs(values),
> sy.Eq(T, f*d).subs(values),
> sy.Eq(W, m*g).subs(values)
> ])
>
>>>> For nonlinear systems of equations, symbols should be
> given as a list so as to avoid ambiguity in the results.
> solve sorted the symbols as [d, g, m]
> [(50, 100, 2)]
>
>
> for ssolve function i am getting...
Make sure you are in the current master and that your ssolve looks like this:
def ssolve(s, *v):
"""
Solve lines of equations as a set of equations:
>>> from sympy.my import ssolve
>>> ssolve('''
... y=x+3
... x+y=4''')
{x: 1/2, y: 7/2}
Any line containing an '?' will be ignored.
>>> ssolve('''
... y=x+3
... y=4
... x=?''')
{x: 1, y: 4}
"""
from sympy import Eq, solve, Tuple
eq=[]
for li in [si for si in s.strip().splitlines() if si]:
li.replace('==','=')
if '?' in li: continue
if '=' in li: eq.append(Eq(*[S(p) for p in li.split('=')]))
else: eq.append(S(li))
syms = (v or list(Tuple(*eq).free_symbols))
soln = solve(eq, *syms)
if type(soln) is dict:
return soln
if len(soln) == 1:
return dict(zip(syms, soln[0]))
else:
return [dict(zip(syms, s)) for s in soln]
ans = ssolve('''
f=a*m
W=g*m
T=d*f
m=?
f=6.0
a=3.0
W=200
g=?
T=300
d=?
''')
>>> print filldedent(ans)
{f: 6.00000000000000, m: 2.00000000000000, W: 200.000000000000, d:
50.0000000000000, a: 3.00000000000000, g: 100.000000000000, T:
300.000000000000}
/c
--
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.