我们如何用python编写一个函数,返回两点(X_1
和X_2
)之间多项式的定积分
该函数接受3个参数:
A
(即,对于多项式f(x)=5x^4−2x+1
,此列表变为A=[5,0,0,−2,1]
)X_1
X_2
给出了多项式的定积分公式,如
下面是我对这个函数的尝试,但是输出返回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], 0, 3))
该功能的预期结果应为:
print(take_integral([1, 2, 1], 0, 3))
21.0
print(take_integral([5, 0, 0, -2, 1], 0, 1))
1.0
在函数中,忽略X_1和X_2,并将它们都设置为0。因此结果总是0
这里有几点:
用
A
乘以之后的一大堆东西有一个严重的问题A
是一个列表,其余部分给出一个浮点数。计算机不一定知道该怎么做。想象一下,如果我告诉你用一组蜡笔乘以4。你可以猜到我想要什么,但最终,这并没有什么意义。您希望将列表的内容相乘,而不是列表本身根据你给出的计算多项式定积分的公式,我很确定应该有一个和,你把所有的项加在一起。这就是多项式的定义,对吗?目前,您正在计算每个术语并删除前一个术语。因此,您需要将它们相加
你的尝试也有点…“翻转”了指数者。由于系数列表
A
按幂的降序排序(A[0]
是最高幂的系数),因此在样本输入中i=0
时执行X_1**(i+1)
,其中A=[1,2,1]
将最高幂与最低指数相乘,而不是所需的3
。因此,您希望从左到右遍历列表,但是当您提高X
时,您的i
需要减少。谢天谢地,len(A)
在解决这一问题上派上了用场len(A)-i
,你会根据公式得到i+1
。这是正确的,因为len(A)
将给出多项式中大于最高幂的一,并且i
从0
开始,小于A
的长度,因此根据公式给出i+1
李>以下代码将为您提供正确答案:
相关问题 更多 >
编程相关推荐