【问题标题】:hello, I am trying to write a simple program in python that will calculate the derivative of a polynomial function你好,我正在尝试用python编写一个简单的程序来计算多项式函数的导数
【发布时间】:2014-08-13 04:06:02
【问题描述】:

我正在尝试编写一个简单的程序来计算多项式函数的导数。这就是我所拥有的。它可能不漂亮,但由于某种原因,for 循环不可迭代(不管这意味着什么)。

def main():

    n = int(input("please enter the degree of the polynomial: "))
    x = int(input("please enter the input for p(x): "))

    p = 2*x**n + 3*x**(n-1)

    v = int(input("please enter the order of the derivative: "))

    for i in v:
        p = 2*n*x**(n - i) + 3*(n-1)*x**((n - 1) - i)

    print p

main()

【问题讨论】:

  • 不要含糊地描述问题,而是发布实际的异常,并带有回溯。或者,如果您没有遇到异常,请准确告诉我们发生了什么,以及它与您的预期有何不同。

标签: python calculus derivative


【解决方案1】:

您只能循环遍历可迭代对象,例如具有多个值的 lists。

如果您尝试循环遍历第一个 v 整数,则需要第一个 v 整数的迭代,而不是 v 本身:

for i in range(v):

一般来说,当您无法理解某个术语的含义时,请在the glossary 中查找。对于iterable,它说:

一个能够一次返回其成员的对象。可迭代对象的示例包括所有序列类型(例如 liststrtuple)和一些非序列类型(例如 dictfile)以及您使用 __iter__() 定义的任何类的对象或__getitem__() 方法。 Iterables 可用于for 循环和许多其他需要序列的地方(zip()map(),...)。当一个可迭代对象作为参数传递给内置函数iter() 时,它会返回该对象的迭代器。此迭代器适用于遍历一组值。在使用迭代器时,通常不需要调用iter() 或自己处理迭代器对象。 for 语句会自动为您执行此操作,创建一个临时未命名变量以在循环期间保存迭代器。另请参见 iteratorsequencegenerator

这可能比您想要的更详细,但第一句话解释得很好。列表、xrange 对象或文件是可以一次返回一个成员的东西。一个数字不是;它甚至没有成员可以返回。*


* 好吧,这取决于你如何定义数字。例如,如果您将5 定义为{4, {4}},那么显然5 确实有成员要返回……但它们不会对您有多大好处。此外,Peano 整数的计算速度非常慢。

【讨论】:

    【解决方案2】:

    我运行了你的代码并得到:

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "polynomial.py", line 17, in <module> 
     main()
    File "polynomial.py", line 12, in main
    for i in v:
    TypeError: 'int' object is not iterable
    

    你可能会这样做:

    i = 1
    while i < v + 1:
        p = ....
        i += 1
    

    【讨论】:

    • 如果我没记错的话,求导的第一步是取任何指数并将其降低,乘以系数。然后将指数减 1。 range 函数的第一次迭代,如上所述,将使 i 等于 0,如此处所述:docs.python.org/2/library/functions.html#range
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2020-06-23
    相关资源
    最近更新 更多