# odeoptions

установка опций для программ решения ОДУ

## Последовательность вызова

    odeoptions()

## Описание

Эта функция интерактивно отображает команды, которые должны выполняться для установки различных опций для программ решения ОДУ. Контекстная переменная `%ODEOPTIONS` устанавливает опции.

Функция `ode` проверяет существует ли эта переменная и, если она она существует, то использует её. Для использования значений по умолчанию вы должны очистить эту переменную. Чтобы создать эту переменную вы должны выполнить инструкцию `%ODEOPTIONS=odeoptions()`.

Переменная `%ODEOPTIONS` является вектором со следующими элементами:

`[itask, tcrit, h0, hmax, hmin, jactyp, mxstep, maxordn, maxords, ixpr, ml, mu]`.

Значение по умолчанию: `[1,0,0,%inf,0,2,500,12,5,0,-1,-1]`.

Значение элементов описывается ниже.

- `itask` устанавливает режим интегрирования:
  - 1: нормальное вычисление в определённые моменты времени
  - 2 : вычисления в точках сетки (указанных в первой строке вывода функции `ode`)
  - 3 : один шаг на одной внутренней точке сетки и возврат
  - 4 : нормальное вычисление без превышения `tcrit`
  - 5 : один шаг без превышения `tcrit` и возврат
- `tcrit` критическое время, используемое только если `itask` равняется 4 или 5, как описано выше
- `h0` первый подбираемый шаг
- `hmax` максимальный размер шага
- `hmin` минимальный размер шага
- `jactype` устанавливает свойства матрицы Якоби:
  - 0: функциональные итерации, матрица Якоби не используется (только для методов `"adams"` или `"stiff"`)
  - 1: заданная пользователем полная матрица Якоби
  - 2: внутренне рассчитанная полная матрица Якоби
  - 3: внутренне рассчитанная диагональная матрица Якоби (только для методов `"adams"` или `"stiff"`)
  - 4: заданная пользователем ленточная матрица Якоби (см. `ml` и `mu` ниже)
  - 5: внутренне рассчитанная ленточная матрица Якоби (см `ml` и `mu` ниже)
- `maxordn` максимально разрешённый нежёсткий порядок, не больше 12
- `maxords` максимально разрешённый жёсткий порядок, не больше 5
- `ixpr` уровень печати, 0 или 1
- `ml`, `mu`

  Если `jactype` равен 4 или 5, то `ml` и `mu` являются нижней и верхней половинными полосами ленточной матрицы Якоби, где лентой являются `i,j` с `i-ml` <= `j` <= `ny-1`.

  Если `jactype` равен 4, тогда функция Якоби должна возвращать матрицу `J`, которая имеет размерность `ml+mu+1 x ny` (где `ny=dim` вектора `y` в `ydot=f(t,y))` так что первый столбец `J` составлен из `mu` нулей, за которыми следуют `df1/dy1`, `df2/dy1`, `df3/dy1`, ... (`1+ml` возможно ненулевых элементов), второй столбец составлен из `mu-1` нулей, за которыми следуют `df1/dx2`, `df2/dx2` и т. д.

## Примеры

В следующем примере мы решим обыкновенное дифференциальное уравнение `dy/dt=y^2-y sin(t)+cos(t)` с начальным условием `y(0)=0`, требуя , чтобы решение хранилось в каждом значении сетки.

    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

## Смотрите также

- ode