<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA -
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="dhinf">
    <refnamediv>
        <refname>dhinf</refname>
        <refpurpose>離散時間システムのH無限大設計</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>[AK,BK,CK,DK,(RCOND)] = dishin(A,B,C,D,ncon,nmeas,gamma)</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>パラメータ</title>
        <variablelist>
            <varlistentry>
                <term>A</term>
                <listitem>
                    <para>n x n システム状態行列  A.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>B</term>
                <listitem>
                    <para>n x m システム入力行列 B.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>C</term>
                <listitem>
                    <para>p x n システム出力行列 C.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>D</term>
                <listitem>
                    <para>p x m システム行列 D.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>ncon</term>
                <listitem>
                    <para>制御入力の数. m &gt;= ncon &gt;= 0, p-nmeas &gt;= ncon.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nmeas</term>
                <listitem>
                    <para>観測量の数. p &gt;= nmeas &gt;= 0, m-ncon &gt;= nmeas.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>gamma</term>
                <listitem>
                    <para>
                        <literal>H無限大</literal> 設計で使用されるパラメータ gamma.
                        gammaはコントローラが存在できるよう十分に大きいことが仮定されます.
                        gamma &gt;= 0.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>AK</term>
                <listitem>
                    <para>n x n コントローラ状態行列 AK.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>BK</term>
                <listitem>
                    <para>n x nmeas コントローラ入力行列 BK.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>CK</term>
                <listitem>
                    <para>ncon x n コントローラ出力行列 CK.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>DK</term>
                <listitem>
                    <para>ncon x nmeas コントローラ行列 DK.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>RCOND</term>
                <listitem>
                    <para>
                        行列の条件数の逆数の推定値を含むベクトル.
                        この値は,
                        コントローラを計算する際に解くリカッチ方程式の条件数の逆数として推定
                        されるものです.
                        ([1]のアルゴリズムに関する記述を参照.)
                    </para>
                    <variablelist>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(1) は行列 R3の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(2) は行列 R1 - R2'*inv(R3)*R2の条件数の逆数を含む</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(3) は行列 V21の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(4) は行列St3の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(5) は行列 V12の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(6) は行列 Im2 + DKHAT*D22の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(7) はXリカッチ方程式の条件数の逆数を含む,</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>RCOND</term>
                            <listitem>
                                <para>(8) はZリカッチ方程式の条件数の逆数を含む.</para>
                            </listitem>
                        </varlistentry>
                    </variablelist>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>説明</title>
        <para>
            <literal>[AK,BK,CK,DK,(RCOND)] = dhinf(A,B,C,D,ncon,nmeas, gamma)</literal>
            H無限大 (準)最適 n状態コントローラ行列
        </para>
        <programlisting role=""><![CDATA[
    | AK | BK |
K = |----|----|,
    | CK | DK |
 ]]></programlisting>
        <para>
            を以下の離散時間システム用に計算する場合,
        </para>
        <programlisting role=""><![CDATA[
    | A  | B1  B2  |   | A | B |
P = |----|---------| = |---|---|,
    | C1 | D11 D12 |   | C | D |
    | C2 | D21 D22 |
 ]]></programlisting>
        <para>
            gamma の値を指定すると, コントローラの計算に使用されます.
            ただし, B2 の列数は制御入力の数(ncon)と同じ,
            C2の行数は観測量の数(nmeas)と同じとなります.
        </para>
    </refsection>
    <refsection>
        <title>参考文献</title>
        <para>
            [1] P.Hr. Petkov, D.W. Gu and M.M. Konstantinov. Fortran 77 routines        for Hinf and H2 design of linear discrete-time control systems.        Report99-8, Department of Engineering, Leicester University,        April 1999.
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
//example from Niconet report SLWN1999-12
//Hinf
A=[-0.7  0    0.3  0   -0.5 -0.1
   -0.6  0.2 -0.4 -0.3  0    0
   -0.5  0.7 -0.1  0    0   -0.8
   -0.7  0    0   -0.5 -1    0
    0    0.3  0.6 -0.9  0.1 -0.4
    0.5 -0.8  0    0    0.2 -0.9];
B=[-1 -2 -2  1  0
    1  0  1 -2  1
   -3 -4  0  2 -2
    1 -2  1  0 -1
    0  1 -2  0  3
    1  0  3 -1 -2];
C=[ 1 -1  2 -2  0 -3
   -3  0  1 -1  1  0
    0  2  0 -4  0 -2
    1 -3  0  0  3  1
    0  1 -2  1  0 -2];
D=[1 -1 -2  0  0
   0  1  0  1  0
   2 -1 -3  0  1
   0  1  0  1 -1
   0  0  1  2  1];
ncon=2
nmeas=2
gam=111.30;
[AK,BK,CK,DK] = dhinf(A,B,C,D,ncon,nmeas,gam)
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="hinf">hinf</link>
            </member>
            <member>
                <link linkend="h_inf">h_inf</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
