new FieldLUDecomposition<BigFraction>(bigP).getSolver();
final IAST list = (IAST) ast.get(1); matrix = Convert.list2Matrix(list); final FieldLUDecomposition<ExprFieldElement> lu = new FieldLUDecomposition<ExprFieldElement>(matrix); final FieldMatrix<ExprFieldElement> lMatrix = lu.getL(); final FieldMatrix<ExprFieldElement> uMatrix = lu.getU(); final int[] iArr = lu.getPivot();
@Override public ExprFieldElement matrixEval(final FieldMatrix<ExprFieldElement> matrix) { if (matrix.getRowDimension() == 2 && matrix.getColumnDimension() == 2) { // 2x2 matrix ExprFieldElement[] row1 = matrix.getRow(0); ExprFieldElement[] row2 = matrix.getRow(1); return row1[0].multiply(row2[1]).subtract((row1[1].multiply(row2[0]))); } if (matrix.getRowDimension() == 3 && matrix.getColumnDimension() == 3) { // 3x3 matrix ExprFieldElement[] row1 = matrix.getRow(0); ExprFieldElement[] row2 = matrix.getRow(1); ExprFieldElement[] row3 = matrix.getRow(2); return row1[0].multiply(row2[1].multiply(row3[2])).subtract( (row1[0].multiply(row2[2].multiply(row3[1])))).subtract( (row1[1].multiply(row2[0].multiply(row3[2])))).add( (row1[1].multiply(row2[2].multiply(row3[0])))).add( (row1[2].multiply(row2[0].multiply(row3[1])))).subtract( (row1[2].multiply(row2[1].multiply(row3[0])))); } final FieldLUDecomposition<ExprFieldElement> lu = new FieldLUDecomposition<ExprFieldElement>(matrix); return lu.getDeterminant(); }
/** Simple constructor. * @param field field to which the time and state vector elements belong * @param n number of steps of the multistep method * (excluding the one being computed) */ private AdamsNordsieckFieldTransformer(final Field<T> field, final int n) { this.field = field; final int rows = n - 1; // compute coefficients FieldMatrix<T> bigP = buildP(rows); FieldDecompositionSolver<T> pSolver = new FieldLUDecomposition<T>(bigP).getSolver(); T[] u = MathArrays.buildArray(field, rows); Arrays.fill(u, field.getOne()); c1 = pSolver.solve(new ArrayFieldVector<T>(u, false)).toArray(); // update coefficients are computed by combining transform from // Nordsieck to multistep, then shifting rows to represent step advance // then applying inverse transform T[][] shiftedP = bigP.getData(); for (int i = shiftedP.length - 1; i > 0; --i) { // shift rows shiftedP[i] = shiftedP[i - 1]; } shiftedP[0] = MathArrays.buildArray(field, rows); Arrays.fill(shiftedP[0], field.getZero()); update = new Array2DRowFieldMatrix<T>(pSolver.solve(new Array2DRowFieldMatrix<T>(shiftedP, false)).getData()); }
final FieldLUDecomposition<T> decomposition = new FieldLUDecomposition<T>(new Array2DRowFieldMatrix<T>(a, false)); final FieldMatrix<T> x = decomposition.getSolver().solve(new Array2DRowFieldMatrix<T>(b, false));
@Override public FieldMatrix<ExprFieldElement> matrixEval(FieldMatrix<ExprFieldElement> matrix) { final FieldLUDecomposition<ExprFieldElement> lu = new FieldLUDecomposition<ExprFieldElement>( matrix); FieldDecompositionSolver<ExprFieldElement> solver = lu.getSolver(); if (!solver.isNonSingular()) { return null; } return solver.getInverse(); }
new FieldLUDecomposition<BigFraction>(bigP).getSolver();
/** Simple constructor. * @param field field to which the time and state vector elements belong * @param n number of steps of the multistep method * (excluding the one being computed) */ private AdamsNordsieckFieldTransformer(final Field<T> field, final int n) { this.field = field; final int rows = n - 1; // compute coefficients FieldMatrix<T> bigP = buildP(rows); FieldDecompositionSolver<T> pSolver = new FieldLUDecomposition<T>(bigP).getSolver(); T[] u = MathArrays.buildArray(field, rows); Arrays.fill(u, field.getOne()); c1 = pSolver.solve(new ArrayFieldVector<T>(u, false)).toArray(); // update coefficients are computed by combining transform from // Nordsieck to multistep, then shifting rows to represent step advance // then applying inverse transform T[][] shiftedP = bigP.getData(); for (int i = shiftedP.length - 1; i > 0; --i) { // shift rows shiftedP[i] = shiftedP[i - 1]; } shiftedP[0] = MathArrays.buildArray(field, rows); Arrays.fill(shiftedP[0], field.getZero()); update = new Array2DRowFieldMatrix<T>(pSolver.solve(new Array2DRowFieldMatrix<T>(shiftedP, false)).getData()); }
@Override public IExpr evaluate(final IAST ast) { Validate.checkSize(ast, 3); FieldMatrix<ExprFieldElement> aMatrix; FieldVector<ExprFieldElement> bVector; try { aMatrix = Convert.list2Matrix((IAST) ast.get(1)); bVector = Convert.list2Vector((IAST) ast.get(2)); final FieldLUDecomposition<ExprFieldElement> lu = new FieldLUDecomposition<ExprFieldElement>(aMatrix); FieldDecompositionSolver<ExprFieldElement> fds = lu.getSolver(); FieldVector<ExprFieldElement> xVector = fds.solve(bVector); return F.eval(F.Together(Convert.vector2List(xVector))); } catch (final ClassCastException e) { if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } catch (final IndexOutOfBoundsException e) { if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } return null; }
final FieldLUDecomposition<T> decomposition = new FieldLUDecomposition<T>(new Array2DRowFieldMatrix<T>(a, false)); final FieldMatrix<T> x = decomposition.getSolver().solve(new Array2DRowFieldMatrix<T>(b, false));