Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python N维高阶多项式插值_Python_Interpolation_Polynomials_N Dimensional_Polynomial Approximations - Fatal编程技术网

Python N维高阶多项式插值

Python N维高阶多项式插值,python,interpolation,polynomials,n-dimensional,polynomial-approximations,Python,Interpolation,Polynomials,N Dimensional,Polynomial Approximations,我正在寻找一些关于我所面临的一个复杂问题的线索,关于4D空间中的插值 我有一个数据集,由三维空间中的340个点组成(我有三个变量——a、B、C——每个变量由340个元素定义)。每个点由输出变量的某个值标识。所以,一般来说我有 f(A,B,C)=D 我需要对数据集进行插值,以便预测设计空间中每个点的D值。我所做的是编写一个小脚本,通过numpy方法linalg.lstsq获得多项式m的系数 def polyfit4d(x,y,z, metric, order): ncols = (orde

我正在寻找一些关于我所面临的一个复杂问题的线索,关于4D空间中的插值

我有一个数据集,由三维空间中的340个点组成(我有三个变量——a、B、C——每个变量由340个元素定义)。每个点由输出变量的某个值标识。所以,一般来说我有

f(A,B,C)=D

我需要对数据集进行插值,以便预测设计空间中每个点的D值。我所做的是编写一个小脚本,通过numpy方法linalg.lstsq获得多项式m的系数

def polyfit4d(x,y,z, metric, order):
    ncols = (order + 1)**3
    G = np.zeros((x.size, ncols))
    ij = itertools.product(range(order+1), repeat=3)
    for w, (i,j,k) in enumerate(ij):
        G[:,w] = x**i * y**j * z**k

    m, residuals, rank, s = np.linalg.lstsq(G, metric)

    return m, residuals
然后,我使用一个求值函数来获得设计空间中所有点的函数值

def polyval4d(x, y, z, m):
     string = ''
     order = int(math.ceil(((len(m))**(1/3.0))-1))
     ij = itertools.product(range(order+1), repeat=3)
     f = np.zeros_like(x)
     for a, (i,j,k) in zip(m, ij):
     f += a * x**i * y**j * z**k

     return f
由于我的设计空间是三维的,我将设计空间的所有点X、Y、Z传递给polyval函数三个3D矩阵。 f是输出D的3D矩阵。该矩阵中的每一点都是计算出的D值,用于评估设计空间中每一点的多项式(使用多元拟合找到)(抱歉,这句话很复杂)

然后我要做的是绘制这个3D设计空间的一部分的等高线图。我选择Z的一个值,然后根据D的值绘制由X,Y形成的二维平面和等高线水平。 问题是结果不是我所期望的。等高线图的颜色几乎相同,其中一个角有一些变化

我在互联网上到处搜索,Python wiki也建议只适用于2D情况的函数。 有没有人遇到过这样的问题?在这个N维多项式的求值/定义中,我遗漏了什么吗

非常感谢您的关注


Federico

如果您先查看数据,可能会有所帮助:可能有一些错误或数据“平坦”。如果你根据D给点上色,比如从红色到蓝色,那么你可以在3D中绘制散点图。如果你有一些控件来旋转它,那么你可以对数据有一些感觉。谢谢Andrei!非常宝贵的建议;)无论如何,我在一开始就做了初步评估设计空间,但我“忘记”了这一点。现在我又看了一遍,我对我的函数应该具有的行为有了更好的了解。无论如何,我正在探索新的方法来面对这个问题,我会发布更新。谢谢你的时间!如果您先查看数据,可能会有所帮助:可能有一些错误或数据“平坦”。如果你根据D给点上色,比如从红色到蓝色,那么你可以在3D中绘制散点图。如果你有一些控件来旋转它,那么你可以对数据有一些感觉。谢谢Andrei!非常宝贵的建议;)无论如何,我在一开始就做了初步评估设计空间,但我“忘记”了这一点。现在我又看了一遍,我对我的函数应该具有的行为有了更好的了解。无论如何,我正在探索新的方法来面对这个问题,我会发布更新。谢谢你的时间!