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.
dasrt
Solucionador de equações diferenciais algébricas com cruzamento de zeros
Seqüência de Chamamento
[r,nn,[,hd]]=dasrt(x0,t0,t [,atol,[rtol]],res [,jac],ng, surf [,info] [,hd])
Parâmetros
- x0
pode ser tanto
y0(ydot0é estimado pordasslcom a primeira estimativa sendo 0) ou a matriz[y0 ydot0].g(t,y0,ydot0)deve ser igual a zero. Se você conhece apenas uma estimativa deydot0façainfo(7)=1- y0
vetor coluna de reais de condições iniciais
- ydot0
vetor coluna de reais da derivada do tempo de
yemt0(pode ser uma estimativa).
- t0
número real, é o instante inicial
- t
escalar real ou vetor. Fornece instantes para os quais você deseja uma solução. Note que você pode obter soluções para cada ponto de passo de dassl fazendo
info(2)=1.- nn
um vetor com duas entradas
[times num]timesé o valor do tempo no qual a superfície é cruzada,numé o número da superfície cruzada- atol, rtol
escalares reais ou vetores colunas com o mesmo tamanho que
y.atol, rtolfornecem respectivamente as tolerâncias de erros absolutos e relativos da solução. Se forem vetores, as tolerâncias são especificadas para cada elemento dey.- res
função, lista ou string externos. Computa o valor de
g(t,y,ydot). Pode ser :Uma função do Scilab
Sua seqüência de chamamento pode ser
[r,ires]=res(t,y,ydot)erese deve retornar o resíduor=g(t,y,ydot)e o indicador de erroires.ires = 0seresobtiver sucesso ao computarr,=-1se o resíduo é indefinido localmente para(t,y,ydot),=-2se os parâmetros estão fora do intervalo admissível.Uma lista
Esta forma permite passar outros parâmetros além de t,y,ydot à função. Deve ser como segue:
list(res,x1,x2,...)
Onde a seqüência de chamamento da função
resé agorar=res(t,y,ydot,x1,x2,...)
resainda retornar=g(t,y,ydot)como função de(t,y,ydot,x1,x2,...).Warning: this form must not be used if there is no extra argument to pass to
the function.Um string
Deve se referir ao nome subrotina C ou Fortran ligada ao Scilab.
Em C a seqüência de chamamento:
Em Fortran deve ser:
subroutine res(t,y,yd,r,ires,rpar,ipar) double precision t, y(*),yd(*),r(*),rpar(*) integer ires,ipar(*)
Os arrays
rpareipardevem estar presentes, mas não podem ser utilizados.
- jac
função, lista ou string externos. Computa o valor de
dg/dy+cj*dg/dydotpara um dado valor do parâmetrocjUma função do Scilab
Sua seqüência de chamamento deve ser
r=jac(t,y,ydot,cj)e a funçãojacdeve retornarr=dg(t,y,ydot)/dy+cj*dg(t,y,ydot)/dydotondecjé um escalar real.Uma lista
Deve ser como segue
list(jac,x1,x2,...)
Onde a seqüência de chamamento da função
jacé agorar=jac(t,y,ydot,cj,x1,x2,...)
jacainda retornadg/dy+cj*dg/dydotcomo uma função de(t,y,ydot,cj,x1,x2,...).Um string
Deve se referir ao nome de uma subrotina C ou Fortran ligada ao Scilab
Em C, a seqüência de chamamento deve ser
Em Fortran deve ser
subroutine jac(t,y,yd,pd,cj,rpar,ipar) double precision t, y(*),yd(*),pd(*),cj,rpar(*) integer ipar(*)
- surf
função, lista ou string externo. Computa o valor do vetor coluna
surf(t,y)com componentesng. Cada componente define uma superfície. Pode ser definido por:Uma função Scilab
Sua seqüência de chamamento deve ser
surf(t,y)Uma lista
Deve ser como segue:
onde a seqüência de chamamento
surfé agorar=surf(t,y,x1,x2,...)
Um string
Deve se referir ao nome de uma subrotina C ou Fortran ligada ao Scilab
Em C a seqüência de chamamento deve ser:
Em Fortran deve ser
- info
lista que contém
7elementos, o valor padrão é list([],0,[],[],[],0,0)- info(1)
escalar real que fornece o tempo máximo para o qual se permite avaliar
g, ou uma matriz vazia[]se não houver limites impostos sobre o tempo.- info(2)
indica se
dasslretorna seus valores intermediários computados (flag=1) ou apenas os valores de pontos tempo especificados pelo usuário (flag=0).- info(3)
vetor de dois componentes que fornece a definição
[ml,mu]de matriz de bandas computada porjac;r(i - j + ml + mu + 1,j) = "dg(i)/dy(j)+cj*dg(i)/dydot(j)".Sejacretorna uma matriz cheia, façainfo(3)=[].- info(4)
escalar real que fornece o tamanho de passo máximo. Faça
info(4)=[]se não houver limitação.- info(5)
escalar real que fornece o passo inicial. Faça
info(5)=[]se não for especificado.- info(6)
faça
info(6)=1caso se saiba que a soulução não é negativa, em outro caso, ajuste.info(6)=0.- info(7)
faça
info(7)=1seydot0é apenas uma estimativa,info(7)=0seg(t0,y0,ydot0)=0.
- hd
vetor de reais que permite armazenar o contexto de
dassle retomar integração- r
matriz de reais . Cada coluna é o vetor
[t;x(t);xdot(t)]ondeté o índice do tempo para o qual a solução foi computada
Descrição
Solução da equação diferencial implícita
g(t,y,ydot)=0 y(t0)=y0 e ydot(t0)=ydot0
Retorna os instantes de cruzamento da superfície e o número da
superfície alcançada em nn.
Exemplos detalhados podem ser encontrados em SCIDIR/tests/unit_tests/dassldasrt.tst
Exemplos
//dy/dt = ((2*log(y)+8)/t -5)*y, y(1) = 1, 1<=t<=6 //g1 = ((2*log(y)+8)/t - 5)*y //g2 = log(y) - 2.2491 y0=1;t=2:6;t0=1;y0d=3; atol=1.d-6;rtol=0;ng=2; deff('[delta,ires]=res1(t,y,ydot)','ires=0;delta=ydot-((2*log(y)+8)/t-5)*y') deff('[rts]=gr1(t,y)','rts=[((2*log(y)+8)/t-5)*y;log(y)-2.2491]') [yy,nn]=dasrt([y0,y0d],t0,t,atol,rtol,res1,ng,gr1); //(Deveria retornar nn=[2.4698972 2])
| Report an issue | ||
| << daeoptions | Equações Diferenciais | dassl >> |