Я ищу, чтобы написать программу, которая вычисляет левую + правую сумму riemann функции. Моя единственная проблема: я хочу, чтобы функция принимала np.sin (x^2) или np.cos (3 * x +2) или, может быть, ax^2 + 3 * x + 2 (полиномиальная функция) в качестве параметра y и np.linspace() как параметр x и «left» или «right» в виде строки. Пока мой код действительно принимает sin (x)/cos (x) для вычисления левой/правой суммы риманова этих двух функций. Но я изо всех сил пытаюсь передать функцию типа sin (x^2) +3 и принять ее приближение. У меня есть логика уравнения правильно, но, возможно, я не очень хорошо разбираюсь в структурах данных numpy/python. Вот мой код:Передача математического уравнения в качестве аргумента (numpy)
import numpy as np
def r_sums(y,x,method='left'):
#f = y(x)
l = []
delta_x = abs(x[0]-x[-1])/len(x)
while method != 'right':
#Calculating Left Riemann Sum (below the list comprehension is a normal for loop of the list comprehension func)
return sum([ y(x[0]+ i*delta_x) for i in range(0,len(x))])*delta_x
#for i in range(0,len(x)):
#f_a = x[0] + i*(delta_x) #Calculating left endpoint
#l.append(y(f_a)) #Appends all the left endpoint into a list l
#return sum(l)*delta_x
#Calculating Right Riemann Sum (below the list comprehension is a normal for loop of the list comprehension func)
return sum([y(x[0]+ i*delta_x) for i in range(1,len(x)+1)])*delta_x
#for i in range(1,len(x)+1):
#f_a = x[0] + i*(delta_x)
#l.append(y(f_a))
#return sum(l)*delta_x
r_sums (np.sin, np.linspace (1,4,200), 'влево') должен работать, но я ищу, чтобы иметь параметр у взять что-то вроде
r_sums (np.sin (x ** 2 + 3), np.linspace (1,4,200), 'left') < - не работает
Действительно оцените помощь/обратную связь! Спасибо.