Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
impl
дифференциальное алгебраическое уравнение
Синтаксис
y=impl([type],y0,ydot0,t0,t [,atol, [rtol]],res,adda [,jac])
Аргументы
- y0, ydot0
вещественные векторы или матрицы (начальные условия)
- t0
вещественный скаляр (начальное время)
- t
вещественный вектор (моменты времени, в которые вычисляется решение)
- res, adda
внешние (функция или символьная строка или спискок)
- type
строка
'adams'
или'stiff'
- atol, rtol
вещественный скаляр или вещественный вектор того же размера что и
y
- jac
внешние (функция или символьная строка или спискок)
Описание
Решение линейного неявного дифференциального уравнения
A(t,y) dy/dt=g(t,y), y(t0)=y0
t0
-- начальный момент времени, y0
--
вектор исходных условий. Должен быть задан вектор ydot0
-- производная y
по времени
в момент времени t0
. Входное значение res
является внешним,
т.е. функцией с особым синтаксисом или именем процедуры Fortran или функцией C (символьная строка) с определённой
последовательностью вызова или списком.
Если res
является функцией, у неё должен быть следующий синтаксис:
r = res(t,y,ydot)
где t
-- вещественный скаляр (время), а y
и ydot
являются вещественными векторами (состояние и производная состояния). Эта функция должна возвращать
r=g(t,y)-A(t,y)*ydot
.
Если res
-- символьная строка, то она ссылается на имя процедуры Fortran или функции C.
В качестве примера как это сделать смотрите SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f
.
res
может быть также списком: см. помощь по ode.
Входное значение adda
также является внешним.
Если adda
-- функция, то у неё должен быть следующий синтаксис:
r = adda(t,y,p)
и она должна возвращать r=A(t,y)+p
, где p
-- матрица, которую прибавляют к
A(t,y)
.
Если adda
является символьной строкой, то она ссылается на имя процедуры Fortran или функции C.
В качестве примера как это сделать смотрите SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f
.
adda
может также быть списком: см. помощь по ode.
Входное значение jac
также является внешним.
Если jac
-- функция, то у неё должен быть следующий синтаксис:
j = jac(t,y,ydot)
и она должна возвращать якобиан r=g(t,y)-A(t,y)*ydot
относительно
y
.
Если jac
-- символьная строка, то она ссылается на процедуру Fortran или функцию C.
В качестве примера как это сделать смотрите SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f
.
jac
может быть также списком: см. помощь по ode.
Примеры
y=impl([1;0;0],[-0.04;0.04;0],0,0.4,'resid','aplusp'); // Используем перезапуск налету //[x1,w,iw]=impl([1;0;0],[-0.04;0.04;0],0,0.2,'resid','aplusp'); // запуск налету из предыдущего вызова //[x1]=impl([1;0;0],[-0.04;0.04;0],0.2,0.4,'resid','aplusp',w,iw); //max(abs(x1-x))
Смотрите также
- dassl — дифференциальное алгебраическое уравнение
- ode — программа решения обыкновенных дифференциальных уравнений
- внешняя функция — объект Scilab'а, внешняя функция или подпрограмма
Report an issue | ||
<< diff | Дифференциальное счисление, интегрирование | int2d >> |