【发布时间】:2015-05-24 21:05:43
【问题描述】:
我想通过辛普森法则整合函数 e^(-x**2/2) 但它一直有错误,我不知道是什么问题。
a=eval(input('a:'))
b=eval(input('b:'))
n=eval(input('n:'))
def f(x):
e**(-x**2/2)
h=(b-a)/n
s= f(a)+f(b)
def simpson_rule(f(x),a,b,n):
#Approximation by Simpson's rule
c=(a+b)/2.0
h=abs(b-a)/2.0
return h*(f(a)+4.0*f(c)+f(b))/3.0
def simpson_rule(f(x),a,b,n):
"""Approximates the definite integral of f from a to b by the composite Simpson's rule, using n subintervals"""
for i in range (1,n,2):
s+=4*f(a+i*h)
for i in range(2,n-1,2):
s+=2*f(a+i*h)
return s*h/3
print simpson_rule(f(x),a,b,n)
【问题讨论】:
-
你做过研究吗?我查了一下规则,维基百科上已经有一个 Python 实现。
-
您的函数
f()中没有return语句。另外,你在哪里设置e的值?无论如何,您应该使用math.exp(u)来计算e**u。在用户输入中使用eval()并不是一个好主意——您可以使用int()或float()分别将字符串转换为整数或浮点数。
标签: python function integration rule exponential