public static JamaMatrix Polynomialize(JamaMatrix values, int degree) { JamaMatrix jamaMatrix = IPolyPointTransformer.PolyExps(degree); JamaMatrix jamaMatrix2 = new JamaMatrix(values.RowDimension, jamaMatrix.RowDimension); for (int i = 0; i < jamaMatrix.RowDimension; i++) { for (int j = 0; j < values.RowDimension; j++) { jamaMatrix2.SetElement(j, i, Math.Pow(values.GetElement(j, 0), jamaMatrix.GetElement(i, 0)) * Math.Pow(values.GetElement(j, 1), jamaMatrix.GetElement(i, 1))); } } JamaMatrix jamaMatrix3 = new JamaMatrix(jamaMatrix2.RowDimension * 2, jamaMatrix2.ColumnDimension * 2); jamaMatrix3.setMatrix(0, jamaMatrix2.RowDimension - 1, 0, jamaMatrix2.ColumnDimension - 1, jamaMatrix2); jamaMatrix3.setMatrix(jamaMatrix2.RowDimension, 2 * jamaMatrix2.RowDimension - 1, jamaMatrix2.ColumnDimension, 2 * jamaMatrix2.ColumnDimension - 1, jamaMatrix2); return jamaMatrix3; }
private static JamaMatrix PointRoll(JamaMatrix unrolledVector, int numColumns) { int num = unrolledVector.RowDimension / numColumns; if (num * numColumns != unrolledVector.RowDimension) { throw new Exception("unrolledVector length not a multiple of numColumns"); } if (unrolledVector.ColumnDimension != 1) { throw new Exception("unrolledVector not a column vector"); } JamaMatrix jamaMatrix = new JamaMatrix(num, numColumns); for (int i = 0; i < numColumns; i++) { jamaMatrix.setMatrix(0, num - 1, i, i, unrolledVector.getMatrix(i * num, (i + 1) * num - 1, 0, 0)); } return jamaMatrix; }
private static JamaMatrix PointUnroll(JamaMatrix pointVector) { JamaMatrix jamaMatrix = new JamaMatrix(pointVector.RowDimension * pointVector.ColumnDimension, 1); for (int i = 0; i < pointVector.ColumnDimension; i++) { jamaMatrix.setMatrix(pointVector.RowDimension * i, pointVector.RowDimension * (i + 1) - 1, 0, 0, pointVector.getMatrix(0, pointVector.RowDimension - 1, i, i)); } return jamaMatrix; }