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

2024-10-02 04:17:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我用这个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

Tags: lambdaindf列表forjoinappendlst

热门问题