Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 1335

1. Resumo do Tutorial


Neste Tutorial, veremos como resolver, simbolicamente, Equações Diferenciais Ordinárias de Ordens 1 e 2 usando os métodos estudados tipicamente em um curso introdutório de EDO.
À medida que o curso avançar, outros métodos serão discutidos como, por exemplo, solução por séries.

2. Equações Diferenciais Ordinárias de Ordem 1

Vejamos como resolver EDOs de ordem 1 expressas pela forma geral: F(x,y(x),y(x))=0F(x,y(x),y'(x))=0


Esquema Geral da Solução no Sage

a) definição da variável independente: x=var('x');
b) definição da variável dependente: y=function('y')(x)
c) solução através do comando desolve:
        desolve(edo, variavel, ics=..., ivar=..., show_method=..., contrib_ode=...)

onde os parâmetros do comando desolve são:
    edo: é a equação diferencial ordinária que se deseja resolver; por exemplo, a equação y=2y+xy'=2y+x é escrita como diff(y,x)==2*y+x (observe o duplo ==)
    variavel: nome da variável dependente (no exemplo acima, y)
    ics: argumento opcional que permite especificar condições iniciais; para Ordem 1, forneça uma lista [x0,y0][x_0,y_0]; para Ordem 2,  [x0,y0,x1,y1][x_0,y_0,x_1,y_1] ou [x0,y0,y0][x_0,y_0,y_0']
    ivar: argumento opcional que permite especificar a variável independente (isto é essencial quando a EDO depende de parâmetros, ex: y=ay+bx+cy'=ay+bx+c
    show_method: argumento opcional (default=False); se especificado como True, o Sage informa o método de solução utilizado (linear, separable, exact, homogeneous, etc)
    contrib_ode: argumento opcional (default=False); se for True, o Sage tratará casos como equações de Ricatti, Lagrange, e outros casos patológicos (não veremos isto em detalhe).

A seguir, serão fornecidos vários exemplos de resolução simbólica de EDOs de ordem 1, no Sage.

Equações Lineares

São equações do tipo: y+P(x)y=Q(x)y'+P(x)y=Q(x)

Exemplo: y+3y=exy'+3y=e^x

#Exemplo: EDO Linear x=var('x'); y=function('y')(x) # definindo as variáveis # Solução Geral da EDO (não foi especificada condição inicial); não precisa especificar variável independente pois não existem parâmetros # Observe que show_method=True; então, a resposta do Sage contém a solução e, em seguida, o método usado (neste caso, linear) desolve(diff(y,x)+3*y==exp(x),y,show_method=True) show(desolve(diff(y,x)+3*y==exp(x),y,show_method=True))
[1/4*(4*_C + e^(4*x))*e^(-3*x), 'linear']
[14(4C+e(4x))e(3x)\displaystyle \frac{1}{4} \, {\left(4 \, C + e^{\left(4 \, x\right)}\right)} e^{\left(-3 \, x\right)}, linear]

Equações a Variáveis Separáveis

São equações do tipo: P(x)=yQ(x)P(x)=y'Q(x)

Exemplo: yy=xyy'=x

#Exemplo: Variáveis Separáveis x=var('x'); y=function('y')(x) #fn=desolve(y*diff(y,x)==x,y,show_method=True) fn=desolve(diff(y,x)==-sqrt(y),y,show_method=True) show(fn)
[2y(x)=C+x\displaystyle -2 \, \sqrt{y\left(x\right)} = C + x, separable]

Equações Homogêneas

São equações do tipo: y=P(x,y)Q(x,y)y'=\frac{P(x,y)}{Q(x,y)}, onde P e Q são funções homogêneas de mesmo grau (em um dado intervalo)

Exemplo: x2y=y2+xy+x2x^2y'=y^2+xy+x^2

#Exemplo: Equações Homogêneas x=var('x'); y=function('y')(x) fn=desolve(x^2*diff(y,x)==y^2+x*y+x^2,y,show_method=True) show(fn) # Observe que a solução não é dada explicitamente!
[Cx=earctan(y(x)x)\displaystyle C x = e^{\arctan\left(\frac{y\left(x\right)}{x}\right)}, homogeneous]

Equações Exatas

São equações do tipo:fxdx+fydy\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy, onde f é uma função de 2 variáveis e diferenciável.

Exemplo: y=cos(y)2xy+xsin(y)y'=\frac{\cos(y)-2x}{y+x\sin(y)}, com f(x,y)=x2xcos(y)+y2/2f(x,y)=x^2-x\cos(y)+y^2/2

#Exemplo: Equações Exatas x=var('x'); y=function('y')(x) fn=desolve(diff(y,x)==(cos(y)-2*x)/(y+x*sin(y)),y,show_method=True) show(fn)
[x2xcos(y(x))+12y(x)2=C\displaystyle x^{2} - x \cos\left(y\left(x\right)\right) + \frac{1}{2} \, y\left(x\right)^{2} = C, exact]

3. Alguns Exemplos Mais Elaborados


Exemplo 1: y+2y=x22x+3y'+2y=x^2-2x+3

Podemos utilizar outros recursos do Sage em conjunto com o comando de resolução de EDO; por exemplo, vamos resolver a EDO acima do mesmo modo que nos exemplos anteriores, mas utilizaremos o comando expand para expressar a solução, obtida pelo Sage, em uma forma mais simples e, a seguir, vamos impor uma condição inicial.

#Exemplo 1 x = var('x'); y = function('y')(x) # definição das variáveis DE = diff(y,x)+2*y == x**2-2*x+3 # definição da EDO e atribuição da equação a uma variável print('a) Resolução da EDO') y1=desolve(DE, y); show(y1) print('b) Resolução da EDO e Simplificação da Solução') y2=desolve(DE, y).expand(); show(y2) print('c) Método Utilizado') desolve(DE, y, show_method=True)[1] # OBSERVE O USO DO PARÂMETRO [1]. O QUE ACONTECERIA SE VOCÊ USASSE [0]? print('d) Impõe Condição Inicial X(0)=1') y3=desolve(DE, y, ics=[0,1]).expand(); show(y3)
a) Resolução da EDO
14((2x22x+1)e(2x)2(2x1)e(2x)+4C+6e(2x))e(2x)\displaystyle \frac{1}{4} \, {\left({\left(2 \, x^{2} - 2 \, x + 1\right)} e^{\left(2 \, x\right)} - 2 \, {\left(2 \, x - 1\right)} e^{\left(2 \, x\right)} + 4 \, C + 6 \, e^{\left(2 \, x\right)}\right)} e^{\left(-2 \, x\right)}
b) Resolução da EDO e Simplificação da Solução
12x2+Ce(2x)32x+94\displaystyle \frac{1}{2} \, x^{2} + C e^{\left(-2 \, x\right)} - \frac{3}{2} \, x + \frac{9}{4}
c) Método Utilizado 'linear' d) Impõe Condição Inicial X(0)=1
12x232x54e(2x)+94\displaystyle \frac{1}{2} \, x^{2} - \frac{3}{2} \, x - \frac{5}{4} \, e^{\left(-2 \, x\right)} + \frac{9}{4}
Exemplo 2: ylog(y)=ysin(x)y'\log(y)=y\sin(x)

É simples verificar que se trata de uma EDO a variáveis separáveis e veremos que o Sage reconhece esse fato.
Por outro lado, o Sage fornece uma solução em forma implícita; veremos que, neste caso, podemos utilizar o comando solve para obter uma expressão explícita para a solução.
Por fim, construiremos os gráficos correspondentes à solução da EDO para diferentes condições iniciais.

#Exemplo 2: x = var('x'); y = function('y')(x) desolve(diff(y,x)*log(y) == y*sin(x), y, show_method=True)[1] # Verificando que o Sage usa método das variáveis separáveis ed = desolve(diff(y,x)*log(y) == y*sin(x), y); # Resolve a EDO e atribui a solução à variável ed show(ed) # Observe que a solução é uma equação envolvendo y e x, ou seja, y é dado implicitamente em termos de x # ESSA EQUAÇÃO PODE SER RESOLVIDA ATRAVÉS DO COMANDO SOLVE sol=solve(ed, y) show(sol) # Veja que existem duas soluções possíveis, correspondendo aos sinais + e - do argumento da função exponencial!
'separable'
12log(y(x))2=Ccos(x)\displaystyle \frac{1}{2} \, \log\left(y\left(x\right)\right)^{2} = C - \cos\left(x\right)
[y(x)=e(2C2cos(x))\displaystyle y\left(x\right) = e^{\left(-\sqrt{2 \, C - 2 \, \cos\left(x\right)}\right)}, y(x)=e(2C2cos(x))\displaystyle y\left(x\right) = e^{\left(\sqrt{2 \, C - 2 \, \cos\left(x\right)}\right)}]
Agora vamos traçar os gráficos para a primeira solução (o procedimento é análogo, para a segunda); além disso, vamos assumir c1c\geq 1 Para isso, precisamos atribuir valores numéricos à constante C, mas como ter acesso a essa constante ? Observe que a função y(x)y(x) depende tanto da variável dependente xx como da constante C. O Sage possui um comando que retorna as variáveis/parâmetros de uma equação
ed.variables()
(_C, x)
Vemos portanto que as variáveis da equação armazenada em eded são _C e x, nessa ordem; ou seja, _C é a variável de índice 0 e x é a variável de índice 1.
Para acessar C, executamos o comando:
c=ed.variables()[0] # [0] seleciona a variável de índice 0 show(c)
C\displaystyle C
Como fazemos para atribuir o valor 5 ao parâmetro C? Usamos o comando:
solve(ed, y)[0].substitute(c == 5).rhs()
e^(-sqrt(-2*cos(x) + 10))
No comando acima, executamos os seguintes passos:
a) resolvemos a equação ed obtendo y=f(x)
b) substituimos c=5 na expressão de f(x)
c) selecionamos o lado direito (através de rhs() ) da equação y=f(x) (porque queremos graficar f(x))

Agora, podemos traçar a solução para c=5
plot(solve(ed, y)[0].substitute(c == 2).rhs(), x, -3, 3)
Podemos graficar simultaneamente diferentes soluções particulares, correspondentes a diferentes condições iniciais (valores de C).
Observe o uso de uma estrutura de repetição (for) cuja sintaxe é da linguagem PYTHON (já mencionamos que o Sage usa Python).
A expressão for k in range(1,10,2) significa que o contador k parte do valor 1 e vai até 10 de 2 em 2. Portanto, k=1, 3, 5, 7,9.
P = Graphics() for k in range(1,10,2): P += plot(solve(ed, y)[0].substitute(c==1+k/4).rhs(), x, -3, 3) P.show()

3. Equações Diferenciais Ordinárias de Ordem 2


Futuramente, veremos que, quando se resolve determinadas Equações Diferenciais Parciais pelo Método de Separação de Variáveis naturalmente somos conduzidos ao problema de resolver uma Equação Diferencial Ordinária de Ordem 2.
Por esse motivo, apresentamos aqui como resolver EDOs de segunda ordem com o Sage, mas apenas no caso em que as equações são lineares e a coeficientes constantes.

Exemplo 1: y+3y=x27x+31y''+3y=x^2-7x+31

x = var('x'); y = function('y')(x) DE = diff(y,x,2)+3*y == x^2-7*x+31 sol=desolve(DE, y).expand() show(sol)
13x2+K2cos(3x)+K1sin(3x)73x+919\displaystyle \frac{1}{3} \, x^{2} + K_{2} \cos\left(\sqrt{3} x\right) + K_{1} \sin\left(\sqrt{3} x\right) - \frac{7}{3} \, x + \frac{91}{9}
IMPONDO DUAS CONDIÇÕES INICIAIS (para a função e sua derivada no instante t=0): y(0)=1y(0)=1 e y(0)=2y'(0)=2
solA=desolve(DE, y, ics=[0,1,2]).expand() show(solA)
13x2+1393sin(3x)73x829cos(3x)+919\displaystyle \frac{1}{3} \, x^{2} + \frac{13}{9} \, \sqrt{3} \sin\left(\sqrt{3} x\right) - \frac{7}{3} \, x - \frac{82}{9} \, \cos\left(\sqrt{3} x\right) + \frac{91}{9}
IMPONDO DUAS CONDIÇÕES DE CONTORNO: y(0)=1y(0)=1 e y(1)=0y(-1)=0
solB=desolve(DE, y, ics=[0,1,-1,0]).expand() show(solB)
13x273x82cos(3)sin(3x)9sin(3)+115sin(3x)9sin(3)829cos(3x)+919\displaystyle \frac{1}{3} \, x^{2} - \frac{7}{3} \, x - \frac{82 \, \cos\left(\sqrt{3}\right) \sin\left(\sqrt{3} x\right)}{9 \, \sin\left(\sqrt{3}\right)} + \frac{115 \, \sin\left(\sqrt{3} x\right)}{9 \, \sin\left(\sqrt{3}\right)} - \frac{82}{9} \, \cos\left(\sqrt{3} x\right) + \frac{91}{9}
t,L,R,C,E,wd=var('t,L,R,C,E,wd') assume(L>0) assume(C>0) assume(R>0) assume(E>0) assume(wd>0) assume((C*R^2-4*L) > 0) q=function('q',t) ed = L*diff(q,t,2)+R*diff(q,t,1)+q/C==E*sin(wd*t) sol=desolve(ed,q,ivar=t) show(sol) forget()
K2e(12t(R2L24CL+RL))+K1e(12t(R2L24CLRL))C2ERwdcos(twd)+(C2ELwd2CE)sin(twd)C2L2wd4+(C2R22CL)wd2+1\displaystyle K_{2} e^{\left(-\frac{1}{2} \, t {\left(\sqrt{\frac{R^{2}}{L^{2}} - \frac{4}{C L}} + \frac{R}{L}\right)}\right)} + K_{1} e^{\left(\frac{1}{2} \, t {\left(\sqrt{\frac{R^{2}}{L^{2}} - \frac{4}{C L}} - \frac{R}{L}\right)}\right)} - \frac{C^{2} E R \mathit{wd} \cos\left(t \mathit{wd}\right) + {\left(C^{2} E L \mathit{wd}^{2} - C E\right)} \sin\left(t \mathit{wd}\right)}{C^{2} L^{2} \mathit{wd}^{4} + {\left(C^{2} R^{2} - 2 \, C L\right)} \mathit{wd}^{2} + 1}
t,L,R,C,E,wd=var('t,L,R,C,E,wd') assume(L>0) assume(C>0) assume(R>0) assume(E>0) assume(wd>0) #assume((C*R^2-4*L) > 0) q=function('q',t) ed = L*diff(q,t,2)+q/C==0 sol=desolve(ed,q,ivar=t) show(sol) forget()
x,a,b,c,d=var('x,a,b,c,d') assume(a>0) assume(b>0) assume(c>0) assume(d>0) #assume((C*R^2-4*L) > 0) p=function('p')(x) ed = ((a*x-b)^2)*diff(p,x,2)+(c*x-d)*diff(p,x,1)==1 sol=desolve(ed,p,ivar=x) show(sol) forget()
K2+(K1e(bca3xa2b)+e(bca3xa2b)e(bca3xa2b+da2xab+clog(axb)a2)a2x22abx+b2dx)e(da2xabclog(axb)a2)dx\displaystyle K_{2} + \int {\left(K_{1} e^{\left(\frac{b c}{a^{3} x - a^{2} b}\right)} + e^{\left(\frac{b c}{a^{3} x - a^{2} b}\right)} \int \frac{e^{\left(-\frac{b c}{a^{3} x - a^{2} b} + \frac{d}{a^{2} x - a b} + \frac{c \log\left(a x - b\right)}{a^{2}}\right)}}{a^{2} x^{2} - 2 \, a b x + b^{2}}\,{d x}\right)} e^{\left(-\frac{d}{a^{2} x - a b} - \frac{c \log\left(a x - b\right)}{a^{2}}\right)}\,{d x}
x,a,b,c,d=var('x,a,b,c,d') assume(a>0) assume(b>0) assume(c>0) assume(d>0) p=function('p')(x) ed = ((a*x+b)^2)*diff(p,x,2)+(c*x+d)*diff(p,x,1)==1 sol=desolve(ed,p,ivar=x) show(sol) forget()
K2+(K1e(da2x+ab)+e(da2x+ab)e(bca3x+a2bda2x+ab+clog(ax+b)a2)a2x2+2abx+b2dx)e(bca3x+a2bclog(ax+b)a2)dx\displaystyle K_{2} + \int {\left(K_{1} e^{\left(\frac{d}{a^{2} x + a b}\right)} + e^{\left(\frac{d}{a^{2} x + a b}\right)} \int \frac{e^{\left(\frac{b c}{a^{3} x + a^{2} b} - \frac{d}{a^{2} x + a b} + \frac{c \log\left(a x + b\right)}{a^{2}}\right)}}{a^{2} x^{2} + 2 \, a b x + b^{2}}\,{d x}\right)} e^{\left(-\frac{b c}{a^{3} x + a^{2} b} - \frac{c \log\left(a x + b\right)}{a^{2}}\right)}\,{d x}