예제 #1
0
		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;
		}
예제 #2
0
		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;
		}
예제 #3
0
		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;
		}