我的代码有 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 (将#修改为@)