用python求解积分方程
我需要用python 3.2在win7中解一个积分方程 我想先找到一个初始猜测解决方案,然后使用“fsolve()”在python中解决它 代码如下:用python求解积分方程,python,python-3.x,numpy,scipy,Python,Python 3.x,Numpy,Scipy,我需要用python 3.2在win7中解一个积分方程 我想先找到一个初始猜测解决方案,然后使用“fsolve()”在python中解决它 代码如下: import numpy as np from scipy.optimize.minpack import fsolve from cmath import cos, exp from scipy.integrate.quadpack import quad def integrand2(x, b): return exp(-x)/b
import numpy as np
from scipy.optimize.minpack import fsolve
from cmath import cos, exp
from scipy.integrate.quadpack import quad
def integrand2(x, b):
return exp(-x)/b
def intergralFunc2(b):
integral,err = quad(integrand2, 0, 10, args=(b)) // **error here**
return 0.01 - integral
import matplotlib.pyplot as plt
def findGuess():
vfunc = np.vectorize(intergralFunc2)
f = np.linspace(-20, 20,10)
plt.plot(f, vfunc(f))
plt.xlabel('guess value')
plt.show()
def solveFunction():
y= fsolve(intergralFunc2, 10)
return y
if __name__ == '__main__':
findGuess()
solution = solveFunction()
print("solution is ", solution)
我得到一个错误:
quadpack.error: Supplied function does not return a valid float.
任何帮助都将不胜感激 刚刚做了以下更改,它应该会起作用(它对我起作用) 删除:
from cmath import exp, cos
包括:
from numpy import exp, cos
如注释中所述,
cmath
函数只接受float
输入,不接受数组。不能将cmath
函数与NumPy/SciPy混合使用,因为它们不适用于NumPy数组。(这不是问题的唯一原因。)您应该只使用来自。。。import从包中导入模块,然后使用限定名称访问函数——否则,NumPy函数和标准库函数之间会出现相当多的名称冲突。请尝试从NumPy import cos、exp执行,而不是使用cmath
,谢谢!但是,当我对integrand2做了一个改变,这样我可以解一个嵌入了另一个积分方程的积分方程时,我得到了同样的错误。我将发表一篇新的文章。