如何解决我的代码有 6 个嵌套我试图摆脱其中的一些,但我试图使用的命令不适用于 sympy
为了清楚说明符号,假设 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 举报,一经查实,本站将立刻删除。