用scipy整合方程

Nil*_*as 5 python scipy

from scipy.integrate import quad

def integrand(a, b):
    return a * x ** 2 + b

a = 2
b = 1

I = quad(integrand, 0, 1, args=(a,b))
I
Run Code Online (Sandbox Code Playgroud)

这是我的计划.当我试图运行它时,它显示错误:

integrand () takes 2 positional arguments but 3 were given ....
Run Code Online (Sandbox Code Playgroud)

当只有两个变量时,我不明白为什么要求3个参数,即ab.

谁能帮我?任何人都可以澄清我的怀疑吗?

She*_*ore 3

只需更换

def integrand(a, b):
Run Code Online (Sandbox Code Playgroud)

经过

def integrand(x, a, b):
Run Code Online (Sandbox Code Playgroud)

问题在于,在函数中,您使用了变量x,但没有将该变量x作为参数传递给函数。01充当积分的限制,但由于您正在对 wrt 进行积分x,因此您会收到此错误。

输出

(1.6666666666666667, 1.8503717077085944e-14)
Run Code Online (Sandbox Code Playgroud)