Eval.java
/*
* $Id: Eval.java,v 1.14 2008/03/15 00:23:40 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.matrix;
import org.mklab.nfc.matrix.DoubleComplexMatrix;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.scalar.DoubleComplexNumber;
import org.mklab.nfc.scalar.DoubleComplexPolynomial;
import org.mklab.nfc.scalar.DoubleNumber;
import org.mklab.nfc.scalar.DoublePolynomial;
import org.mklab.nfc.scalar.DoubleRationalPolynomial;
/**
* 数式(多項式、有理多項式等)の評価を計算するクラスです。
*
* <p> Evaluation of symbolic expression
*
* @author koga
* @version $Revision: 1.14 $
*/
public class Eval {
/**
* 多項式の評価を計算する
*
* @param p 評価する多項式
* @param w 変数に代入する値
* @return 評価値 (evaluated result)
*/
public static DoubleMatrix eval(DoublePolynomial p, DoubleMatrix w) {
int rowSize = w.getRowSize();
int columnSize = w.getColumnSize();
DoubleNumber unit = p.evaluate(w.getElement(1, 1));
DoubleMatrix pw = unit.createZeroGrid(rowSize, columnSize);
for (int i = 1; i <= rowSize; i++) {
for (int j = 1; j <= columnSize; j++) {
pw.setElement(i, j, p.evaluate(w.getElement(i, j)));
}
}
return pw;
}
/**
* 多項式の評価を計算する
*
* @param p 評価する多項式
* @param w 変数に代入する値
* @return 評価値 (evaluated result)
*/
public static DoubleComplexMatrix eval(DoubleComplexPolynomial p, DoubleComplexMatrix w) {
int rowSize = w.getRowSize();
int columnSize = w.getColumnSize();
DoubleComplexNumber unit = p.evaluate(w.getElement(1, 1));
DoubleComplexMatrix pw = unit.createZeroGrid(rowSize, columnSize);
for (int i = 1; i <= rowSize; i++) {
for (int j = 1; j <= columnSize; j++) {
pw.setElement(i, j, p.evaluate(w.getElement(i, j)));
}
}
return pw;
}
/**
* 有理多項式の評価を計算する
*
* @param g 評価する有理多項式
* @param w 変数に代入する値
* @return 評価値 (evaluated result)
*/
public static DoubleMatrix eval(DoubleRationalPolynomial g, DoubleMatrix w) {
int rowSize = w.getRowSize();
int columnSize = w.getColumnSize();
DoubleNumber unit = g.evaluate(w.getElement(1, 1));
DoubleMatrix pw = unit.createZeroGrid(rowSize, columnSize);
for (int i = 1; i <= rowSize; i++) {
for (int j = 1; j <= columnSize; j++) {
pw.setElement(i, j, g.evaluate(w.getElement(i, j)));
}
}
return pw;
// int m = w.getRowSize();
// int n = w.getColumnSize();
//
// if (g.isReal() && w instanceof DoubleMatrix) {
// DoubleMatrix gw = new DoubleMatrix(m, n);
// for (int i = 1; i <= m; i++) {
// for (int j = 1; j <= n; j++) {
// ((DoubleMatrix)gw).setElement(i, j, g.evaluate(((DoubleMatrix)w).getDoubleElement(i, j)));
// }
// }
//
// return gw;
// }
//
// DoubleMatrix gw = new DoubleComplexMatrix(m, n);
// for (int i = 1; i <= m; i++) {
// for (int j = 1; j <= n; j++) {
// ((DoubleComplexMatrix)gw).setElement(i, j, g.evaluate(((DoubleComplexMatrix)w).getElement(i, j)));
// }
// }
//
// return gw;
}
}