我需要在win7中通过python 3.2解决积分方程。
我想首先找到一个初始猜测解决方案,然后使用“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
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.
任何帮助将不胜感激。
答案 0 :(得分:2)
刚做了以下更改,它应该有效(对我有用)。
删除:
from cmath import exp, cos
包括:
from numpy import exp, cos
如评论中所述,cmath
函数仅接受float
个输入,而不接受数组。