Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中计算积分的问题_Python_Scipy_Numerical Methods_Bessel Functions - Fatal编程技术网

Python中计算积分的问题

Python中计算积分的问题,python,scipy,numerical-methods,bessel-functions,Python,Scipy,Numerical Methods,Bessel Functions,所以我一直在尝试在一个特定的表达式上使用Scipy-on-numpy的通用积分方法(quad);但是,我得到了以下错误 TypeError: unsupported operand type(s) for *: 'function' and 'float' 下面是我试图集成的函数(这里似乎没有mathjax): t*y(t)*J0(u{i}*t/a)dt的从0到a的积分 其中a是y(t)的长度,J0是零阶贝塞尔函数 u_{i}是J0(u)=0的根 我的代码: import numpy as n

所以我一直在尝试在一个特定的表达式上使用Scipy-on-numpy的通用积分方法(quad);但是,我得到了以下错误

TypeError: unsupported operand type(s) for *: 'function' and 'float'
下面是我试图集成的函数(这里似乎没有mathjax):

t*y(t)*J0(u{i}*t/a)dt的从0到a的积分 其中a是y(t)的长度,J0是零阶贝塞尔函数 u_{i}是J0(u)=0的根

我的代码:

import numpy as np
import scipy.integrate as integrate
from scipy.special import *
y = np.load('dataset.npy')  # 1000 pts long
a = 1000
roots = jn_zeros(0, 1000)
func = lambda t: t * jv(0, t * (roots/a) )
result = integrate.quad(func * y , 0, a)

第一个问题是你没有调用你的函数,你的意思是

func(y)*y
否则,您只是将一个函数名乘以一个数字/数组,这就是您看到的错误。除此之外,
integrate.quad
的初始参数是一个可调用的函数,这是您想要集成的函数。它不接受向量,因此您的初始
y
向量被完全忽略。如果有的话,你想要这个:

result = integrate.quad(lambda y: func(y) * y , 0, a)

但这完全忽略了数据集。要在样本上集成,请使用,它接受
x
数组和
y
数组。您可能需要使用
np.linspace
或类似的工具来生成
y
数组。

我注意到
arr
拼写错误,但我们还是用双关语吧。谢谢!但现在我似乎遇到了以下错误:ValueError:操作数无法与形状(5,)(1000,)一起广播@Sam看起来像
func
正在返回矩阵。您没有发布足够的信息来调试此()。我建议你为你的新问题写一个新问题,但必须先看看
func
返回的内容,以及它对你是否有意义。