python - 我怎样才能更简化呢?
问题描述
我正在尝试将 numpy 应用于我为梯形规则集成编写的代码:
def integral(a,b,n):
delta = (b-a)/float(n)
s = 0.0
s+= np.sin(a)/(a*2)
for i in range(1,n):
s +=np.sin(a + i*delta)/(a + i*delta)
s += np.sin(b)/(b*2.0)
return s * delta
我正在尝试从新函数中获取返回值,如下所示:
return delta *((2 *np.sin(x[1:-1])) +np.sin(x[0])+np.sin(x[-1]) )/2*x
我现在尝试了很长时间来取得任何突破,但我所有的尝试都失败了。
我尝试过但没有得到的一件事是为什么下面的代码会too many indices for array
出错?
def integral(a,b,n):
d = (b-a)/float(n)
x = np.arange(a,b,d)
J = np.where(x[:,1] < np.sin(x[:,0])/x[:,0])[0]
非常感谢每一个提示/建议。
解决方案
你忘了总结sin(x)
:
>>> def integral(a, b, n):
... x, delta = np.linspace(a, b, n+1, retstep=True)
... y = np.sin(x)
... y[0] /= 2
... y[-1] /= 2
... return delta * y.sum()
...
>>> integral(0, np.pi / 2, 10000)
0.9999999979438324
>>> integral(0, 2 * np.pi, 10000)
0.0
>>> from scipy.integrate import quad
>>> quad(np.sin, 0, np.pi / 2)
(0.9999999999999999, 1.1102230246251564e-14)
>>> quad(np.sin, 0, 2 * np.pi)
(2.221501482512777e-16, 4.3998892617845996e-14)
推荐阅读
- html - CSS 在 CSS 文件中不起作用,但是当我在里面设置样式时它起作用
- graphql - 具有自定义类型属性的 DynamoDB 表的 Graphql 突变查询
- python - Conda:在从 YAML 文件创建环境之前指定环境变量
- c# - 当我离开页面时,控件 OnElementChanged() 会被调用吗?
- regex - 通配符匹配反向查找
- python - 由于未运行 TTY Django,因此跳过了超级用户创建。巴本贝壳
- assembly - x86-64 的条件跳转是如何工作的?
- f# - F# 中任何元组位置的简写
- node.js - socket.io anonymous callback: can't call class functions
- java - Gradle 的“maven”和“maven-publish”插件有什么区别?