I agree, this could be helpful to many people. But first let's make sure we iron out all the bugs. And then I suppose one could re-write the expressions in a more user-friendly form? What do you propose, Chris?
On Friday, June 6, 2014 2:16:15 PM UTC+2, Christophe Bal wrote: > > Hello. > > All the receipts in this dicussion look very interesting.Maybe all of this > ones could be put in the official documentation. > > > Christophe BAL > > > 2014-06-06 13:34 GMT+02:00 Andrei Berceanu <andreib...@gmail.com > <javascript:>>: > >> The unflatten_mul function factorized the 2, but not the g, i.e. it >> returns >> >> 2(g*|psi1|**2 + g*|psi2|**2) >> >> instead of >> >> 2g*(|psi1|**2 + |psi2|**2) >> >> >> On Friday, June 6, 2014 1:07:26 PM UTC+2, F. B. wrote: >> >>> >>> >>> On Friday, June 6, 2014 12:22:14 PM UTC+2, Andrei Berceanu wrote: >>>> >>>> Tnx! >>>> I think there is an error in the line (unbalanced paranthesis): >>>> >>>> return node.xreplace ({e: S.One, conjugate(e): S.One})*abs(e)**2) >>>> >>>> >>> Yes, sorry, just remove the last parenthesis. >>> >>> >>> >>>> Also, do you know how I can force the factorization of the 2*g to get >>>> 2*g(|psi1|**2 + |psi2|**2)? >>>> >>>> >>> Try this one: >>> >>> import collections >>> >>> def unflatten_mul(node): >>> d = collections.defaultdict(lambda: []) >>> new_args = [] >>> for arg in node.args: >>> if arg.args and arg.args[0].is_Number: >>> d[arg.args[0]].append(arg.func(*arg.args[1:])) >>> continue >>> new_args.append(arg) >>> print d >>> for key, item in d.items(): >>> new_args.append(Mul(key, Add(*item), evaluate=False)) >>> return node.func(*new_args, evaluate=False) >>> >>> >>> apply this function on *expr*, it should work. >>> >> -- >> 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 sympy+un...@googlegroups.com <javascript:>. >> To post to this group, send email to sy...@googlegroups.com <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/4fd95b6b-043a-4bc5-8767-e9be9d83d9aa%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/4fd95b6b-043a-4bc5-8767-e9be9d83d9aa%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 sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. 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/1fd9343c-c5ba-4000-b64c-1d825da0aad8%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.