2017-03-31 8 views
-1

meshgrid를 통해 기호식을 평가하고 싶습니다.는 파이썬에서 meshgrind를 통해 기호식을 계산합니다.

import sympy as sym 
import numpy as np 

x,y = sym.symbols('x,y') 
test = sym.gamma(x)/sym.sqrt(y) 

X = np.linspace(start = 1, stop = 2) 
Y = np.linspace(start = 4, stop = 7) 

X, Y = np.meshgrid(X, Y) 

Z = test.evalf(subs = {x : X, y: Y}) 

내가 생각하고있는 것을 전혀없는 많은 많은 치수를 가진 개체를 만드는 데 그 파이썬 시도를 보인다 : 내 testcode는 다음과 같습니다. 함수 인자에 대한 반복문없이이 작업을 수행 할 수있는 방법이 있습니까?

최저

당신은 수치 평가에 관심이있는 것처럼

답변

0

, sympy의 사용은 그 기능 또한 단일 통화를 통해 ndarray의 모든 요소에 적용 할 수 NumPy와/scipy에 비해 당신에게 어떤 이점을 제공하지 않습니다.

from scipy.special import gamma 
from numpy import sqrt 

test = lambda x, y: gamma(x)/sqrt(y) 

Z = text(X, Y) 
+0

답장을 보내 주셔서 감사합니다. 이것은 간단한 예일뿐입니다. 추측 하건데, 평가 될 표현식이 오히려 길고 평가하기 전에 재 배열되기 때문에 symp 패키지가 필요합니다. 위에서 람다 함수를 사용하면 이전과 같은 오류가 발생합니다. – Daniel

+0

@ 대니얼 만약 당신이 sympy로 제한된다면,'x'가 (스칼라) 기호로 선언되고 그것을 numpy 행렬로 대체하려고 시도하기 때문에 당신이하려고하는 것은 의미가 없다 (sympy에!). 'for' 루프를 사용하여'X','Y' 원소의 각 쌍을 살펴보고 표현식을 평가해야합니다. 시도해보고자하는 또 다른 접근법은'sympy.lambdify'를 사용하여 sympy 표현식을 numpy 표현식으로 변환하는 것입니다. – Stelios