Python中多项式的积分

Python中多项式的积分,python,polynomials,polynomial-math,calculus,Python,Polynomials,Polynomial Math,Calculus,我们如何用python编写一个函数,返回两点(X_1和X_2)之间多项式的定积分 该函数接受3个参数: 多项式系数的列表(即,对于多项式f(x)=5x^4−2x+1,此列表变为A=[5,0,0,−2,1]) 实数X_1 实数X_2 给出了多项式的定积分公式,如 下面是我对该函数的尝试,但是输出返回0.2 def take_积分(A,X_1,X_2): 积分=0 对于范围内的i(len(A)): 积分=A*(X_2**(i+1)-X_1**(i+1))/(i+1) 返回积分 打印(取_积分(

我们如何用python编写一个函数,返回两点(
X_1
X_2
)之间多项式的定积分

该函数接受3个参数:

  • 多项式系数的列表(即,对于多项式
    f(x)=5x^4−2x+1
    ,此列表变为
    A=[5,0,0,−2,1]
  • 实数
    X_1
  • 实数
    X_2
给出了多项式的定积分公式,如

下面是我对该函数的尝试,但是输出返回
0.2

def take_积分(A,X_1,X_2):
积分=0
对于范围内的i(len(A)):
积分=A*(X_2**(i+1)-X_1**(i+1))/(i+1)
返回积分
打印(取_积分([1,2,1],0,3))
该功能的预期结果应为:


打印(取_积分([1,2,1],0,3))
21
打印(取_积分([5,0,0,-2,1],0,1))
1

在函数中,忽略X_1和X_2,并将它们都设置为0。因此,结果总是0,这里有几个点:

  • a
    与之后的一大堆内容相乘会有一个严重的问题
    A
    是一个列表,其余部分给出一个浮点数。计算机不一定知道该怎么做。想象一下,如果我告诉你用一组蜡笔乘以4。你可以猜到我想要什么,但最终,这并没有什么意义。您希望将列表的内容相乘,而不是列表本身

  • 根据你给出的计算多项式定积分的公式,我很确定应该有一个和,你把所有的项加在一起。这就是多项式的定义,对吗?目前,您正在计算每个术语并删除前一个术语。因此,您需要将它们相加

  • 你的尝试也有点…“翻转”了指数者。由于系数列表
    A
    是按幂降序排序的(
    A[0]
    是最高幂的系数),因此在示例输入中执行
    X_1**(i+1)
    when
    i=0
    ,其中
    A=[1,2,1]
    将最高幂与最低指数相乘,而不是所需的
    3
    。因此,您希望从左到右遍历列表,但是当您提升
    X
    时,您的
    i
    需要减少。谢天谢地,
    len(A)
    在解决这个问题上很方便

    • 如果您执行
      len(A)-i
      ,您将根据公式得到
      i+1
      。这是正确的,因为
      len(A)
      将给出多项式中大于最高幂的一,而
      i
      0
      开始,小于
      A
      的长度,因此根据公式给出
      i+1
以下代码将为您提供正确答案:

def take_integral(A, X_1, X_2):

        integral = 0

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

print(take_integral([1, 2, 1], 0, 3))
21
print(take_integral([5, 0, 0, -2, 1], 0, 1))
1

谢谢你。我拿走了
X_1=0
X_2=0
,现在函数输出0.2,一切正常?哇,感谢您的详细回复!这就把事情弄清楚了。没问题!很高兴我能帮忙。