DoubleBlockSampledDataStaticSystem.java

/**
 * $Id$
 *
 * Copyright (C) 2004-2005 Koga Laboratory. All rights reserved.
 */

package org.mklab.tool.control.system.sampled;

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 DoubleBlockSampledDataStaticSystem extends DoubleBlockSampledDataSystem implements DoubleSampledDataStaticSystem {

  /**
   * 新しく生成された<code>BlockSampledDataStaticSystem</code>オブジェクトを初期化します。
   * 
   * @param elements 隣接行列
   * @param inputNodes 入力ノード番号のリスト(番号は1から始まる)
   * @param outputNodes 出力ノード番号のリスト(番号は1から始まる)
   */
  public DoubleBlockSampledDataStaticSystem(final DoubleSystemOperator[][] elements, final List<Integer> inputNodes, final List<Integer> outputNodes) {
    super(elements, inputNodes, outputNodes);
    setDynamic(false);
  }

  /**
   * {@inheritDoc}
   */
  public DoubleMatrix outputEquation(final double t, final DoubleMatrix u) throws SolverStopException {
    resetNodeValue();
    setInputNodeValue(u);
    calcNodeValue(t);
    return getOutputNodeValue();
  }

  /**
   * {@inheritDoc}
   */
  public DoubleMatrix outputEquation(final double t) throws SolverStopException {
    resetNodeValue();
    setInputNodeValue(new DoubleMatrix(getInputSize(), 1));
    calcNodeValue(t);
    return getOutputNodeValue();
  }

  /**
   * {@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);
  }
}