微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的代码有 6 个嵌套我试图摆脱其中的一些,但我试图使用的命令不适用于 sympy

如何解决我的代码有 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 举报,一经查实,本站将立刻删除。