Я рад любой помощи, которую может оказать любой! Я работаю над кодом для основной программы анализа Фурье c, и для вычисления набора коэффициентов, которые я понял из соображений эффективности, я хотел умножить функции, чтобы они могли обеспечить единственную функцию, которая может быть численно интегрирована. Я получил некоторую помощь, и теперь у меня есть «работающий» класс, который должен помочь мне в этом. Ниже приведен код для класса 'operable' над кодом для моей программы:
class operable:
def __init__(self, f):
self.f = f
def __call__(self, x):
return self.f(x)
def op_to_function_op(op):
def function_op(self, operand):
def f(x):
return op(self(x), operand(x))
return operable(f)
return function_op
for name, op in [(name, getattr(operator, name)) for name in dir(operator) if "__" in name]:
try:
op(1,2)
except TypeError:
pass
else:
setattr(operable, name, op_to_function_op(op))
Теперь я вызываю работоспособную функцию из этого вызова функции здесь, в шестой строке.
def findFourierCoefficients(function, T, kmax):
coefficientsA = [] #will have size kmax
coefficientsB = []
for i in range(0, kmax):
#find the coefficient a_k
integrandA = integrandForAK(function, i) #HERE IS THE FUNCTION CALL
integrationA = simpson(integrandA, 0, T, nValue)
coefficientA = (2/T) * integrationA
coefficientsA.append(coefficientA)
return coefficientsA
Я посмотрел онлайн и обнаружил, что мне нужно предоставить третий параметр для моей функции, и я сделал это ниже с параметром 'self'.
@operable
def integrandForAK(self, fun, k):
def specialCosineFunction(x):
return np.cos(k * omega * x)
functionToIntegrate = fun * specialCosineFunction
#functionToIntegrate = getFunctionProduct(fun, specialCosineFunction)
return functionToIntegrate
Я все еще Получив эту ошибку, он принимает только два позиционных аргумента, когда три даны - но я сделал еще один аргумент в своей функции, поэтому я не знаю, почему он не распознает его. Еще раз спасибо за любую помощь, которую кто-либо может оказать, я довольно плохо знаком с этим уровнем кодирования - в частности, python новее для меня. Всего наилучшего!