所以我想解决等式z= a + b*y +c*x
。获得a,b,c
。
即:使(平面)表面适合3D空间中的散射点负荷。
但我似乎找不到任何东西!我认为这个简单的问题会有一个简单的模块。
我试过,其中x,y,z是数组;
ys=zip(x,y)
(coeffs, residuals, rank, sing_vals) = np.linalg.lstsq(ys,z)
我正确地想到coeffs = b,c?
或者我完全走错了方向。我似乎无法找到任何可以在3d中工作的东西......
答案 0 :(得分:2)
我认为你正走在正确的轨道上。您仍然可以尝试遵循scipy.linalg
documentation的示例,特别是求解最小二乘...`部分
A = np.column_stack((np.ones(x.size), x, y))
c, resid,rank,sigma = np.linalg.lstsq(A,zi)
(我们为常量添加了一列1。)
答案 1 :(得分:0)
常数a,b和c是您需要解决的未知数。
如果将N(x,y,z)点替换为等式,则将有3个未知数的N个等式。你可以把它写成矩阵:
[x1 y1 1]{ a } { z1 }
[x2 y2 1]{ b } { z2 }
[x3 y3 1]{ c } = { z3 }
...
[xn yn 1] { zn }
或
Ac = z
其中A是Nx3矩阵,c是3x1向量,z是3xN向量。
如果你通过A的转置预测两侧,你将得到一个3x3矩阵的方程,你可以求解你想要的系数。
使用LU分解和前后替换。