<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - 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:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="odeoptions" xml:lang="ru">
    <refnamediv>
        <refname>odeoptions</refname>
        <refpurpose>установка опций для программ решения ОДУ</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Синтаксис</title>
        <synopsis>odeoptions()</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Описание</title>
        <para>
            Эта функция интерактивно отображает команды, которые должны выполняться для установки различных опций для программ решения ОДУ. Контекстная переменная
            <literal>%ODEOPTIONS</literal> устанавливает опции.
        </para>
        <para>
            <caution>
                Функция <literal>ode</literal> проверяет существует ли эта переменная и, если она она существует, то использует её. Для использования значений по умолчанию вы должны очистить эту переменную. Чтобы создать эту переменную вы должны выполнить инструкцию <literal>%ODEOPTIONS=odeoptions()</literal>.
            </caution>
        </para>
        <para>
            Переменная <literal>%ODEOPTIONS</literal> является вектором со следующими элементами:
        </para>
        <para>
            <literal>[itask, tcrit, h0, hmax, hmin, jactyp, mxstep, maxordn, maxords, ixpr, ml, mu]</literal>.
        </para>
        <para>
            Значение по умолчанию: <literal>[1,0,0,%inf,0,2,500,12,5,0,-1,-1]</literal>.
        </para>
        <para>
            Значение элементов описывается ниже.
        </para>
        <para>
            <itemizedlist>
                <listitem>
                    <literal>itask</literal> устанавливает режим интегрирования:
                    <itemizedlist>
                        <listitem>1: нормальное вычисление в определённые моменты времени</listitem><listitem>
                            2 : вычисления в точках сетки (указанных в первой строке вывода функции <literal>ode</literal>)
                        </listitem>
                        <listitem>3 : один шаг на одной внутренней точке сетки и возврат</listitem><listitem>
                            4 : нормальное вычисление без превышения <literal>tcrit</literal>
                        </listitem>
                        <listitem>
                            5 : один шаг без превышения <literal>tcrit</literal> и возврат
                        </listitem>
                    </itemizedlist>
                </listitem>
                <listitem>
                    <literal>tcrit</literal> критическое время, используемое только если
                    <literal>itask</literal> равняется 4 или 5, как описано выше
                </listitem>
                <listitem>
                    <literal>h0</literal> первый подбираемый шаг
                </listitem>
                <listitem>
                    <literal>hmax</literal> максимальный размер шага
                </listitem>
                <listitem>
                    <literal>hmin</literal> минимальный размер шага
                </listitem>
                <listitem>
                    <literal>jactype</literal> устанавливает свойства матрицы Якоби:
                    <itemizedlist>
                        <listitem>0: функциональные итерации, матрица Якоби не используется
                            (только для методов <literal>"adams"</literal> или <literal>"stiff"</literal>)
                        </listitem>
                        <listitem>1: заданная пользователем полная матрица Якоби</listitem><listitem>2: внутренне рассчитанная полная матрица Якоби</listitem><listitem>3: внутренне рассчитанная диагональная матрица Якоби
                            (только для методов <literal>"adams"</literal> или <literal>"stiff"</literal>)
                        </listitem>
                        <listitem>4: заданная пользователем ленточная матрица Якоби (см.
                            <literal>ml</literal> и <literal>mu</literal> ниже)
                        </listitem>
                        <listitem>5: внутренне рассчитанная ленточная матрица Якоби
                            (см <literal>ml</literal> и <literal>mu</literal> ниже)
                        </listitem>
                    </itemizedlist>
                </listitem>
                <listitem>
                    <literal>maxordn</literal> максимально разрешённый нежёсткий порядок, не больше
                    12
                </listitem>
                <listitem>
                    <literal>maxords</literal> максимально разрешённый жёсткий порядок, не больше 5
                </listitem>
                <listitem>
                    <literal>ixpr</literal> уровень печати, 0 или 1
                </listitem>
                <listitem>
                    <literal>ml</literal>, <literal>mu</literal><para>
                        Если <literal>jactype</literal> равен 4 или 5, то <literal>ml</literal>
                        и <literal>mu</literal> являются нижней и верхней половинными полосами
                        ленточной матрицы Якоби, где лентой являются <literal>i,j</literal> с
                        <literal>i-ml</literal> &lt;= <literal>j</literal> &lt;= <literal>ny-1</literal>.
                    </para>
                    <para>
                        Если <literal>jactype</literal> равен 4, тогда функция Якоби должна возвращать
                        матрицу <literal>J</literal>, которая имеет размерность <literal>ml+mu+1 x ny</literal>
                        (где <literal>ny=dim</literal> вектора <literal>y</literal> в
                        <literal>ydot=f(t,y))</literal> так что первый столбец <literal>J</literal> составлен из
                        <literal>mu</literal> нулей, за которыми следуют <literal>df1/dy1</literal>,
                        <literal>df2/dy1</literal>, <literal>df3/dy1</literal>, ... (<literal>1+ml</literal>
                        возможно ненулевых элементов), второй столбец составлен из <literal>mu-1</literal>
                        нулей, за которыми следуют <literal>df1/dx2</literal>, <literal>df2/dx2</literal> и т. д.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </refsection>
    <refsection>
        <title>Примеры</title>
        <para>
            В следующем примере мы решим обыкновенное дифференциальное уравнение
            <literal>dy/dt=y^2-y sin(t)+cos(t)</literal> с начальным условием <literal>y(0)=0</literal>,
            требуя , чтобы решение хранилось в каждом значении сетки.
        </para>
        <programlisting role="example"><![CDATA[
function ydot = f(t,y)
    ydot = y^2 - y*sin(t) + cos(t)
endfunction
%ODEOPTIONS = [2,0,0,%inf,0,2,500,12,5,0,-1,-1];
y = ode(0, 0, %pi, f);
plot(y(1,:), y(2,:))
clear %ODEOPTIONS
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Смотрите также</title>
        <simplelist type="inline">
            <member>
                <link linkend="ode">ode</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
