У меня есть функция 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,)
Кто-нибудь знает как это сделать? большое тебе спасибо