用于生成渐变的Python脚本不起作用

用于生成渐变的Python脚本不起作用,python,calculus,Python,Calculus,我有这个python脚本来生成x,y,z列表和u,v,w列表,使得u[I],v[I],w[I]是点x[I],y[I],z[I]的梯度向量 它似乎没有得到正确的值。有人知道怎么了吗 from math import * def coordinates(lst, f, gradx, grady, gradz): lst = lst[1:-1].split(",") lst = [float(x.strip()) for x in lst] xlst = [] y

我有这个python脚本来生成x,y,z列表和u,v,w列表,使得u[I],v[I],w[I]是点x[I],y[I],z[I]的梯度向量


它似乎没有得到正确的值。有人知道怎么了吗

from math import *

def coordinates(lst, f, gradx, grady, gradz):

    lst = lst[1:-1].split(",")
    lst = [float(x.strip()) for x in lst]

    xlst = []
    ylst = []
    zlst = []
    ulst = []
    vlst = []
    wlst = []

    for x in lst:
        for y in lst:
            xlst.append(str(x))
            ylst.append(str(y))
            zlst.append(str(f(x,y)))
            ulst.append(str(gradx(x,y)))
            vlst.append(str(grady(x,y)))
            wlst.append(str(gradz(x,y)))

    string = "xlst=[" + ",".join(xlst) + "]\n" + \
    "ylst=[" + ",".join(ylst) + "]\n" + \
    "zlst=[" + ",".join(zlst) + "]\n" + \
    "ulst=[" + ",".join(ulst) + "]\n" + \
    "vlst=[" + ",".join(vlst) + "]\n" + \
    "wlst=[" + ",".join(wlst) + "]\n"



    return string

lst = "{0, 2, 4, 6, 8, 10}"

# get function in the form f(x,y)=z  or  here its y^2 - x^2 - z = 0
f = lambda x,y: y**2 - x**2
# get the three gradient functions (df/dx, df/dy, df/dz)
gx = lambda x,y: -2*x
gy = lambda x,y: 2*y
gz = lambda x,y: -1

c = coordinates(lst, f, gx, gy, gz)
print c

“似乎没有得到正确的值”:你能更具体一点吗?请给出示例输入、实际输出和预期输出。调用gradx、grady、gradz的所有参数都正确吗?看起来这正确地给出了曲面的法线。它不会缩放到单位长度,这可能是一个问题。不太清楚梯度向量是什么意思。你是指法向量还是切线向量?许多向量与曲面相切。