用Python求解积分方程
我需要在Windows 7上用Python 3.2来解决一个积分方程。
我想先找到一个初始的猜测解,然后再用“fsolve()”这个函数来解决它。
这是我的代码:
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.
任何帮助都非常感谢。
1 个回答
3
我刚刚做了以下修改,这样应该可以正常工作(对我来说是有效的)。
删除:
from cmath import exp, cos
添加:
from numpy import exp, cos
正如评论中所解释的,cmath
里的函数只接受 float
类型的输入,而不是数组。