utilizando el sistema;
espacio de nombres Zhou.CSharp.Algorithm
{ /// <summary> /// Class LEquations para resolver ecuaciones lineales /// Original Zhou Changfa /// Adaptado a una profunda confusión /// </summary> public static parcial class LEquations {
/// <summary>
/// Método inverso generalizado para resolver problemas de mínimos cuadrados lineales
/// </summary>
/// <param name="mtxLECoef">matriz de coeficientes especificada</param>
/// <param name= "mtxLEConst">matriz constante especificada</param>
/// <param name="mtxResult">Objeto de matriz, devuelve la matriz de solución del sistema de ecuaciones</param>
/// <param name="mtxAP">Objeto de matriz, devuelve la matriz inversa generalizada de la matriz de coeficientes</param>
/// <param name="mtxU">Objeto Matrix, devuelve matriz U</param>
/// <param name="mtxV">Objeto Matrix, devuelve matriz V </param>
/// <param name="eps">Precisión de control</param>
/// <return>Tipo bool, si la solución del sistema de ecuaciones es exitosa</return>
public static bool GetRootsetGinv(MatrixmtxLECoef, Matrix mtxLEConst, Matrix mtxResult, Matrix mtxAP, Matrix mtxU, Matrix mtxV, doble eps)
{
// Número de ecuaciones e incógnitas
int m = mtxLECoef.GetNumRows();
int n = mtxLECoef.GetNumColumns();
// Inicializar el vector de solución
mtxResult.Init(n, 1);
double[] pDataConst = mtxLEConst.GetData();
double[] x = mtxResult.GetData();
// matriz temporal
Matrix mtxA = new Matrix(mtxLECoef);
// Encuentra la matriz inversa generalizada
if (!Matrix.InvertUV(mtxA, mtxAP, mtxU, mtxV, eps))
{ return false; }
doble[] pAPData = mtxAP.GetData();
// 求解
para (int i = 0; i <= n - 1; i++)
{ x[i] = 0.0; for (int j = 0; j <= m - 1; j++) { x[i] = x[i] + pAPData[i * m + j] * pDataConst[j]; } } devuelve verdadero; } }
}