问题描述
为了清楚说明符号,假设 phi、f 和 var 是 sympy 数组。此外,假设 i,j,l,qi,qi2,functionnumber 的范围从 0 到 n。我需要做的是计算以下项的总和:
phi[i]*phi[j]*phi[l]*phi[qi]*phi[qi2]*sympy.diff(f[functionnumber],var[i],var[j],var[l] ],var[qi],var[qi2]).
执行此操作的一种方法如下:
import sympy as sp
summation=[]
for functionnumber in range(n):
tempsum=0
for i in range(n):
for j in range(n):
for l in range(n):
for qi in range(n):
for qi2 in range(n):
tempsum=tempsum + phi[i]*phi[j]*phi[l]*phi[qi]*phi[qi2] *
sp.diff(f[functionnumber],var[l],var[qi2])
summation.append(tempsum)
问题在于,正如您所料,即使 n=2,此计算也需要花费大量时间。
summation=[]
for functionnumber in range(n):
summation.append(sum([phi[i]*phi[j]*phi[l]*phi[qi]*phi[qi2] *
sp.diff(f[functionnumber],var[qi2]) for i
in range(n) for j in range(n) for l in range(n) for qi in range(n) for
qi2 in range(n)]))
但是问题还是和嵌套for的个数一样,计算时间长,取决于向量f。
我试图做的是使用来自 sympy 的命令求和。问题是它不计算求和中的导数。事实上,那么我这样做:
import sympy as sp
summation=[]
for functionnumber in range(n):
summation.append(sp.summation(phi[i]*phi[j]*phi[l]*phi[qi]*phi[qi2] *
sp.diff(f[functionnumber],var[qi2]),(i,n),(j,(l,(qi,(qi2,n)))
然后结果只是被识别为零,这是错误的(例如,我试图输入 phi=(1,1,...,1) 和五次多项式的 fa 向量,这仍然发生)。
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)