【发布时间】:2016-03-03 01:03:33
【问题描述】:
我正在寻找编写一个计算函数左+右黎曼和的程序。我唯一的问题是,我希望函数将 np.sin(x^2) 或 np.cos(3*x +2) 或者 x^2 + 3*x + 2 (多项式函数)作为 y 参数和np.linspace() 作为 x 参数和 'left' 或 'right' 作为字符串。到目前为止,我的代码确实需要 sin(x) / cos(x) 来计算这两个函数的左/右黎曼和。但是我很难让我们说传递一个像 sin(x^2)+3 这样的函数并取它的近似值。我有正确的等式逻辑,但也许我不太了解 numpy/python 的数据结构。这是我的代码:
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),'left') 应该可以工作,但我希望 y 参数可以采用类似
r_sums(np.sin(x**2+3),np.linspace(1,4,200),'left')
非常感谢一些帮助/反馈!谢谢。
【问题讨论】:
标签: python python-3.x math