【问题标题】:python integration issue, the function with exponentialpython集成问题,指数函数
【发布时间】: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


【解决方案1】:

您定义了 2 个具有相同名称的集成例程。如果您致电simpson_rule(),您希望运行哪一个? 第一个是 n=1 的特殊情况。您可以相应地重命名它。

其次,你的电话是print simpson_rule(f(x),a,b,n),但你只需要将f()交给函数,就像这样print simpson_rule(f,a,b,n)。 可以看到f是一个函数,f()是一个函数返回值:

def f(x):
    return x + 13

f
<function f at 0x0000000002253D68>
f(5)
18

尝试一下,如果仍有错误,请发布错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多