Can we define our own simplify method for Vector that simplify(Vector) will call? Also, if Vector will is a subclass of Expr, how can we avoid something like unit_vector * unit vector or Scalar+Vector?
On Tue, Jun 11, 2013 at 1:40 PM, Stefan Krastanov < krastanov.ste...@gmail.com> wrote: > about immutability and reference frame: I guess I do not understand > the details of what you describe. Anyway, I will not be against > immutability if it does not mess up with `__eq__` and `__hash__` so it > depends on the implementation. > > about Vector: if it is not a subclass of Expr it will not be useful > outside of mechanics. For instance > symplify(sin(asin(phi))*unit_vector) will just raise an error instead > of return phi*unit_vector. > > > > On 11 June 2013 02:39, Gilbert Gede <gilbertg...@gmail.com> wrote: > > Stefan, > > I think I disagree about Reference Frames being immutable. If you are > going > > to create a series of Reference Frames when performing successive > rotations, > > you are going to need to need to be able to modify the original frame to > > point to the new frames. There is a similar issue for setting the angular > > velocity of a Reference Frame after it is created. > > > > Also, do you think that Vector should be a subclass of Expr? > > > > -Gilbert > > > > > > On Mon, Jun 10, 2013 at 5:45 AM, Stefan Krastanov > > <krastanov.ste...@gmail.com> wrote: > >> > >> > @Stefan. I agree about the tree traversals part. However, I still feel > >> > there must be a way for the user to check if two scalar fields > expressed in > >> > different ways are mathematically equivalent. Could you suggest a > way? Maybe > >> > just another function? > >> > >> This is described in one of the first pages of the sympy > >> documentation: Checking for equality in general is mathematically > >> impossible. In practice most of the time one does `simplify(expr_a - > >> expr_b)` and sees whether he gets 0. In numerics one just plots the > >> difference. > >> > >> > Also, have a look at the __eq__ function of the current Vector class. > >> > >> The current Vector class is not really a part of SymPy. One of the > >> reasons that these two projects are useful is that they will make > >> mechanics and sympy more inter-operable so stuff like `simplify` can > >> be used seamlessly in mechanics. > >> > >> > I would really like atleast _some_ way of checking mathematical > >> > equality. > >> > >> As I mentioned above, there is already a way for that and the issues > >> surrounding it are described in the docs (well, the documentation can > >> be better, that is clear :) > >> > >> > >> Anyway, given all these issues I can not imagine an api similar to the > >> currently suggested one working well with sympy. Both ScalarField and > >> Vector will break most of sympy if they eagerly eat all expressions > >> that are added to them. Unrelated to that, ScalarField is ill defined > >> because all the confusion around reference frames and coordinate > >> systems and reuse of Symbols. Reference Frames and/or Coordinate > >> Systems are represented as mutable objects which is nonsensical > >> mathematically (one does not change how to references relate (one > >> might want to parametrize something wrt time, but this is not the > >> same))... > >> > >> @Sachin and Prasoon, can you work together on the next iteration of > >> the design that is meant to fix these issues? When would you be able > >> to show it? > >> > >> Multiple times I have suggested partial/fragmented designs similar to > >> `diffgeom`. While some parts of `diffgeom` have no place here, some of > >> the ideas (the representation of general fields based on sympy > >> expressions containing base fields) could be helpful in preserving all > >> the invariants important for sympy. Do you want me to provide a more > >> complete suggestion on which you can base yours, or do you prefer to > >> continue on your own for the moment? > >> > >> -- > >> 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?hl=en-US. > >> For more options, visit https://groups.google.com/groups/opt_out. > >> > >> > > > > -- > > 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?hl=en-US. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "sympy" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sympy/t-Je0beTIIU/unsubscribe?hl=en-US. > To unsubscribe from this group and all its topics, 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?hl=en-US. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- 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?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.