Ok, I'll see if I can put together a simple test case. On Thursday, April 2, 2015 at 2:47:27 PM UTC-7, Sudhanshu Mishra wrote: > > Hi, > > This seems interesting and might be a bug. Could you please create an > issue here <https://github.com/sympy/sympy/issues> with your *equations* > and traceback. > > Sudhanshu Mishra > > On Fri, Apr 3, 2015 at 3:07 AM, G B <[email protected] <javascript:>> > wrote: > >> It looks like the root cause of this is that the Function doesn't have >> all the assumptions set. I don't fully understand how assumptions are >> wired in, and I know the assumptions system is in flux, but it looks like >> None is a flag for "exists but not set". Would it be better to have FactKB >> inherit from defaultdict, rather than dict, so that all unset assumptions >> return None? That could prevent these types of exceptions... >> >> >> If I do: >> >> Qinit=symbols('Qinit') >> InitCond1.subs(Q(0),Qinit) >> >> then solve succeeds. >> >> >> Looking at Q(0)._assumptions: >> {'commutative': True, 'complex': True} >> >> And Qinit._assumptions: >> {'algebraic': None, >> 'antihermitian': None, >> 'commutative': True, >> 'complex': None, >> 'even': None, >> 'finite': None, >> 'hermitian': None, >> 'imaginary': None, >> 'infinite': None, >> 'integer': None, >> 'irrational': None, >> 'negative': None, >> 'nonnegative': None, >> 'nonpositive': None, >> 'odd': None, >> 'polar': None, >> 'positive': None, >> 'rational': None, >> 'real': None, >> 'zero': None} >> >> >> >> >> >> On Tuesday, March 31, 2015 at 7:44:52 PM UTC-7, G B wrote: >> >>> Hi-- >>> >>> I'm trying to solve a system of 2 equations. They are the result of >>> substituting initial conditions into the solution returned from dsolve are >>> of the form f(0)=expr, where f is a Function, and 0 is zero. >>> >>> I'm calling it with solve([InitCond1,InitCond2],(C1,C2)) >>> >>> What is interesting is that it fails the first time, but succeeds when I >>> call it a second time and then succeeds every time after. I haven't >>> verified the that the solution is accurate. >>> >>> The traceback follows: >>> >>> ---------------------------------------------------------------------------KeyError >>> Traceback (most recent call >>> last)//anaconda/lib/python3.4/site-packages/sympy/core/assumptions.py in >>> getit(self) 216 try:--> 217 return >>> self._assumptions[fact] 218 except KeyError: >>> KeyError: 'zero' >>> >>> During handling of the above exception, another exception occurred: >>> KeyError Traceback (most recent call >>> last)//anaconda/lib/python3.4/site-packages/sympy/core/assumptions.py in >>> getit(self) 216 try:--> 217 return >>> self._assumptions[fact] 218 except KeyError: >>> KeyError: 'zero' >>> >>> During handling of the above exception, another exception occurred: >>> KeyError Traceback (most recent call >>> last)//anaconda/lib/python3.4/site-packages/sympy/core/assumptions.py in >>> getit(self) 216 try:--> 217 return >>> self._assumptions[fact] 218 except KeyError: >>> KeyError: 'real' >>> >>> During handling of the above exception, another exception occurred: >>> TypeError Traceback (most recent call >>> last)<ipython-input-30-b2993472ce67> in <module>()----> 1 >>> initConds=solve([InitCond1,InitCond2],(C1,C2)) 2 initConds >>> //anaconda/lib/python3.4/site-packages/sympy/solvers/solvers.py in solve(f, >>> *symbols, **flags) 909 solution = _solve(f[0], *symbols, >>> **flags) 910 else:--> 911 solution = _solve_system(f, >>> symbols, **flags) 912 913 # >>> //anaconda/lib/python3.4/site-packages/sympy/solvers/solvers.py in >>> _solve_system(exprs, symbols, **flags) 1446 i, d = _invert(g, >>> *symbols) 1447 g = d - i-> 1448 g = g.as_numer_denom()[0] >>> 1449 if manual: 1450 failed.append(g) >>> //anaconda/lib/python3.4/site-packages/sympy/core/add.py in >>> as_numer_denom(self) 433 denoms, numers = [list(i) for i in >>> zip(*iter(nd.items()))] 434 n, d = self.func(*[Mul(*(denoms[:i] >>> + [numers[i]] + denoms[i + 1:]))--> 435 for i in >>> range(len(numers))]), Mul(*denoms) 436 437 return >>> _keep_coeff(ncon, n), _keep_coeff(dcon, d) >>> //anaconda/lib/python3.4/site-packages/sympy/core/add.py in <listcomp>(.0) >>> 433 denoms, numers = [list(i) for i in zip(*iter(nd.items()))] >>> 434 n, d = self.func(*[Mul(*(denoms[:i] + [numers[i]] + denoms[i + >>> 1:]))--> 435 for i in range(len(numers))]), Mul(*denoms) >>> 436 437 return _keep_coeff(ncon, n), _keep_coeff(dcon, d) >>> //anaconda/lib/python3.4/site-packages/sympy/core/operations.py in >>> __new__(cls, *args, **options) 39 return args[0] 40 >>> ---> 41 c_part, nc_part, order_symbols = cls.flatten(args) 42 >>> is_commutative = not nc_part 43 obj = >>> cls._from_args(c_part + nc_part, is_commutative) >>> //anaconda/lib/python3.4/site-packages/sympy/core/mul.py in flatten(cls, >>> seq) 181 a, b = b, a 182 assert not a is >>> S.One--> 183 if not a.is_zero and a.is_Rational: 184 >>> r, b = b.as_coeff_Mul() 185 if b.is_Add: >>> //anaconda/lib/python3.4/site-packages/sympy/core/assumptions.py in >>> getit(self) 219 if self._assumptions is >>> self.default_assumptions: 220 self._assumptions = >>> self.default_assumptions.copy()--> 221 return _ask(fact, self) >>> 222 223 getit.func_name = as_property(fact) >>> //anaconda/lib/python3.4/site-packages/sympy/core/assumptions.py in >>> _ask(fact, obj) 262 pass 263 else:--> 264 a = >>> evaluate(obj) >>> >>> ... >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> Visit this group at http://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/3003cfc4-3c43-4cd1-917f-592cff17c7a3%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/3003cfc4-3c43-4cd1-917f-592cff17c7a3%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > >
-- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/6042d705-f92f-43ba-9d25-7c8a49c315c4%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
