Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.4.1 - Русский

Change language to:
English - Français - 日本語 - Português -

Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Дифференциальное счисление, интегрирование > ode_root

ode_root

программа решения обыкновенных дифференциальных уравнений с поиском корней

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

[y, rd, w, iw] = ode("root", y0, t0, t [,rtol [,atol]], f [,jac], ng, g [,w, iw])

Аргументы

y0

вектор или матрица вещественных значений (начальные условия).

t0

вещественный скаляр (начальное время).

t

вектор вещественных значений (моменты времени, для которых вычисляется решение).

f

внешняя функция, символьная строка или список.

rtol, atol

вещественные константы или векторы того же размера, что и y.

jac

внешняя функция, символьная строка или список.

w, iw

векторы вещественных значений (ВХОДНЫЕ/ВЫХОДНЫЕ).

ng

целое число.

g

внешняя функция, символьная строка или список.

y

вещественный вектор или матрица (ВЫХОДНАЯ).

rd

вещественный вектор (ВЫХОДНОЙ).

Описание

С таким синтаксисом (первый аргумент равен "root") ode вычисляет решение дифференциального уравнения dy/dt=f(t,y) до тех пор, пока состояние y(t) не пересечёт поверхность g(t,y)=0.

g должно задавать уравнение поверхности. Это внешняя функция, то есть функция с определённым синтаксисом или имя процедуры Fortran или функции C (символьная строка) с определённой последовательностью вызова или список.

Если g является функцией, то её синтаксис должен быть следующим:

z = g(t,y)

где t -- вещественный скаляр (время) и y -- вещественный вектор (состояние). Она возвращает вектор размером ng, который соответствует ng ограничениям. Если g -- символьная строка, то она ссылается на имя процедуры Fortran или функции C со следующей последовательностью вызова: g(n,t,y,ng,gout), где ng -- количество ограничений, а gout -- значение g (на выходе программы). Если g является списком, то применяются те же договорённости, что и для f (см. справку ode).

Выходное значение rd -- это вектор размером 1 x k. Первый элемент хранит время остановки. Остальные элементы указывают какие элементы g сменили знак. k больше 2 указывает, что одновременно было пересечено более одной поверхности ((k-1) поверхностей).

Другие аргументы и другие опции те же самые, что и для ode, см. справку по ode.

Примеры

// Интегрирование дифференциального уравнения
// dy/dt=y , y(0)=1, и поиск такого минимального времени t, что y(t)=2
deff("[ydot]=f(t,y)","ydot=y")
deff("[z]=g(t,y)","z=y-2")
y0=1;ng=1;
[y,rd]=ode("roots",y0,0,2,f,ng,g)

deff("[z]=g(t,y)","z=y-[2;2;33]")
[y,rd]=ode("roots",1,0,2,f,3,g)

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

  • dasrt — программа решения дифференциально-алгебраических уравнений (ДАУ) с пересечением нуля
  • ode — программа решения обыкновенных дифференциальных уравнений
Report an issue
<< ode_optional_output Дифференциальное счисление, интегрирование odedc >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Apr 02 17:37:54 CEST 2013