繁体   English   中英

计算函数的导数

[英]Calculating the Derivative of a Function

我是编程的新手,真的很努力地用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)

诊断这类语法错误可能有些棘手:

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

既然您知道所讨论的行很可能没有问题( return y没有错),那么接下来要做的就是看前一行。 就像@ljetibo的答案一样,您缺少括号。 如果由于某种原因上一行看起来没问题,请继续向上移动文件,直到找到罪魁祸首。

使用与括号匹配的文本编辑器也很有帮助。

编辑

正如@ljetibo指出的那样,如果您使用的是IDLE,将不会像上面的那样追溯。 相反,它将创建一个带有“确定”按钮的提示窗口,并突出显示return语句,从而使您大致了解从何处开始查找。

您错过了一个原谅

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

看起来应该像

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM