[英]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.