计算函数的导数

时间:2015-03-11 01:14:41

标签: python function for-loop derivative

我是编程的新手,我真的很难用Python创建函数。

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

我做错了什么?

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)

2 个答案:

答案 0 :(得分:3)

诊断这些语法错误有点棘手:

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

既然您知道有问题的行最有可能没有问题(return y没有任何问题),接下来要做的就是查看上一行。和@ ljetibo的回答一样,你错过了一个括号。如果由于某种原因,前一行看起来没问题,请继续在文件中查找,直到找到罪魁祸首。

使用与括号匹配的文本编辑器也非常有用。

修改

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

答案 1 :(得分:1)

你在

上错过了一个parens
 y.append((f[i+1]-f[i]/(x[2]-x[1]))

应该看起来像

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