Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

Is matrix calculus possible within sagemath?

asked 9 years ago

morph gravatar image

For example, is it possible to compute the following partial derivative in Sagemath:

Aij=eij(x)xi=(RTijRTiRTijRTiθi(tjti)0T1)

for

eij(x)=(RTij(RTi(tjti)tij)θjθiθij)

and

xTi=(tTi,θi) zTij=(tTij,θij)

The background shouldn't be important, but just for completeness: this example is an excerpt from Robotics, especially the problem of Pose Graph Simultaneous Mapping and Localization. xi defines a pose in R2 with translation ti and rotation angle θi, zij defines a transform between two poses and eij(x) defines the error between two poses, i.e. a transform between them.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
0

answered 8 years ago

dan_fulea gravatar image

It is unclear what Ri, Rij are in the context. (And of what shape.) But it should be possible. For instance:

sage: for k in range(10):    var('t%s' % k);
sage: Expression = t0*t1 - t3 + exp(t4*t5-t9^100) - sin(t7)    # sorry, i had a bad day...
sage: for k in range(10):
....:     print "diff( Expression, t%s ) = %s" % ( k, diff( Expression, eval( "t%s" % k ) ) )
....:     
diff( Expression, t0 ) = t1
diff( Expression, t1 ) = t0
diff( Expression, t2 ) = 0
diff( Expression, t3 ) = -1
diff( Expression, t4 ) = t5*e^(-t9^100 + t4*t5)
diff( Expression, t5 ) = t4*e^(-t9^100 + t4*t5)
diff( Expression, t6 ) = 0
diff( Expression, t7 ) = -cos(t7)
diff( Expression, t8 ) = 0
diff( Expression, t9 ) = -100*t9^99*e^(-t9^100 + t4*t5)
Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 9 years ago

Seen: 690 times

Last updated: Mar 03 '17