DoubleBlockDiscreteStaticSystem.java
/**
* $Id$
*
* Copyright (C) 2004-2005 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.control.system.discrete;
import java.util.List;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.ode.SolverStopException;
import org.mklab.tool.control.system.DoubleSystemOperator;
/**
* 差分方程式で表現されるブロック離散時間静的システムを表すクラスです。
*
* @author koga
* @version $Revision$
*/
public class DoubleBlockDiscreteStaticSystem extends DoubleBlockDiscreteSystem implements DoubleDiscreteStaticSystem {
/**
* 新しく生成された<code>BlockDiscreteStaticSystem</code>オブジェクトを初期化します。
*
* @param elements 隣接行列
* @param inputNodes 入力ノード番号のリスト(番号は1から始まる)
* @param outputNodes 出力ノード番号のリスト(番号は1から始まる)
*/
public DoubleBlockDiscreteStaticSystem(final DoubleSystemOperator[][] elements, final List<Integer> inputNodes, final List<Integer> outputNodes) {
super(elements, inputNodes, outputNodes);
setDynamic(false);
}
/**
* {@inheritDoc}
*/
public DoubleMatrix outputEquation(final int k, final DoubleMatrix u) throws SolverStopException {
resetNodeValue();
setInputNodeValue(u);
calcNodeValue(k);
return getOutputNodeValue();
}
/**
* {@inheritDoc}
*/
public DoubleMatrix outputEquation(final double t, final DoubleMatrix u) throws SolverStopException {
resetNodeValue();
setInputNodeValue(u);
calcNodeValue(t);
return getOutputNodeValue();
}
/**
* @see org.mklab.tool.control.system.discrete.DiscreteStaticSystem#outputEquation(int)
*/
public DoubleMatrix outputEquation(final int k) throws SolverStopException {
resetNodeValue();
setInputNodeValue(new DoubleMatrix(getInputSize(), 1));
calcNodeValue(k);
return getOutputNodeValue();
}
/**
* {@inheritDoc}
*/
public DoubleMatrix outputEquation(final double t) throws SolverStopException {
resetNodeValue();
setInputNodeValue(new DoubleMatrix(getInputSize(), 1));
calcNodeValue(t);
return getOutputNodeValue();
}
/**
* @see org.mklab.nfc.ode.DiscreteAlgebraicSystem#inputOutputEquation(int)
*/
public DoubleMatrix inputOutputEquation(final int k) throws SolverStopException {
final DoubleMatrix u = new DoubleMatrix(getInputSize(), 1);
final DoubleMatrix y = outputEquation(k);
return u.appendDown(y);
}
/**
* {@inheritDoc}
*/
public DoubleMatrix inputOutputEquation(final double t) throws SolverStopException {
final DoubleMatrix u = new DoubleMatrix(getInputSize(), 1);
final DoubleMatrix y = outputEquation(t);
return u.appendDown(y);
}
}