【问题标题】:how do i insert inputs to find value of integrals in python?如何插入输入以在 python 中查找积分值?
【发布时间】:2010-11-22 15:59:32
【问题描述】:

我正在学习物理课程,目前我被困在这个部分。 我已经尝试过,但我无法做到正确。 这里真的需要帮助。

关于梯形规则, 问题:方程f(x)=x4*(1-x)44/(1+x^2)中积分的值是多少

这是我尝试过的代码,但我无法得到答案

from math import *

def f(x):
    f(x)=x**4*(1-x)**4/(1+x**2)
    return f(x)

def trap0 (f,a,b,n):
    h= float (b-a)/n
    s =0.5*( f(a)+f(b))
    for i in range (1,n):
        s=s+f(a+i*h)
    return s*h

【问题讨论】:

    标签: python input integral


    【解决方案1】:

    您对f 的定义是错误的。这就是你需要写的全部内容:

    def f(x):
        return x**4 * (1 - x)**4 / (1 + x**2)
    

    您的代码的其余部分对我来说看起来不错,只要您使用 ab 的浮点参数调用 trap0

    >>> trap0(math.cos, 0.0, math.pi/2, 100)
    0.99997943823960744
    

    如果你想用整数 ab 调用它,那么事情可能会出错,因为 f 最终会进行整数除法而不是浮点除法:

    >>> f(4.0)
    1219.7647058823529
    >>> f(4)
    1219
    

    最简单的解决方法是将除法强制为浮点数,可能像这样:

    def g(x):
        return x**4 * (1 - x)**4 / (1.0 + x**2)
    
    >>> g(4.0) == g(4)
    True
    

    【讨论】:

    • 是的,在 python 中完成。 huu,但我也做不好
    【解决方案2】:
    from math import *
    

    在进行导入时被认为是不正确的。诚然,这只是一个十分钟的奇迹,但这种导入风格会令人不悦,因为它们会混淆命名空间并覆盖局部变量(如果它们也在模块或您的源代码中分配)。

    考虑到您使用 ** 而不是 pow() 意味着您实际上不需要数学导入。但如果你使用的是 python 2.x,你可能想要使用。

    from __future__ import division
    

    Gareth 对这个函数有正确的答案,虽然我只是在抱怨风格问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 2013-10-05
      • 2023-03-23
      • 2015-06-12
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多