Mínimo cuadrado ponderado: ajusta un plano al conjunto de puntos 3D

Estoy ajustando un plano a un conjunto de puntos 3D con el método de mínimos cuadrados. Ya tengo un algoritmo para hacer eso, pero quiero modificarlo para usar el mínimo cuadrado ponderado. Lo que significa que tengo un peso para cada punto (cuanto mayor sea el peso, más cerca debe estar el avión del punto).

l algoritmo actual (sin peso) se ve así:

Calcule la suma:

for(Point3D p3d : pointCloud) {
    pos = p3d.getPosition();
    fSumX += pos[0];
    fSumY += pos[1];
    fSumZ += pos[2];
    fSumXX += pos[0]*pos[0];
    fSumXY += pos[0]*pos[1];
    fSumXZ += pos[0]*pos[2];
    fSumYY += pos[1]*pos[1];
    fSumYZ += pos[1]*pos[2];
}

que hacen las matrices:

double[][] A = {
    {fSumXX, fSumXY, fSumX},
    {fSumXY, fSumYY, fSumY},
    {fSumX,  fSumY,  pointCloud.size()}
};

double[][] B =  {
    {fSumXZ},
    {fSumYZ},
    {fSumZ}
};

que resuelva Ax = B y los 3 componentes de la solución son los coeficientes del plano ajustado ...

Entonces, ¿pueden ayudarme a modificar esto para usar pesos? ¡Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta