Сумма функций в Python - PullRequest
       11

Сумма функций в Python

1 голос
/ 17 октября 2019

У меня есть функция f (x, a), где «x» - это переменная, а «a» - это параметр. Я хочу создать функцию F (x), которая является суммой f (x, a) для диапазона параметра 'a', например: F (x) = f (x, a1) + f (x, a2)+ f (x, a3) + ... + f (x, aN) но как у меня большой диапазон для 'a' (a = [a1, a2, a3, ..., aN]) я хочу написатьпрограмма для этого, но я не знаю, как. Например:

import numpy as np
# Black-Body radiation equation: 'x' is related to frequency and 'a' is related to temperature 
def f(x,a):
    return x**3/(np.exp(a*x) - 1)

# range for parameter a:
a = [1000,2000,3000,4000,5000,6000]

# Superposition of spectrum
def F(x):
    return f(x,a[0]) + f(x,a[1]) + f(x,a[2]) + f(x,a[3]) + f(x,a[4]) + f(x,a[5])

Последняя строка для функции F (x) не очень умная, поэтому я попытался сделать цикл в указанной выше сумме с помощью функции sum ()

def F(x):
spectrum = []
    for i in a:
        spectrum = sum(f(x,i))
    return spectrum

Но поскольку у меня нет большого опыта работы с Python, это не работает, и я получил ошибку:

import matplotlib.pyplot as plt
x = np.linspace(0,100,500)
plt.plot(x,F(x))
plt.show()
# ValueError: x and y must have same first dimension, but have shapes (500,) and (1,)

Кто-нибудь знает, как это сделать? большое спасибо

1 Ответ

2 голосов
/ 17 октября 2019

Из того, что я понимаю, это должно делать эту работу:

def F(x):
    return sum(f(x, _a) for _a in a)

То, что я делаю в функции sum(), называется списочным пониманием, не стесняйтесь смотреть эту функцию Python, если вас интересуетPython-кодирование: оно очень мощное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...