我有点卡在函数上,我试图通过scipy,python进行数值整合。python中的函数与固定变量列表的数值双重集成
为了简单起见,我将定义该函数为:
integral f(x,y)= SUM[double integral(ax+by)dxdy]
a
和b
是常数,但它们是为每一个被整合方程不同。我已经将每个函数分别进行了整合,然后将结果汇总到所有积分中,但这需要花费大量时间进行计算,并且对于我尝试实现的方法而言,这并不理想。
有集成全功能的方式一次通过扩大总和,从而:
integral f(x,y)=double integral [(a1x+b1y)+(a2x+b2y)...(anx+bny)]dxdy
然后传递函数的(a,b)
元组列表等,以SciPy的的dblquad功能?
我正在努力寻找与此相关的文献中的任何地方。
*编辑
我已经包含了一个示例代码,以显示它是什么,我想达到稍微清楚:
import sys
import re
import math
from scipy.integrate import dblquad
def f((x,y),variables):
V=0
for v in variables:
a,b=v
V=V+ax+by
return (V)
def integral(x_max,y_max,variables):
return dblquad(f, 0, y_max, lambda x: 0, lambda x: x_max,args=variables)
def main():
variables=[(1,2),(3,4),(5,6)] #example variables. The length of this list can change with the code I am running.
x_max=y_max=1
integral(x_max,y_max,variables)
if __name__ == '__main__':
main()
被返回的错误是这样的:
Traceback (most recent call last):
File "integration_example.py", line 23, in <module>
main()
File "integration_example.py", line 19, in main
integral(x_max,y_max,variables)
File "integration_example.py", line 14, in integral
return dblquad(f, 0, y_max, lambda x: 0, lambda x: x_max,args=variables)
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 435, in dblquad
return quad(_infunc,a,b,(func,gfun,hfun,args),epsabs=epsabs,epsrel=epsrel)
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 254, in quad
retval = _quad(func,a,b,args,full_output,epsabs,epsrel,limit,points)
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 319, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 382, in _infunc
myargs = (x,) + more_args
TypeError: can only concatenate tuple (not "list") to tuple
很显然,函数并不像我那样通过一列值来把它写入我写这个的方式中。有没有办法做到这一点? (对不起,这可能是措辞问题的更好方式)。
不能您交换和整合?定义一个大的被积函数作为你所有被积函数的总和。 – yevgeniy
这基本上就是我想要做的,然而常量a和b是从程序中的前几个步骤中产生的,并且在程序期间也确定了(anx + bny)的数量,所以我不能用运行该程序之前已有的常量。我将编辑帖子以包含反映我正在尝试做什么的代码... – Phil