# impl

equações diferenciais algébricas

## Seqüência de Chamamento

    y=impl([type],y0,ydot0,t0,t [,atol, [rtol]],res,adda [,jac])

## Parâmetros

y0,ydot0

  vetor de reais ou matriz (condições iniciais)

t0

  escalar real (tempo inicial).

t

  vetor de reais (tempos nos quais a solução é computada).

res,adda

  funções externas (função, strting ou lista).

type

  string `'adams'` ou `'stiff'`

atol,rtol

  escalar real ou vetor de reais com as mesmas dimensões que `y`.

jac

  função externa (função, string ou lista).

## Descrição

Solução da equação diferencial linear implicita

A(t,y) dy/dt=g(t,y), y(t0)=y0

`t0` é o instante inicial, `y0` é o vetor de condições iniciais. O vetor `ydot0` da derivada em relação ao tempo `y` em `t0` também deve ser dado. A entrada `res` é uma função externa i.e. uma função com sintaxe especificada, ou o nome da subrotina FORTRAN ou da função C (string) com seqüência de chamamento especificada, ou uma lista.

Se `res` for uma função, a sintaxe deve ser como segue:

    r = res(t,y,ydot)

onde `t` é um escalar real (tempo) e `y` e `ydot` são vetores de reais (estado e derivada do estado). Esta função deve retornar `r=g(t,y)-A(t,y)*ydot`.

Se `res` for um string, ele se refere a uma subrotina FORTRAN ou uma função C. Ver `SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f` para um exemplo.

`res` também pode ser uma lista, ver a ajuda de `ode`.

A entrada `adda` também é uma função externa

Se `adda` for uma função, a sintaxe deve ser como segue:

    r = adda(t,y,p)

e deve retornar `r=A(t,y)+p` onde `p` é uma matriz a ser adicionada a `A(t,y)`.

Se `adda` for um string, ele se refere a uma subrotina FORTRAN ou uma função C. Ver `SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f` para um exemplo.

`adda` também pode ser uma lista, ver a ajuda de `ode`.

A entrada `jac` também é uma função externa

Se `jac` for uma função, a sintaxe deve ser como segue:

    j = jac(t,y,ydot)

e deve retornar o Jacobiano de `r=g(t,y)-A(t,y)*ydot` em relação a `y`.

Se `jac` for um string, ele se refere a uma subrotina FORTRAN ou uma função C. Ver `SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.f` para um exemplo.

`jac` também pode ser uma lista, ver a ajuda de `ode`.

## Exemplos

    y=impl([1;0;0],[-0.04;0.04;0],0,0.4,'resid','aplusp');
    // utilizando reinicialização rápida
    //[x1,w,iw]=impl([1;0;0],[-0.04;0.04;0],0,0.2,'resid','aplusp');
    // inicialização rápida da chamada anterior
    //[x1]=impl([1;0;0],[-0.04;0.04;0],0.2,0.4,'resid','aplusp',w,iw);
    //max(abs(x1-x))

## Ver Também

- dassl
- ode
- external