Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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.
Примеры
Смотрите также
Report an issue | ||
<< ode_optional_output | Дифференциальное счисление, интегрирование | odedc >> |