【问题标题】:Calculating the Derivative of a Function计算函数的导数
【发布时间】:2015-03-11 09:44:29
【问题描述】:

我是编程新手,在 Python 中创建函数时真的很吃力。

在尝试计算导数时,我为我的 x 值创建了一个 np.linspace,然后为 y 值创建了一个空列表。我使用 for 循环创建了一个 y 值列表,这些 y 值是通过函数传递 x 值的结果。在将空列表与 for 循环的结果附加后,a 尝试创建一个函数以使用有限差分逼近来获取导数。当我运行程序时,我收到 Invalid syntax 的错误。

我做错了什么?

import numpy as np
from math import *

xvalue = np.linspace(0,100,20)
yvalue = []

for i in xvalue:    
    q = i**2+4
    yvalue.append(q)  

def diff(f,x):

    n= len(x)
    y = []

    for i in range(n):

        if i == n-1:
            y.append((f[i]-f[i-1])/(x[2]-x[1]))
        else:
            y.append((f[i+1]-f[i]/(x[2]-x[1]))

    return y

print xvalue
print yvalue

diff(xvalue,yvalue)

【问题讨论】:

    标签: python function for-loop derivative


    【解决方案1】:

    这些语法错误可能有点难以诊断:

    File "path/to/my/test.py", line 20
        return y
             ^
    SyntaxError: invalid syntax
    

    既然您知道所讨论的行很可能没有任何问题(return y 没有任何问题),接下来要做的是查看上一行。正如@ljetibo 的回答一样,您缺少括号。如果由于某种原因上一行看起来没问题,请继续在文件中查找,直到找到罪魁祸首。

    拥有一个匹配括号的文本编辑器也很有帮助。

    编辑

    正如@ljetibo 指出的那样,如果您使用的是 IDLE,则不会有像上面那样的回溯。它会创建一个带有 OK 按钮的提示窗口并突出显示 return 语句,让您大致了解从哪里开始查找。

    【讨论】:

    • 这个问题是,如果你尝试从 python 编辑器运行它(F5),你不会得到这个错误打印,而且用户通常不会注意到他们的文本指针(闪烁条)在箭头所指处跳到return 的末尾。
    • 啊,是的。完全正确。自从我使用 IDLE 以来,它已经永远存在了。 ;)
    【解决方案2】:

    您在

    上缺少括号
     y.append((f[i+1]-f[i]/(x[2]-x[1]))
    

    应该是这样的

     y.append((f[i+1]-f[i]/(x[2]-x[1])))
    

    【讨论】:

    • 我明白了,谢谢!它在我添加括号后运行,但它只打印 xvalue 和 yvalue。我最后一行还不够调用函数?
    • @NathanNeven 是,但你应该分配结果,即a=diff(x,y)print 它。否则,结果将在返回的第二秒被丢弃。
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多