用Python求解积分方程

4 投票
1 回答
2335 浏览
提问于 2025-04-17 23:31

我需要在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 类型的输入,而不是数组。

撰写回答