Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2012 12:06:53

dd67
От:
Зарегистрирован: 2011-12-22
Сообщения: 35
Репутация: +  1  -
Профиль   Отправить e-mail  

векторизовать матрицу

Можно ли векторизовать символьные выражение, сожержащее sympy.Matrix?

>>> dx=x**2+y**2
>>> dy=2*x*y
>>> d=sympy.Matrix([dx,dy])
>>> D=sympy.lambdify((x,y),d,modules='numpy')
>>> D(1,2)
matrix([[5],
        [4]])
>>> t=numpy.array([1,2,3])
>>> u=numpy.array([4,5,6])
>>> D(t,u)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <lambda>
  File "/usr/lib/pymodules/python2.7/numpy/matrixlib/defmatrix.py", line 261, in __new__
    raise ValueError, "matrix must be 2-dimensional"
ValueError: matrix must be 2-dimensional



Отредактировано dd67 (Июнь 20, 2012 19:22:36)

Офлайн

#2 Июнь 20, 2012 19:21:41

dd67
От:
Зарегистрирован: 2011-12-22
Сообщения: 35
Репутация: +  1  -
Профиль   Отправить e-mail  

векторизовать матрицу

возникло такое решение (без sympy.Matrix, возвращать numpy матрицу):

$ cat test.py 
#!/usr/bin/python
import sympy, numpy
x,y=sympy.symbols('x y')
dx=x**2+y**2
dy=2*x*y
def D(t,u):
    return numpy.array([sympy.lambdify((x,y),dx,modules='numpy')(t,u),sympy.lambdify((x,y),dy,modules='numpy')(t,u)])
print D(1,2)
t=numpy.array([1,2,3])
u=numpy.array([5,6,7])
print D(t,u)
$ ./test.py 
[5 4]
[[26 40 58]
 [10 24 42]]





Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version