2016-06-03 5 views
1

이 프로그램을 실행하려고하면 속성 오류가 발생합니다. 나는 내가 DIFF()가 작동하는지 나는 또한 샘플 코드를 시도하거나 순이익이 경우 수입 수학 수입 NumPy와에서 일하지이 오류는 무엇입니까 : 'matrix'객체에는 'diff'속성이 없습니다.

import math 
import numpy as np 
from sympy import * 
from sympy import diff 
import sympy as sp 

p=np.matrix([[0],[0],[0],[1]]) 
pdash=p 
zi=Matrix(2, 1, lambda i,j: Symbol('z%d' % (i+1))) 
xi=Matrix(2, 1, lambda i,j: Symbol('x%d' % (i+1))) 
alphai=Matrix(2,1, lambda i,j: Symbol('a%d' % (i+1))) 
thetai=Matrix(2,1, lambda i,j: Symbol('t%d' % (i+1))) 
transformed=np.matrix([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]) 
def transformation_fn(zi,xi,thetai,alphai): 
    ca=cos((alphai)) 
    sa=sin((alphai)) 
    ct=cos((thetai)) 
    st=sin((thetai)) 
    transformation=np.matrix([[ct,-st*ca,st*sa,xi*ct], 
           [st,ct*ca,-ct*sa,xi*st], 
           [0,sa,ca,zi], 
           [0,0,0,1]]) 
    return transformation 

for z,x,t,a in zip(zi,xi,thetai,alphai): 
    transformed=transformed*transformation_fn(z,x,t,a) 
e=transformed*p 
jacobian=e.diff(t1) 
print jacobian 

anything.Thanks를 놓치면 그래서 용서하시기 바랍니다 파이썬에 새로운 오전 SP

x, y, e1 = symbols('x y e1') 
e=Matrix(2,1,lambda i,j:Symbol('e%d'%(i+1))) 
I=np.matrix([[1 ,0 ], 
      [0 ,1 ]]) 
k=I*e 
print k.diff(e1) 
+0

그것은 단지'DIFF()가 호출에는 회원의 방법은''matrix' 객체가 없음을 의미한다. 간단히'matrix_object.diff()'를 할 수 없습니다 – SilentMonk

+2

'jacobian = np.diff (e, t1)'을 원하십니까? http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.diff.html – EdChum

+0

@SilentMonk 감사합니다.하지만 제가 차별화를 할 수있는 방법이 있습니까? diff()를 추가하여 무작위 코드로 잘 작동하는지 여부를 확인합니다. – Yoyo

답변

0

만큼 sympy 수입 DIFF 가져 오기 sympy에서 sympy * 에서 은 코멘트 상징적 분화가 symPy 행렬 객체에 적용 할 수 없다고한다. 각 항목에 별도로 적용하십시오. 예 : 두 번째 라인이 항목에 대해 t1e의 항목 유도체되는 e 같은 형태의 매트릭스를 구축

t1 = Symbol('t1') 
jacobian = Matrix(*e.shape, lambda i,j: e[i,j].diff(t1)) 

.

는 (당신은 실제로 여기에 필요한 첫 번째 라인을 만든 코드에 t1을 정의하지 않습니다.)

+0

'e. applyfunc (lambda : diff (i, t1))' – asmeurer