C#, código sea picking shells (41): el código fuente de C# del "método inverso generalizado" para resolver el "problema de mínimos cuadrados lineales"

 

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;         } }








}

Supongo que te gusta

Origin blog.csdn.net/beijinghorn/article/details/131133542
Recomendado
Clasificación