【问题标题】:Multiplying functions together in Python在 Python 中将函数相乘
【发布时间】:2019-12-15 21:36:06
【问题描述】:

我目前正在使用 Python,并且我有一个函数需要与自身相乘以获得不同的常量。

例如如果我有f(x,y)= x^2y+a,其中“a”是一些常量(可能是常量列表)。

如果'a'是一个列表(大小未知,因为它取决于输入),那么如果我们说a = [1,3,7],我想要做的操作是

(x^2y+1)*(x^2y+3)*(x^2y+7)

但泛化到 'a' 中的 n 个元素。有没有一种简单的方法可以在 Python 中做到这一点,因为我想不出解决这个问题的好方法?如果“a”中的大小是固定的,那么看起来会容易得多,因为我可以单独定义函数,然后将它们相乘成一个新函数,但由于大小不固定,这种方法不合适。有没有人有办法解决这个问题?

【问题讨论】:

  • 如果您是新手(欢迎您!)stackoverflow.com/help/how-to-ask,请确保您通读此文)。这应该可以通过一个简单的函数来实现,但也许我遗漏了一些东西,也许如果你发布你尝试的代码,它会澄清你在问什么。 Python 允许你返回多个值,如果那是你所追求的?
  • 你不应该关心大小是否固定,这就是循环的用途
  • 我已经在下面发布了我的代码,但它并不完全有效。我是否以正确的方式进行处理,还是您会建议采取不同的方法?

标签: python-3.x function lambda multiplication


【解决方案1】:

你可以使用 numpy ftw,它相当容易上手。

import numpy as np
a = np.array([1,3,7])
x = 10
y = 0.2
print(x ** (2*y) + a)
print(np.sum(x**(2*y)+a))

输出:

[3.51188643 5.51188643 9.51188643]
18.53565929452874

【讨论】:

  • 应该澄清答案不能在浮点数中,因为它需要在之后使用 dblquad 进行集成。检查下面的代码(这是错误的,因为它没有做我需要它做的事情),如果你能评论这是否是正确的方法或者我应该尝试不同的方法,那就太好了。跨度>
【解决方案2】:

老实说,我并没有太多的东西,我仍在试图弄清楚如何让功能不重叠。

a=[1,3,7]

for i in range(0,len(a)-1):
    def f(x,y):
        return (x**2)*y+a[i]
    def g(x,y):
        return (x**2)*y+a[i+1]
    def h(x,y):
        return f(x,y)*g(x,y)
f1= lambda y, x: h(x,y)
integrate.dblquad(f1, 0, 2, lambda x: 1, lambda x: 10)

我应该澄清一下,最终结果不能是浮点数,因为它需要在之后使用 dblquad 进行集成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2020-02-03
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多