需要帮助用Numpy计算导数和积分吗

2024-05-28 19:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助用有限差分法和Numpy来计算函数的导数和积分,而不使用循环。在

整个任务:在区间[-10,10]上对m=0和s=[0.5,5]的高斯函数f(x)=(1./(sqrt(2.*pi)*s))*e**(-0.5*((x-m)/s)**2)。用有限差分法计算函数的导数和积分,不使用回路。创建函数及其导数的绘图。使用Numpy和Matplotlib。在

节目开始:

定义f(x,s,m):

return (1./(sqrt(2.*pi)*s))*e**(-0.5*((x-m)/s)**2)

def main():

^{pr2}$

Tags: 函数numpy绘图return定义matplotlibmaindef
2条回答

在我看来,最简单的方法(不使用SciPy)是直接求和,求导的中心差分法是:

import numpy as np
import pylab

def gaussian(x, s, m):
    return 1./(np.sqrt(2.*np.pi)*s) * np.exp(-0.5*((x-m)/s)**2)

m = 0
s = np.linspace(0.5,5,3)
x, dx = np.linspace(-10,10,1000, retstep=True)

x = x[:,np.newaxis]
y = gaussian(x,s,m)

h = 1.e-6
dydx = (gaussian(x+h, s, m) - gaussian(x-h, s, m))/2/h
int_y = np.sum(gaussian(x, s, m), axis=0) * dx
print(int_y)

pylab.plot(x, y)
pylab.plot(x, dydx)
pylab.show()

通过使用numpy数组,您可以直接使用代数表示法来应用该操作:

result = (1./(np.sqrt(2.*np.pi)*s))*np.exp(-0.5*((x-m)/s)**2)

相关问题 更多 >

    热门问题