Followup. After the code posted in the previous post, I did: In [43]: J.det() Out[43]: 0
I don't beleave that! The jacobian of that transformation cannot be zero! Kjetil On Thu, Aug 23, 2012 at 3:21 PM, Kjetil brinchmann Halvorsen <[email protected]> wrote: > I am using sympy to (try to) calculate a Jacobian matrix. It seems to > work, and I beleave correctly, but}is giving an error I dont > understand. > I don't know much python, so these surely can be simplified! > Code: > > a11,a12,a13,a22,a23,a33= symbols('a11 a12 a13 a22 a23 a33', real=True) > x11,x12,x13,x22,x23,x33= symbols('x11 x12 x13 x22 x23 x33', real=True) > A = Matrix([[a11,a12,a13],[a12,a22,a23],[a13,a23,a33]]) > > In [7]: X = Matrix([[x11,x12,x13],[x12,x22,x23],[x13,x23,x33]]) > Y = A*X+X*A > J = Matrix(6,6,lambda i,j:0) # This is for the Jacobian > vars = [x11,x12,x13,x22,x23,x33] > > In [38]: for i in [0,1,2]: > ....: for j in [0,1,2]: > ....: k = 3*i+j > ....: for l in [0,1,2,3,4,5]: > ....: J[k,l] = diff(Y[i,j], vars[l]) > ....: > --------------------------------------------------------------------------- > IndexError Traceback (most recent call last) > <ipython-input-38-46a5a73fca3d> in <module>() > 3 k = 3*i+j > 4 for l in [0,1,2,3,4,5]: > ----> 5 J[k,l] = diff(Y[i,j], vars[l]) > 6 > > /home/kjetil/py/sympy/sympy/sympy/sympy/matrices/matrices.pyc in > __setitem__(self, key, value) > 3537 > 3538 > -> 3539 i, j = self.key2ij((i,j)) > 3540 if not (i>=0 and i<self.rows and j>=0 and j < > self.cols): > 3541 raise IndexError("Index out of range: > a[%s]" % (key,)) > > /home/kjetil/py/sympy/sympy/sympy/sympy/matrices/matrices.pyc in > key2ij(self, key) > 1102 i, j = [(k + n) if k < 0 else k for k, n in zip(key, > (self.rows, self.cols))] > 1103 if not (i>=0 and i<self.rows and j>=0 and j < self.cols): > -> 1104 raise IndexError("Index out of range: a[%s]"%repr(key)) > 1105 return i,j > 1106 > > IndexError: Index out of range: a[(6, 0)] > > But J seems to be correct: > > In [40]: J > Out[40]: > ⎡2⋅a₁₁ 2⋅a₁₂ 2⋅a₁₃ 0 0 0 ⎤ > ⎢ ⎥ > ⎢ a₁₂ a₁₁ + a₂₂ a₂₃ a₁₂ a₁₃ 0 ⎥ > ⎢ ⎥ > ⎢ a₁₃ a₂₃ a₁₁ + a₃₃ 0 a₁₂ a₁₃⎥ > ⎢ ⎥ > ⎢ a₁₂ a₁₁ + a₂₂ a₂₃ a₁₂ a₁₃ 0 ⎥ > ⎢ ⎥ > ⎢ 0 2⋅a₁₂ 0 2⋅a₂₂ 2⋅a₂₃ 0 ⎥ > ⎢ ⎥ > ⎣ 0 a₁₃ a₁₂ a₂₃ a₂₂ + a₃₃ a₂₃⎦ > > In [41]: > > ??? > > Kjetil > > > > > -- > "If you want a picture of the future - imagine a boot stamping on the > human face - forever." > > George Orwell (1984) -- "If you want a picture of the future - imagine a boot stamping on the human face - forever." George Orwell (1984) -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
