擅长:python、mysql、java
<p>你不能在问题的时间维度上对扩散计算进行矢量化,这仍然需要一个循环。这里唯一明显的优化是用调用<code>numpy.diff</code>函数(它是预编译的C)来代替拉普拉斯计算,这样你的热方程解算器变成:</p>
<pre><code>def heat(D,u0,q,tdim):
xdim = np.size(u0)
Z = np.zeros([xdim,tdim])
Z[:,0]=u0;
for i in range(1,tdim):
Z[1:-1,i]=Z[1:-1,i-1] + D*q*np.diff(Z[:,i-1], 2)
return Z
</code></pre>
<p>对于非平凡的空间大小,您应该会看到相当大的加速。在</p>