Sharednotebooks / 2.ExpressoesSimbolicas-Equacoes.sagewsOpen in CoCalc

1. Resumo do Tutorial


Através de exemplos simples serão apresentadas algumas funções úteis no estudo de Álgebra e Análise.
Em particular, estudaremos as expressões simbólicas no Sage e procedimentos de simplificação dessas expressões.
Finalmente, veremos exemplos de resolução de equações algébricas e transcendentes.

2. Expressões Simbólicas


O Sage permite efetuar todo tipo de cálculo a partir de expressões simbólicas que combinam números, variáveis simbólicas, operações aritméticas e funções básicas (sqrt, sin, exp, etc).
Em consequência, manipulando a expressão podemos transformá-la de modo que, no final do processo, a expressão se apresente da maneira que julgamos mais adequada.

O Exemplo dado a seguir, consiste em avaliar uma fórmula matemática que contém, além da variável, um parâmetro. Através do comando subs a fórmula (geral) pode ser avaliada para diferentes valores (não necessariamente numéricos) da variável e do parâmetro. Em seguida, é apresentado um procedimento alternativo ao comando subs (e mais direto).
# Exemplo: Manipulando Expressões Simbólicas com subs
a,x=var('a,x'); y=cos(x+a)*(x+1);y
show(y)
(x + 1)*cos(a + x)
(x+1)cos(a+x)\displaystyle {\left(x + 1\right)} \cos\left(a + x\right)
# Três diferentes substituições para a e x
# Mas observe que y, ou seja,a expressão y=cos(x+a)*(x+1) nunca se altera; apenas o resultado da substituição se modifica
# E poderia ser atribuido a outra variável ( o y estará sempre disponível para uso futuro)
y.subs(a=-x); # após o subs, o Sage simplifica o resultado como você faria no papel; verifique !
y.subs(x=pi/2, a=pi/3); # subs simbólico, o resultado não é avaliado numericamente
y.subs(x=0.5, a=2.3) # subs com valores numéricos (ponto decimal!); neste caso o resultado é numérico
gg = y.subs(x=pi/2, a=pi/3); # atribui resultado do subs à variável gg
show(gg) # exibe conteúdo de gg como uma fórmula
x + 1 -1/4*sqrt(3)*(pi + 2) -1.41333351100299
143(π+2)\displaystyle -\frac{1}{4} \, \sqrt{3} {\left(\pi + 2\right)}
# Mesmo Exemplo: Procedimento Alternativo
y(a=-x);
y(x=pi/2,a=pi/3);
y(x=0.5,a=2.3);

x + 1 -1/4*sqrt(3)*(pi + 2) -1.41333351100299
Substituição de Sub-expressões

Além de substituir variáveis, podemos também substituir sub-expressões inteiras dentro de uma expressão simbólica.
Para tanto, é usado o comando substitute. Observe, no exemplo, que x3x^3 é substituído simbolicamente por y2y^2; observe, também, o uso de um duplo igual (==).

y,z=var('y,z') # define variáveis
f=x^3+y^2+z # definição inicial da função f
f.substitute(x^3==y^2) # manipulação simbólica de f (para sub-expressões, usar ==; para variáveis, usar =)
2*y^2 + z
Transformações de Expressões

Mais especificamente, veremos comandos do Sage que permitem a manipulação de polinômios e funções racionais.

Polinômios

O comando expand permite desenvolver um polinômio enquanto o comando collect agrupa os termos do polinômio de acordo com a potência da variável fornecida.
# Exemplo: Aplicando expand a um Polinômio
x, y = var('x,y')
p = (x+y)*(x+1)^2 # define o polinômio p
p2 = p.expand(); p2 # desenvolve o polinômio p, atribui a p2 e exibe
# Agora, agrupa termos de acordo com as potências da variável x
p3=p2.collect(x); p3
# Os polinômios são iguais? Confira a resposta
bool(p3==p2)
# Agrupa termos de acordo com as potencias de y
p4=p2.collect(y); p4

x^3 + x^2*y + 2*x^2 + 2*x*y + x + y x^3 + x^2*(y + 2) + x*(2*y + 1) + y True x^3 + 2*x^2 + (x^2 + 2*x + 1)*y + x
# Exemplo Mais Complexo: Agrupando termos de acordo com potências de sub-expressão (sin(x))
f=(x+y+sin(x))^2
g=f.expand()
g.collect(sin(x))
# Comandos aninhados (mesmo resultado)
f.expand().collect(sin(x))

x^2 + 2*x*y + y^2 + 2*(x + y)*sin(x) + sin(x)^2 x^2 + 2*x*y + y^2 + 2*(x + y)*sin(x) + sin(x)^2
Funções Racionais

Considere a função r=x3+x2y+3x2+3xy+2x+2yx3+2x2+xy+2yr=\frac{x^3+x^2y+3x^2+3xy+2x+2y}{x^3+2x^2+xy+2y}; acompanhe os exemplos fornecidoa seguir.


# Exemplo de vários comandos aplicados a Funções Racionais
x, y = var('x,y')
r=(x^3+x^2*y+3*(x^2)+3*x*y+2*x+2*y)/(x^3+2*(x^2)+x*y+2*y);show(r)
# Usando show() para facilitar visualização
show(r.simplify_rational())
show(r.factor())
show(r.factor().expand())
x3+x2y+3x2+3xy+2x+2yx3+2x2+xy+2y\displaystyle \frac{x^{3} + x^{2} y + 3 \, x^{2} + 3 \, x y + 2 \, x + 2 \, y}{x^{3} + 2 \, x^{2} + x y + 2 \, y}
x2+(x+1)y+xx2+y\displaystyle \frac{x^{2} + {\left(x + 1\right)} y + x}{x^{2} + y}
(x+y)(x+1)x2+y\displaystyle \frac{{\left(x + y\right)} {\left(x + 1\right)}}{x^{2} + y}
x2x2+y+xyx2+y+xx2+y+yx2+y\displaystyle \frac{x^{2}}{x^{2} + y} + \frac{x y}{x^{2} + y} + \frac{x}{x^{2} + y} + \frac{y}{x^{2} + y}
Outro Exemplo de Funções Racionais

Considere, agora, a função r=(x1)xx27+y2x27+ba+ca+1x+1r=\frac{(x-1)x}{x^2-7}+\frac{y^2}{x^2-7}+\frac{b}{a}+\frac{c}{a}+\frac{1}{x+1}; acompanhe os exemplos fornecidos a seguir.
Observe o comando combine que agrupa termos que têm o mesmo denominador;

a, c, b, x,y=var('a','b','c','x','y')
rr=((x-1)*x)/(x^2-7)+(y^2)/(x^2-7)+b/a+c/a+1/(x+1)
show(rr.combine())
(x1)x+y2x27+b+ca+1x+1\displaystyle \frac{{\left(x - 1\right)} x + y^{2}}{x^{2} - 7} + \frac{b + c}{a} + \frac{1}{x + 1}
Funções Matemáticas Elementares e suas Transformações

O Sage fornece, entre outras, as seguintes funções elementares:

exp, log, log(x,a) (logaritmo de x na base a), sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, sqrt, hth_root (raiz n-ésima)

A seguir, são apresentados vários exemplos de transformações aplicáveis a essas funções matemáticas. Verifique, com lápis e papel, cada uma delas.


# Exemplo: Simplificação da Função Exponencial (anteriormente era simplify_exp, abandonada em favor de canonicalize_radical)
f = (e^x-1) / (1+e^(x/2));
show(f)
show(f.canonicalize_radical())
ex1e(12x)+1\displaystyle \frac{e^{x} - 1}{e^{\left(\frac{1}{2} \, x\right)} + 1}
e(12x)1\displaystyle e^{\left(\frac{1}{2} \, x\right)} - 1
# Exemplos: Transformação de Funções Trigonométricas
f = cos(x)^6 + sin(x)^6 + 3 * sin(x)^2 * cos(x)^2
show(f)
show(f.simplify_trig()) # Simplificação
cos(x)6+sin(x)6+3cos(x)2sin(x)2\displaystyle \cos\left(x\right)^{6} + \sin\left(x\right)^{6} + 3 \, \cos\left(x\right)^{2} \sin\left(x\right)^{2}
1\displaystyle 1
# Exemplo: reduce_trig ("lineariza")
f = cos(x)^6;
show(f.reduce_trig())
132cos(6x)+316cos(4x)+1532cos(2x)+516\displaystyle \frac{1}{32} \, \cos\left(6 \, x\right) + \frac{3}{16} \, \cos\left(4 \, x\right) + \frac{15}{32} \, \cos\left(2 \, x\right) + \frac{5}{16}
# Exemplo: expand_trig
f = sin(5 * x);
show(f.expand_trig())
5cos(x)4sin(x)10cos(x)2sin(x)3+sin(x)5\displaystyle 5 \, \cos\left(x\right)^{4} \sin\left(x\right) - 10 \, \cos\left(x\right)^{2} \sin\left(x\right)^{3} + \sin\left(x\right)^{5}
#Exemplo: Simplificação de Fatoriais
n = var('n'); f = factorial(n+1)/factorial(n)
f.simplify_factorial()
n + 1
# Exemplo: Simplificação de Funções Raiz Quadrada, Exponencial, Logaritmo (anteriormente, era simplify_radical)
f1 = sqrt(abs(x)^2); f1.canonicalize_radical() # Raiz Quadrada
f2 = log(x*y); f2.canonicalize_radical() # Logaritmo
x log(x) + log(y)
Condições Sobre Variáveis Simbólicas

Em muitas situações, as variáveis não podem assumir qualquer valor, estando restritas a um domínio particular, por exemplo, os reais positivos.
O Sage fornece os comandos assume() e forget() para impor (ou retirar) restrições deste tipo.

Um caso típico é o da simplificação da raiz quadrada x2\sqrt{x^2}.
#Exemplo: Raiz quadrada de número negativo: o Sage avisa que está errado ("Assumption is inconsistent")
y=var('y')
forget(y>0)
assume(y<0)
sqrt(y)
sqrt(y)
#Exemplo: Raiz quadrada de número não negativo: Agora, OK
y=var('y')
# Usando forget(): OK
forget(y<0)
sqrt(y)
sqrt(y)
# Outro Exemplo: Assumindo que n é inteiro
n = var('n'); assume(n, 'integer'); sin(n*pi).simplify()
0

3. Resolução de Equações


Solução Simbólica Explícita

O Sage permite resolver equações tanto simbolicamente como numericamente e também sistemas de equações e, até mesmo, inequações.
Primeiro, vamos exemplificar a resolução simbólica das seguintes equações, o que é feito através do comando solve():

a)z22cosϕz+5cos2ϕ4=0 z^2-\frac{2}{\cos{\phi}}z+\frac{5}{\cos^2{\phi}}-4=0
b)y6=y y^6=y
c)x+y=3,2x+2y=6 x+y=3,\quad 2x+2y=6

# Exemplo: Caso (a)
z, phi = var('z, phi')
eq = z**2 - 2/cos(phi)*z + 5/cos(phi)**2 - 4 == 0; eq
solve(eq, z)
show(solve(eq,z))
z^2 - 2*z/cos(phi) + 5/cos(phi)^2 - 4 == 0 [z == -(2*sqrt(cos(phi)^2 - 1) - 1)/cos(phi), z == (2*sqrt(cos(phi)^2 - 1) + 1)/cos(phi)]
[z=2cos(ϕ)211cos(ϕ)\displaystyle z = -\frac{2 \, \sqrt{\cos\left(\phi\right)^{2} - 1} - 1}{\cos\left(\phi\right)}, z=2cos(ϕ)21+1cos(ϕ)\displaystyle z = \frac{2 \, \sqrt{\cos\left(\phi\right)^{2} - 1} + 1}{\cos\left(\phi\right)}]
# Exemplo: Caso (b)
y = var('y'); solve(y^6==y, y)
show(solve(y^6==y, y))
[y == e^(2/5*I*pi), y == e^(4/5*I*pi), y == e^(-4/5*I*pi), y == e^(-2/5*I*pi), y == 1, y == 0]
[y=e(25iπ)\displaystyle y = e^{\left(\frac{2}{5} i \, \pi\right)}, y=e(45iπ)\displaystyle y = e^{\left(\frac{4}{5} i \, \pi\right)}, y=e(45iπ)\displaystyle y = e^{\left(-\frac{4}{5} i \, \pi\right)}, y=e(25iπ)\displaystyle y = e^{\left(-\frac{2}{5} i \, \pi\right)}, y=1\displaystyle y = 1, y=0\displaystyle y = 0]
# Exemplo: Caso (c)
solve([x+y == 3, 2*x+2*y == 6], x, y)
# OBSERVAÇÃO IMPORTANTE: Este é um sistema indeterminado; então a solução é parametrizada em função de uma incógnita secundária, neste caso, r6
[[x == -r6 + 3, y == r6]]
Solução Numérica Explícita

No exemplo apresentado a seguir, o Sage não encontra a solução simbólica da equação. Neste caso específico, temos duas opções: resolver numericamente, através do comando find_root, fornecendo um intervalo para o Sage determinar a raiz ou fazer uma transformação prévia que permita a solução numérica completa, de forma explícita, usando o comando solve.
A equação é:

sinx+sin2x+sin3x=0 \sin{x}+\sin{2x}+\sin{3x}=0


# Exemplo: Solução não encontrada, observe que o Sage simplesmente repete a equação de outra maneira
expr=sin(x)+sin(2*x)+sin(3*x)
solve(expr,x)
[sin(3*x) == -sin(2*x) - sin(x)]
# Solução Numérica com find_root no intervalo [0.1,pi]
find_root(expr,0.1,pi)
2.0943951023931957
# Solução com transformação da expressão
f=expr.simplify_trig();show(f)
solve(f,x)
2(2cos(x)2+cos(x))sin(x)\displaystyle 2 \, {\left(2 \, \cos\left(x\right)^{2} + \cos\left(x\right)\right)} \sin\left(x\right)
[x == 0, x == 2/3*pi, x == 1/2*pi]
df77a342-d885-4ba9-b76d-ac103bf840cc
50a1b464-a094-4fab-ba01-265dfb9fdfbd
08813418-4853-4d45-8640-48a57edaf35d
fb5bcb02-b2a9-4ec0-b097-f601af6b08f7
ef5f6b6c-a87f-4fa1-b994-d82a6fa77c95
9dceb8ae-73dc-43f0-ada2-12f8a584a702
08bc7356-1ff4-4a58-a97d-63fccb885b00
d60833ca-fc58-49f3-b2cb-aeb5417214b8

0bcb5e9b-8438-46b0-9b6e-315f32402945