python计算球坐标系的积分_python – n球面坐标系到笛卡尔坐标系
您可以通過記憶中間產品來加速您的原始代碼,即
def ct_dynamic(r,alpha):
"""alpha: the n-2 values between [0,2\pi)
"""
x = np.zeros(len(alpha) + 1)
s = 1
for e,a in enumerate(alpha):
x[e] = s*np.cos(a)
s *= np.sin(a)
x[len(alpha)] = s
return x*r
但仍然在速度上失去基于numpy的方法
def ct(r,arr):
a = np.concatenate((np.array([2*np.pi]),arr))
si = np.sin(a)
si[0] = 1
si = np.cumprod(si)
co = np.cos(a)
co = np.roll(co,-1)
return si*co*r
>>> n = 10
>>> c = np.random.random_sample(n)*np.pi
>>> all(ct(1,c) == ct_dynamic(1,c))
True
>>> timeit.timeit('from __main__ import coord_transform_n as f,c; f(2.4,c)',number=10000)
2.213547945022583
>>> timeit.timeit('from __main__ import ct_dynamic as f,number=10000)
0.9227950572967529
>>> timeit.timeit('from __main__ import ct as f,number=10000)
0.5197498798370361
總結
以上是生活随笔為你收集整理的python计算球坐标系的积分_python – n球面坐标系到笛卡尔坐标系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python编写简单赌博游戏赏析及注意事
- 下一篇: java异步处理同步化_java 异步查