%ɽ��   MATH2 ���ؽ�����̥ѥå�����
%
%����
%\Drireki{
%         94/04/04 �����, ��ë����
%         95/04/21 ��ë����
%        }
%
\Dchapterhead
\label{odelib}

\section{����}
���Υѥå�������ϢΩ����ʬ����������ʬ��Ԥ�����Τ�ΤǤ���.
�����˴ޤޤ��롼������礭��3�ĤΥ�٥�ˤ狼���.
�ǲ��ؤΥ�٥��,
����Υ��르�ꥺ��˽��ä�1���ƥå���ʬ���륢�르�ꥺ��롼�����,
���ξ�����٥����å��򤷤ʤ���2���ƥå���ʬ����Ŭ���ʹ���������
���ƥåѥ롼���󤬤���,
�Ǿ�̤˼ºݤ�Ϳ����줿��ʬ��֤���ʬ��Ԥ��ɥ饤�Х롼���󤬤���.
�桼�������̾盧�Υɥ饤�Х롼�����Ȥä���ʬ��Ԥ�.
���κ�, �桼�����ϻ��Ѥ��륢�르�ꥺ��롼����, �ޤ���,
���ƥåѥ롼�������Ū�˱����ƻ��ꤹ�뤳�Ȥ��Ǥ���.
\vspace{1em}

�ʤ�, ���Υ饤�֥��� Numerical Recipes �Υ��르�ꥺ���
��Ť���ΤǤ���.

\section{���֥롼����Υꥹ��}

  ���르�ꥺ��롼����

  \vspace{1em}
  \begin{tabular}{p{9cm}p{6cm}}
    {\tt CALL ODRKG(N,FCN,T,DT,X,DX,XOUT,WORK)} & ���-���å�-����. \\
    {\tt CALL ODRK4(N,FCN,T,DT,X,DX,XOUT,WORK)} & 4�����٤Υ��-���å�. \\
    {\tt CALL ODRK2(N,FCN,T,DT,X,DX,XOUT,WORK)} & 2�����٤Υ��-���å�. \\
    {\tt CALL ODRK1(N,FCN,T,DT,X,DX,XOUT,WORK)} & 1�����٤Υ��-���å�.
  \end{tabular}

  \vspace{1em}
  ���ƥåѥ롼����

  \vspace{1em}
  \begin{tabular}{p{9cm}p{6cm}}
    {\tt CALL ODRKGR(N,FCN,T,DT,EPSL,X,WORK)} & �������Τ����ߤ����. \\
    {\tt CALL ODRKGS(N,FCN,T,DT,EPSL,X,WORK)} & �������Τ����ߤ����. \\
    {\tt CALL ODRK4R(N,FCN,T,DT,EPSL,X,WORK)} & �������Τ����ߤ����. \\
    {\tt CALL ODRK4S(N,FCN,T,DT,EPSL,X,WORK)} & �������Τ����ߤ����.
  \end{tabular}

  \vspace{1em}
  �ɥ饤�Х롼����

  \vspace{1em}
  \begin{tabular}{p{9cm}p{6cm}}
     {\tt CALL ODRKDU(N,ALGOR,FCN,T,TEND,ISTEP,X,WORK)} &
       �����������ʬ��Ԥ�. \\
     {\tt CALL ODRKDV(N,STEPER,FCN,T,TINT,DT,X,WORK)} &
       �׵����٤��������褦����ʬ��Ԥ�.
  \end{tabular}

  \vspace{1em}
  �����ѿ������롼����

  \vspace{1em}
  \begin{tabular}{p{9cm}p{6cm}}
      {\tt CALL OD}{\it p}{\tt GET(CPARA,IPARA)} & �����ѿ��򻲾Ȥ���. \\
      {\tt CALL OD}{\it p}{\tt SET(CPARA,IPARA)} & �����ѿ������ꤹ��.
  \end{tabular}

\section{���֥롼���������}

\subsection{ODRKG/ODRK4/ODRK2/ODRK1}

\begin{enumerate}
  \item ��ǽ
      \begin{quote}
      ����Υ��르�ꥺ��˽���,
      Ϳ����줿���ƥå�����1���ƥåפ���ʬ��Ԥ�.
      ��ʬ���르�ꥺ���
      {\tt ODRKG}�����-���å�-����,
      {\tt ODRK4}��4�����٤Υ��-���å�,
      {\tt ODRK2}��2�����٤Υ��-���å�,
      {\tt ODRK1}��1�����٤Υ��-���å�(Euler)
      �Ǥ���.
      \end{quote}

  \item �ƤӽФ���ˡ
      \begin{quote}
      {\tt CALL ODRKG(N,FCN,T,DT,X,DX,XOUT,WORK)}\\
      {\tt CALL ODRK4(N,FCN,T,DT,X,DX,XOUT,WORK)}\\
      {\tt CALL ODRK2(N,FCN,T,DT,X,DX,XOUT,WORK)}\\
      {\tt CALL ODRK1(N,FCN,T,DT,X,DX,XOUT,WORK)}
      \end{quote}

  \item �ѥ�᡼����������
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt N}    & {\tt (I)}    & ����ʬ�ѿ�(������)�ο�. (i) \\
      {\tt FCN}  & ��³��̾     & {\tt DX}��׻����륵�֥롼����̾. \\
      {\tt T}    & {\tt (R)}    & ��Ω�ѿ�$t$����. (i) \\
      {\tt DT}   & {\tt (R)}    & ��ʬ���ƥå���. (i) \\
      {\tt X}    & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T}$�ˤ�������. (i) \\
      {\tt DX}   & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T}$�ˤ�������ʬ��. (i)
                                  {\tt ODRKG}�λ���{\tt DX}���ͤ�
                                  ��¸����ʤ�. \\
      {\tt XOUT} & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T+DT}$�ˤ�������. (i)
                                  �°����Ȥ���{\tt X}��Ʊ���ѿ���
                                  ���ꤷ�Ƥ�褤. \\
      {\tt WORK} & {\tt R(N,M)} & ����ѿ�.
                                  M=3 ({\tt ODRK4}) �ޤ��� 1
                                  (����¾�Υ롼����).
      \end{tabular}
      \end{quote}

  \item ����
      \begin{enumerate}
      \item {\tt FCN} �� ���֥롼����η��ǥ桼�������Ѱդ���.
      ���η����ϰʲ��ΤȤ���.
      \begin{quote}
      {\tt SUBROUTINE FCN(N,T,X,DX)}
      \end{quote}

      \end{enumerate}

\end{enumerate}

%=======================================================================
%\section{���ƥåѥ롼����}

\subsection{ODRKGR/ODRKGS/ODRK4R/ODRK4S}

\begin{enumerate}
  \item ��ǽ
      \begin{quote}

      {\tt ODRKG} ({\tt ODRKGR}, {\tt ODRKGS}) �ޤ���,
      {\tt ODRK4} ({\tt ODRK4R}, {\tt ODRK4S}) �ˤ��
      2���ƥåפ���ʬ��Ԥʤ�, ���٤Υ����å��򤷤�Ŭ����{\tt DT}�����.
      {\tt ODRKGS}��{\tt ODRK4S}��Ϳ����줿{\tt DT}��2���ƥåפ���ʬ�򤷤���,
      ���Υ��ƥåפΤ����{\tt DT}����ƥ꥿���󤹤뤬,
      {\tt ODRKGR}��{\tt ODRK4R}���׵����٤���������ʤ��Ȥ�{\tt DT}��
      ���������ƺƷ׻���Ԥ�.

      \end{quote}

  \item �ƤӽФ���ˡ
      \begin{quote}
      {\tt CALL ODRKGR(N,FCN,T,DT,EPSL,X,WORK)}\\
      {\tt CALL ODRKGS(N,FCN,T,DT,EPSL,X,WORK)}\\
      {\tt CALL ODRK4R(N,FCN,T,DT,EPSL,X,WORK)}\\
      {\tt CALL ODRK4S(N,FCN,T,DT,EPSL,X,WORK)}
      \end{quote}

  \item �ѥ�᡼����������
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt N}    & {\tt (I)}    & ����ʬ�ѿ�(������)�ο�. (i) \\
      {\tt FCN}  & ��³��̾     & {\tt DX}��׻����륵�֥롼����̾. \\
      {\tt T}    & {\tt (R)}    & ��Ω�ѿ�$t$����.
                                  2���ƥå�ʬ����ʬ����ä���
                                  ���Ϥ����. (i/o) \\
      {\tt DT}   & {\tt (R)}    & ��ʬ���ƥå���.
                                  Ŭ�����ͤ��ѹ�����ƽ��Ϥ����. (i/o) \\
      {\tt EPSL} & {\tt (R)}    & �׵�����. (i) \\
      {\tt X}    & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T}$�ˤ������ͤ����Ϥ�,
                                  $t={\tt T+ 2 \times DT}$ �ˤ�������
                                  ����Ϥ���. \\
      {\tt WORK} & {\tt R(N,M)} & ����ѿ�.
                                  M=7 ({\tt ODRK4R}),
                                  M=5 ({\tt ODRK4S}, {\tt ODRKGR}),
                                  M=3 ({\tt ODRKGS}).
      \end{tabular}
      \end{quote}

  \item ����
      \begin{enumerate}
        \item {\tt ODRKGS}, {\tt ODRK4S} ��
        {\tt ODRKGR}, {\tt ODRK4R} ����٤�, ����ΰ褬�������Ƥ��ब,
        �׵����٤��������줿���Ƥ�, �Ʒ׻��򤷤ʤ��Τ�,
        �����ΰ褬�����¤�, {\tt ODRKGR}, {\tt ODRK4R} ��侩����.

        �ʤ� {\tt ODRKGS}, {\tt ODRK4S} �Ǥ�,
        {\tt DT} �����ݤ�, ������ΰ���Ψ��
        �ȤäƤ���Τ�, ������������������Ū�˴ˤ䤫���Ѥ����ˤ�
        ͭ���Ǥ���.
        \item {\tt FCN} �� ���֥롼����η��ǥ桼�������Ѱդ���.
        ���η����ϰʲ��ΤȤ���.
        \begin{quote}
        {\tt SUBROUTINE FCN(N,T,X,DX)}
        \end{quote}
      \end{enumerate}

\end{enumerate}

%=======================================================================
%\section{�ɥ饤�Х롼����}

\subsection{ODRKDU}

\begin{enumerate}
  \item ��ǽ
      \begin{quote}
      �ƥ��르�ꥺ��롼����ˤ��, �����������ʬ��Ԥ�.
      \end{quote}

  \item �ƤӽФ���ˡ
      \begin{quote}
      {\tt CALL ODRKDU(N,ALGOR,FCN,T,TEND,ISTEP,X,WORK)}
      \end{quote}

  \item �ѥ�᡼����������
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt N}     & {\tt (I)}    & ����ʬ�ѿ�(������)�ο�. (i) \\
      {\tt ALGOR} & ��³��̾     & ���Ѥ��륢�르�ꥺ��롼����̾ (i) \\
      {\tt FCN}   & ��³��̾     & {\tt DX}��׻����륵�֥롼����̾ (i) \\
      {\tt T}     & {\tt (R)}    & ��ʬ��Ϥ����Ω�ѿ�$t$����.
                       RETURN ���ˤϺǸ�Υ��ƥå�$t$ {\tt (TEND) }
                       �����Ϥ����. (i/o) \\
      {\tt TEND}  & {\tt (R)}    & ��ʬ��λ������Ω�ѿ�$t$����. (i) \\
      {\tt ISTEP} & {\tt (I)}    & ���ƥå׿�. (i) \\
      {\tt X}     & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T}$�ˤ������ͤ����Ϥ�,
                                   $t={\tt TEND}$ �ˤ������ͤ���Ϥ���.
                                   (i/o) \\
      {\tt WORK}  & {\tt R(N,M)} & ����ѿ�.
                                  M=5 ({\tt ODRK4}), M=3 (����¾).
      \end{tabular}
      \end{quote}

  \item ����
      \begin{enumerate}
        \item ���Ѥ��륢�르�ꥺ��롼�����, �ä˻پ㤬�ʤ��¤�,
        {\tt ODRKG} (Runge-Kutta-Gill) ��侩����.
        \item {\tt FCN} �� ���֥롼����η��ǥ桼�������Ѱդ���.
        ���η����ϰʲ��ΤȤ���.
        \begin{quote}
        {\tt SUBROUTINE FCN(N,T,X,DX)}
        \end{quote}
      \end{enumerate}

\end{enumerate}

%-----------------------------------------------------------------------
\subsection{ODRKDV}

\begin{enumerate}
  \item ��ǽ
      \begin{quote}
      �ƥ��ƥåѥ롼����ˤ��, �׵����٤��������褦����ʬ��Ԥ�.
      \end{quote}

  \item �ƤӽФ���ˡ
      \begin{quote}
      {\tt CALL ODRKDV(N,STEPER,FCN,T,TINT,DT,X,WORK)}
      \end{quote}

  \item �ѥ�᡼����������
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt N}     & {\tt (I)}    & ����ʬ�ѿ�(������)�ο�. (i) \\
      {\tt STEPER}& ��³��̾     & ���Ѥ��륹�åƥѥ롼����̾. \\
      {\tt FCN}   & ��³��̾     & {\tt DX}��׻����륵�֥롼����̾ (i) \\
      {\tt T}     & {\tt (R)}    & ��ʬ��Ϥ����Ω�ѿ�$t$����.
                       RETURN ���ˤϺǸ�Υ��ƥå�$t$ {\tt (TEND) }
                       �����Ϥ����. (i/o) \\
      {\tt TEND}  & {\tt (R)}    & ��ʬ��λ����$t$����. (i) \\
      {\tt DT}    & {\tt (I)}    & ���ƥå����ν����. (i/o) \\
      {\tt X}     & {\tt R(N)}   & ����ʬ�ѿ���$t={\tt T}$�ˤ������ͤ����Ϥ�,
                                   $t={\tt TEND}$ �ˤ������ͤ���Ϥ���.
                                   (i/o) \\
      {\tt WORK}  & {\tt R(N,M)} & ����ѿ�.
                                  M=7 ({\tt ODRK4}), M=5 (����¾).
      \end{tabular}
      \end{quote}

  \item ����
      \begin{enumerate}
        \item ���٤�
        {\tt OD}{\it p}{\tt GET/}{\tt OD}{\it p}{\tt SET} ��
        �������������ѿ� {\tt 'EPSILON'}�ˤ�äƻ���Ǥ���.
        �ǽ�θƤӽФ�����, ���� {\tt DT} ��Ŭ�����ͤ��������Ƥ�����
        �׵����٤��������褦�� {\tt DT} �����ꤵ����֤ä����Τ�,
        �����, ���Τޤ޼���θƤӽФ����˻��ꤹ��Ф褤.
        \item {\tt ODRKDV} ��
        {\tt OD}{\it p}{\tt GET/}{\tt OD}{\it p}{\tt SET} �δ������������ѿ�
        {\tt 'MAXSTEP'} �ǻ��ꤵ�줿
        ���������ʬ���Ƥ� {\tt TEND} ����ã���ʤ��Ȥ���,
        ���顼��å���������Ϥ���, �¹Ԥ���ߤ���.
        {\tt 'MAXSTEP'} �� {\tt ODISET} ���ѹ���ǽ�Ǥ���.
        \item ���Ѥ��륹�ƥåѥ롼�����, �ä˻پ㤬�ʤ��¤�,
        {\tt ODRKGR} (Runge-Kutta-Gill �Ʒ׻�) ��侩����.
        \item {\tt FCN} �� ���֥롼����η��ǥ桼�������Ѱդ���.
        ���η����ϰʲ��ΤȤ���.
        \begin{quote}
        {\tt SUBROUTINE FCN(N,T,X,DX)}
        \end{quote}
      \end{enumerate}

\end{enumerate}

%-----------------------------------------------------------------------
\subsection{OD{\it p}GET/OD{\it p}SET}

\begin{enumerate}
  \item ��ǽ
      \begin{quote}
      {\tt ODRKDV} �ǻ��Ѥ��������ѿ��򻲾�/���ꤹ��.
      \end{quote}

  \item �ƤӽФ���ˡ
      \begin{quote}
      {\tt CALL OD}{\it p}{\tt GET(CPARA,IPARA)} \\
      {\tt CALL OD}{\it p}{\tt SET(CPARA,IPARA)}
      \end{quote}

  \item �ѥ�᡼����������
      \begin{quote}
      \begin{tabular}{llp{10cm}}
      {\tt CPARA} & {\tt (C*8)} & �����ѿ���̾��. (i)\\
      {\tt IPARA} & {\tt (I,R)} & �����ѿ�����.
      \end{tabular}

      \vspace{1em}
      �ʲ���{\tt CP}�Ȥ��ƻ���Ǥ���̾���Υꥹ�Ȥ򵭤�.

      \begin{tabular}{llp{10cm}}
      {\tt 'EPSILON'} & {\tt (R)} & �׵�����. \\
      {\tt 'MAXSTEP'} & {\tt (I)} & ������ʬ���. \\
      {\tt 'NSTEP'}   & {\tt (I)} & �ºݤ���ʬ�������.
      \end{tabular}
      \end{quote}

  \item ����
      \begin{enumerate}
        \item {\tt IPARA}�Ȥ��Ƥ�Ŭ�ڤʷ�������ޤ����ѿ���
          ���ꤹ�뤳��.
      \end{enumerate}

\end{enumerate}



