파이썬으로 간소화 혼란스러워. I는 다음 this guide하고 .. 플로팅 난 그냥 파이썬 함께 밖으로 시작하고 그래서 내가 조금 해요</p> <p>기본 잠재적 인 흐름 (유니폼, 소스/싱크, 소용돌이 등)에 대한 유선 및 속도 잠재력을 플롯하려고
제가def cylinder_stream_function(U=1, R=1):
r = sympy.sqrt(x**2 + y**2)
theta = sympy.atan2(y, x)
return U * (r - R**2/r) * sympy.sin(theta)
을하고 작동이 함수를 사용하여 실린더 주위의 흐름에 대한 유선을 그릴 수있다. 내가 균일 한 흐름
return U * r * sympy.cos(theta)
에 return 문을 변경할 때 나는 반환 객체의 형태를 확인
Traceback (most recent call last):
File "test.py", line 42, in
<module>
plot_streamlines(ax, u, v)
File "test.py", line 32, in plot_streamlines
ax.streamplot(X, Y, u(X, Y), v(X, Y), color='cornflowerblue')
File "/usr/local/lib/python3.6/site-packages/matplotlib/__init__.py",
line 1710, in inner
return func(ax, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/matplotlib/axes/_axes.py",
line 4688, in streamplot
integration_direction=integration_direction)
File "/usr/local/lib/python3.6/site-packages/matplotlib/streamplot.py",
line 136, in streamplot
if (u.shape != grid.shape) or (v.shape != grid.shape):
AttributeError: 'int' object has no attribute 'shape'
다음과 같은 오류를 얻을 수 있으며 첫 번째 return 문 및 <class 'sympy.core.symbol.Symbol'>
와와 <class 'sympy.core.mul.Mul'>
입니다 두 번째 것. 아마 이것이 작동하지 않는 이유와 관련이 있을지 모르지만 어떻게 확신 할 수 없습니까?
내가 가진 유선을 플롯
import numpy as np
import matplotlib.pyplot as plt
import sympy
from sympy.abc import x, y
def uniform_flow_stream_function(U=1):
r = sympy.sqrt(x**2 + y**2)
theta = sympy.atan2(y, x)
return U * r * sympy.sin(theta)
def velocity_field(psi):
u = sympy.lambdify((x, y), psi.diff(y), 'numpy')
v = sympy.lambdify((x, y), -psi.diff(x), 'numpy')
return u, v
def plot_streamlines(ax, u, v, xlim=(-4, 4), ylim=(-4, 4)):
x0, x1 = xlim
y0, y1 = ylim
# create a grid of values
Y, X = np.ogrid[y0:y1:100j, x0:x1:100j]
ax.streamplot(X, Y, u(X, Y), v(X, Y), color='cornflowerblue')
psi = uniform_flow_stream_function()
u, v = velocity_field(psi)
fig, ax = plt.subplots(figsize=(5, 5))
plot_streamlines(ax, u, v)
plt.show()
누군가가 내가이 일을 얻을 수있는 방법이 작동하지 않는 이유를 내가 이해하고시겠습니까 다음? 고맙습니다!
다음 번에는 코드 블록을 사용하여 추적 코드를 포맷 해두면 훨씬 쉽게 읽을 수 있습니다. – Evert