Python中多项式的积分

问题描述

我们如何在python中编写一个函数来返回两个点(X_1X_2)之间的多项式的确定积分?

该函数带有3个参数:

  • 多项式系数的列表A(即对于多项式f(x)=5x^4−2x+1,该列表变为A=[5,−2,1]
  • 实数X_1
  • 实数X_2

我们得到了多项式的定积分的公式,例如

We are given the formula for the definite integral of a polynomial such as

我在下面尝试此功能,但是输出返回0.2

    def take_integral(A,X_1,X_2):

            integral = 0

            for i in range(len(A)):
                integral = A*(X_2**(i+1) - X_1**(i+1))/(i+1)
            return integral

    print(take_integral([1,2,1],3))

该函数的预期结果应为:


    print(take_integral([1,3))
    21.0
    print(take_integral([5,-2,1))
    1.0

解决方法

这里有几点:

  • 之后,将A与全部内容相乘存在一个严重的问题。 A是一个列表,其余的为浮点数。计算机不一定知道该怎么做。想象一下,如果我告诉您将一组蜡笔乘以4。您可以猜到我想要的是什么,但是最终,这实际上没有任何意义。您想将列表的内容而不是列表本身加倍。

  • 使用给定的公式来计算多项式的定积分,我很确定应该有一个总和,将所有项加在一起。那就是多项式的定义,对吗?当前,您正在计算每个术语并擦除上一个术语。因此,您需要将它们加起来。

  • 您的尝试也...“翻转”了指数。由于系数列表A按幂的降序排序(A[0]是最高幂的系数),因此当样本输入中的X_1**(i+1)i=0,其中{ {1}}将乘以最高幂与最低指数,而不是所需的A=[1,2,1]。因此,您想从左到右遍历该列表,但是在提高3时,i的需求就减少了。值得庆幸的是,X可以很方便地解决这个问题。

    • 如果您进行len(A),则根据公式,您将准确获得len(A)-i。确实如此,因为i+1的多项式比多项式的最高幂大,并且len(A)i到小于0的长度小一,并且结果将根据公式为您提供A

以下代码将为您提供正确的答案:

i+1
,

在函数中,您忽略X_1和X_2并将它们都设置为0。因此结果始终为0

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...