用python求解积分方程

时间:2014-03-23 14:27:13

标签: python python-3.x numpy scipy

我需要在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.

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

刚做了以下更改,它应该有效(对我有用)。

删除:

from cmath import exp, cos

包括:

from numpy import exp, cos

如评论中所述,cmath函数仅接受float个输入,而不接受数组。