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


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

Copyright (c) 2022-2024 (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 Mar 07 09:28:41 CET 2023