/// <summary> /// Instancia uma nova instância de objectos do tipo <see cref="SymmetricLdlDecompLinearSystemAlgorithm{CoeffType}"/>. /// </summary> /// <param name="decompositionAlgorithm">O algoritmo da decomposição.</param> public SymmetricLdlDecompLinearSystemAlgorithm( ATriangDiagSymmMatrixDecomp <CoeffType> decompositionAlgorithm) { if (decompositionAlgorithm == null) { throw new ArgumentNullException("decompositionAlgorithm"); } else { this.decompositionAlgorithm = decompositionAlgorithm; this.independentVectorFactory = m => new ArrayMathVector <CoeffType>(m); this.basisVectorFactory = (m, d) => new ArrayMathVector <CoeffType>(m, d); } }
/// <summary> /// Instancia uma nova instância de objectos do tipo <see cref="SymmetricLdlDecompLinearSystemAlgorithm{CoeffType}"/>. /// </summary> /// <param name="decompositionAlgorithm">O algoritmo da decomposição.</param> /// <param name="independentVectorFactory"> /// O delegado responsável pela criação da matriz associada ao vector independente da solução, /// devendo ser possível explicitar um valor por defeito. /// </param> /// <param name="basisVectorFactory"> /// O delegado responsável pela criação das matrizes associadas aos vectores da base da solução. /// </param> public SymmetricLdlDecompLinearSystemAlgorithm( ATriangDiagSymmMatrixDecomp <CoeffType> decompositionAlgorithm, Func <int, IMathVector <CoeffType> > independentVectorFactory, Func <int, CoeffType, IMathVector <CoeffType> > basisVectorFactory) { if (decompositionAlgorithm == null) { throw new ArgumentNullException("decompositionAlgorithm"); } else if (independentVectorFactory == null) { throw new ArgumentNullException("independentVectorFactory"); } else if (basisVectorFactory == null) { throw new ArgumentNullException("basisVectorFactory"); } else { this.decompositionAlgorithm = decompositionAlgorithm; this.independentVectorFactory = independentVectorFactory; this.basisVectorFactory = basisVectorFactory; } }