我正在尋找一個計算函數的左+右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)來計算這兩個函數的左/右riemann和。但我正在努力讓我們說通過一個像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), '左')應該工作,但我期待有參數y採取類似
r_sums(np.sin(x ** 2 + 3),np.linspace(1,4,200),'left')< - 不工作
真的很感謝您的幫助和反饋!謝謝。