Thanks David for the reply. It's a lot better now On Mon, Oct 28, 2019 at 6:24 PM David Bailey <[email protected]> wrote:
> On 28/10/2019 11:03, Ash wrote: > > Hello > I am trying to develop equations of motion using sympy of a complex > system. It takes 4-5 minutes to get the mass matrix (M) and coriolis vector > (C). Hence I decided to use sympy's codegen and try to make it fast. > I can write my equations as > > d^2 *q*/ dt^2 = M_inverse (Tau - C - G) > but M, C, Tau (torque) and G(gravity) are defined with respect to state > variables and its derivatives. And I cant figure out how to do it. > > I am attaching a simple two degree of freedom planar robot's code for > easy understanding of my problem. My state variables are the angles q1(t) > and q2(t) (dynamic symbols). There are other variables like lengths, mass, > inertia of the links which are defined as symbols. M(q(t)), C(q(t), dq(t)), > G(q(t)) matrices are derived symbolically (line 14). My doubt is if I want > to play around with the numerical values of the variables in M, C, and G, > how can I efficiently generate code and cythonize and build wrapper? > > Any help would be really appreciated > > I used to work as a Mathematica consultant, and I have seen a number of > Mathematica users concerned about performance issues. There are plenty of > subtle ways to make Mathematica code run slowly - often dramatically so. I > am sure the same is true of all algebra systems. > > As a simple example from Mathematica, simply ensuring that every component > of a numerical matrix is the same type can improve performance a lot. It is > so easy to write some zero components as 0 (i.e. an integer) as opposed to > 0.0 (a real). If you do that in a language like Fortran, the compiler will > automatically convert the components of the matrix to the type of the > variable that holds them, but not in Mathematica or (I think) SymPy. > > I am not quite sure if your basic problem is speed or formulating your > problem. However, if you have a problem with speed, it would definitely be > worth taking the time to extract a simple example of a SymPy calculation > that seems slow to you. > > David > > > -- > 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 view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/6248732c-59ee-3654-52d0-d779d267d769%40dbailey.co.uk > <https://groups.google.com/d/msgid/sympy/6248732c-59ee-3654-52d0-d779d267d769%40dbailey.co.uk?utm_medium=email&utm_source=footer> > . > -- R.B. Ashith Shyam <https://sites.google.com/site/rbashithshyam/> +44 7459909812 -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAGassLAy0id%3DQ6TWd-yuwHT1yj_LRiHNY24q0hfL26nq6JxSzA%40mail.gmail.com.
