InvertUV() public method

public InvertUV ( Matrix mtxAP, Matrix mtxU, Matrix mtxV, double eps ) : bool
mtxAP Matrix
mtxU Matrix
mtxV Matrix
eps double
return bool
Ejemplo n.º 1
0
        /**
         * ���������С��������Ĺ����淨
         *
         * @param mtxResult - Matrix���󣬷��ط���������
         * @param mtxAP - Matrix���󣬷���ϵ������Ĺ��������
         * @param mtxU - Matrix���󣬷���U����
         * @param mtxV - Matrix���󣬷���V����
         * @param eps - ���ƾ���
         * @return bool �ͣ�����������Ƿ�ɹ�
         */
        public bool GetRootsetGinv(Matrix mtxResult, Matrix mtxAP, Matrix mtxU, Matrix mtxV, double eps)
        {
            int i,j;

            // ���̸�����δ֪������
            int m = mtxLECoef.GetNumRows();
            int n = mtxLECoef.GetNumColumns();

            // ��ʼ��������
            mtxResult.Init(n, 1);

            double[] pDataConst = mtxLEConst.GetData();
            double[] x = mtxResult.GetData();

            // ��ʱ����
            Matrix mtxA = new Matrix(mtxLECoef);

            // ����������
            if (! mtxA.InvertUV(mtxAP, mtxU, mtxV, eps))
                return false;

            double[] pAPData = mtxAP.GetData();

            // ���
            for (i=0; i<=n-1; i++)
            {
                x[i]=0.0;
                for (j=0; j<=m-1; j++)
                    x[i]=x[i]+pAPData[i*m+j]*pDataConst[j];
            }

            return true;
        }