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 >> |