在非首个变量上积分函数,寻找替代lambda的方法

2 投票
2 回答
550 浏览
提问于 2025-04-17 15:58

有没有其他方法可以在Python 2.7中对一个函数进行积分,比如说对两个变量中的第二个变量进行积分?举个例子,我想对这个函数在x上进行积分:

import numpy as np
from scipy.integrate import quad

def sqrfn(a,x):
    return a*np.square(x)

这可以很简单地通过以下方式实现:

quad(lambda x: sqrfn(2,x),0,10)

我在想有没有其他方法可以做到这一点,比如使用一些我觉得更直观的方式:

quad(sqrfn,0,10,args(a=2))

有没有人有其他的解决方案?(是的,我可以把这个函数定义为 sqrfn(x,a),然后用 quad(sqrfn,0,10,args(2,)) 来代替,但这不是重点)。

2 个回答

0

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要把它们转换成一种程序能处理的格式。

比如说,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够使用这些信息,我们需要把它们解析成程序可以理解的结构,比如列表或者字典。

这个过程就像是把外语翻译成你能懂的语言一样。你需要知道每个词的意思,才能把整个句子翻译得通顺。

在编程中,解析数据的方式有很多种,具体取决于你要处理的数据类型和来源。常见的格式有JSON、XML等,它们各自有自己的规则和结构。

总之,处理数据的关键在于理解数据的格式,并使用合适的方法将其转换成程序可以使用的形式。

import functools
quad(functools.partial(sqrfn, 2), 0, 10)
1

你可以使用 functools.partial() 来实现这个功能:

In [10]: f = functools.partial(sqrfn, 2)

这样一来,f(x) 就等于 sqrfn(2, x) 了:

In [11]: map(f, range(5))
Out[11]: [0, 2, 8, 18, 32]

你的例子就可以变成:

quad(functools.partial(sqrfn, 2), 0, 10)

撰写回答