<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://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="rtitr">
    <refnamediv>
        <refname>rtitr</refname>
        <refpurpose>離散時間応答  (伝達行列)  </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>[y]=rtitr(Num,Den,u [,up,yp])</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>パラメータ</title>
        <variablelist>
            <varlistentry>
                <term>Num,Den</term>
                <listitem>
                    <para>
                        多項式行列 (それぞれの次元 : <literal>n</literal>x<literal>m</literal> および <literal>n</literal>x<literal>n</literal>)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>u</term>
                <listitem>
                    <para>
                        実数行列 (次元 <literal>m</literal>x<literal>(t+1)</literal>
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>up,yp</term>
                <listitem>
                    <para>
                        実数行列 (<literal>up</literal> 次元 <literal>m</literal>x<literal>(maxi(degree(Den)))</literal> (デフォルト値=<literal>0</literal>) ,
                        <literal>yp</literal> 次元 <literal>n</literal>x
                        <literal>(maxi(degree(Den)))</literal>)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>y</term>
                <listitem>
                    <para>実数行列</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>説明</title>
        <para>
            <literal>y=rtitr(Num,Den,u [,up,yp])</literal> は,
            入力 <literal>u</literal> の
            伝達行列が <literal>Den^-1 Num</literal> となる
            離散時間線形システムの時間応答を返します.
            ただし,<literal>y</literal> および <literal>u</literal> には
            t=0,1,...において<literal>Den y = Num u</literal>
            となる関係があります.
        </para>
        <para>
            <literal>d1=maxi(degree(Den))</literal>,および
            <literal>d2=maxi(degree(Num))</literal> の場合,
            多項式行列 <literal>Den(z)</literal> および
            <literal>Num(z)</literal> はそれぞれ以下のように
            記述されます:
        </para>
        <programlisting role=""><![CDATA[
D(z) = D_0  + D_1  z + ... + D_d1   z^d1
N(z) = N_0  + N_1  z + ... + N_d2   z^d2
 ]]></programlisting>
        <para>
            そして <literal>Den y = Num u</literal> は
            次の再帰式として解釈されます:
        </para>
        <programlisting role=""><![CDATA[
D(0)y(t)+D(1)y(t+1)+...+ D(d1)y(t+d1)= N(0) u(t) +....+ N(d2) u(t+d2)
 ]]></programlisting>
        <para>
            <literal>D(d1)</literal> は正則と仮定されます.
        </para>
        <para>
            uの列はt=0,1,...,Tにおけるシステムの入力です:
        </para>
        <programlisting role=""><![CDATA[
u=[u(0) , u(1),...,u(T)]
 ]]></programlisting>
        <para>
            <literal>t=0,1,...,T+d1-d2</literal>における出力が,
            行列<literal>y</literal>の列になります:
        </para>
        <programlisting role=""><![CDATA[
y = [y(0), y(1),  .... y(T+d1-d2)]
 ]]></programlisting>
        <para>
            <literal>up</literal> および <literal>yp</literal> は
            t &lt; 0 における初期条件を定義します, すなわち
        </para>
        <programlisting role=""><![CDATA[
up = [u(-d1), ..., u(-1)  ]
yp = [y(-d1), ...  y(-1)  ]
 ]]></programlisting>
        <para>
            <literal>d1</literal> および <literal>d2</literal>の相対値に
            依存して, <literal>up</literal>, <literal>yp</literal>
            の最も左の要素のいくつかが無視されます.
            <literal>up</literal> および
            <literal>yp</literal> のデフォルト値はゼロです:
            <literal>up = 0*ones(m,d1), yp=0*ones(n,d1)</literal>
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
z=poly(0,'z');
Num=1+z;Den=1+z;u=[1,2,3,4,5];
rtitr(Num,Den,u)-u
//Other examples
//siso
//causal
n1=1;d1=poly([1 1],'z','coeff');       // y(j)=-y(j-1)+u(j-1)
r1=[0 1 0 1 0 1 0 1 0 1 0];
r=rtitr(n1,d1,ones(1,10));norm(r1-r,1)
//hot restart
r=rtitr(n1,d1,ones(1,9),1,0);norm(r1(2:11)-r)
//non causal
n2=poly([1 1 1],'z','coeff');d2=d1;    // y(j)=-y(j-1)+u(j-1)+u(j)+u(j+1)
r2=[2 1 2 1 2 1 2 1 2];
r=rtitr(n2,d2,ones(1,10));norm(r-r2,1)
//hot restart
r=rtitr(n2,d2,ones(1,9),1,2);norm(r2(2:9)-r,1)
//
//MIMO example
//causal
d1=d1*diag([1 0.5]);n1=[1 3 1;2 4 1];r1=[5;14]*r1;
r=rtitr(n1,d1,ones(3,10));norm(r1-r,1)
//
r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
norm(r1(:,2:11)-r,1)
//polynomial n1  (same ex.)
n1(1,1)=poly(1,'z','c');r=rtitr(n1,d1,ones(3,10));norm(r1-r,1)
//
r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
norm(r1(:,2:11)-r,1)
//non causal
d2=d1;n2=n2*n1;r2=[5;14]*r2;
r=rtitr(n2,d2,ones(3,10));norm(r2-r)
//
r=rtitr(n2,d2,ones(3,9),[1;1;1],[10;28]);
norm(r2(:,2:9)-r,1)
//
//  State-space or transfer
a = [0.21 , 0.63 , 0.56 , 0.23 , 0.31
     0.76 , 0.85 , 0.66 , 0.23 , 0.93
     0 , 0.69 , 0.73 , 0.22 , 0.21
     0.33 , 0.88 , 0.2 , 0.88 , 0.31
     0.67 , 0.07 , 0.54 , 0.65 , 0.36];
b = [0.29 , 0.5 , 0.92
     0.57 , 0.44 , 0.04
     0.48 , 0.27 , 0.48
     0.33 , 0.63 , 0.26
     0.59 , 0.41 , 0.41];
c = [0.28 , 0.78 , 0.11 , 0.15 , 0.84
     0.13 , 0.21 , 0.69 , 0.7 , 0.41];
d = [0.41 , 0.11 , 0.56
     0.88 , 0.2 , 0.59];
s=syslin('d',a,b,c,d);
h=ss2tf(s);num=h('num');den=h('den');den=den(1,1)*eye(2,2);
u=1;u(3,10)=0;r3=flts(u,s);
r=rtitr(num,den,u);norm(r3-r,1)
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="ltitr">ltitr</link>
            </member>
            <member>
                <link linkend="exp">exp</link>
            </member>
            <member>
                <link linkend="flts">flts</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
