gpt4 book ai didi

python - 传递数学方程作为参数(numpy)

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:00 26 4
gpt4 key购买 nike

我正在编写一个程序来计算函数的左+右黎曼和。我唯一的问题是,我希望函数将 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') <-- 不起作用

非常感谢一些帮助/反馈!谢谢。

最佳答案

您可能想传递一个“真实”函数(而不是一个值!)。请注意,您必须在此处定义函数或使用 lambda 表达式。

r_sums(lambda x: np.sin(x**2+3),np.linspace(1,4,200),'left')

会起作用的。

lambda 表达式只是一个采用一个参数 x 并返回 np.sin(x**2+3)

的函数

它与以下内容相同:

def function_sin_xsqaured_plus_3(x):
return np.sin(x**2+3)

r_sums(function_sin_xsqaured_plus_3,np.linspace(1,4,200),'left')

(也有效)

关于python - 传递数学方程作为参数(numpy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com