Вы находитесь на странице: 1из 64

ECONOMIA COMPUTACIONAL COM

O USO DO MATHEMATICA

POLINMIOS E EQUAES

Prof. Marcelo de Oliveira Passos


Departamento de Economia Universidade Federal de Pelotas
Mestrado em Organizaes e Mercados Economia Aplicada
Importante
Aconselha-se utilizar a verso paga do programa
Mathematica ou a verso de teste por 15 dias.
Evite a pirataria.
A verso de teste est disponvel em
https://www.wolfram.com/mathematica/trial/
Os preos das verses pagas esto disponveis em
https://www.wolfram.com/mathematica/pricing/
Matemtica simblica (lgebra literal)

As expresses algbricas manuscritas so parecidas com


as que so escritas no Mathematica.
As diferenas esto no uso de alguns smbolos do teclado
(como ^, para as potncias, * para as multiplicaes, /
para os quocientes e assim por diante).
Aps digitar a expresso, pressione as teclas [SHIFT]
+[ENTER] no teclado normal (mais usado em laptops,
notebooks e netbooks) ou pressione [ENTER] no teclado
numrico (esta forma mais usada em desktops com
teclados maiores do que os dos notebooks).
Matemtica simblica (lgebra literal)

Se a expresso no for compreendida, isto , no


caso de o programa no puder calcular ou
simplificar, a mesma expresso digitada In[n] ser
retornada como resposta Out[n].
importante notar que nas potncias, x^2y
significa x2y. Mas x^(2y) equivale a x2y

>x^3+4x^2-6x+16
2 3
16 6 x 4x x
Matemtica simblica (lgebra literal)

O Mathematica calcula expresses simblicas to


bem quanto executa clculos numricos.
As operaes aritmticas devem ser agrupadas
dentro de parnteses.
importante ressaltar que o produto de a e b
escrito como a b.
Sem um espao definido ab um produto
univariado.
Comandos para operaes algbricas:
viso geral
Expand[expr]: desenvolve os fatores da expresso
algbrica.
Factor[expr]: fatora a expresso onde for possvel.
Simplify[expr]: retorna a forma mais simples da
expresso.
ExpandAll[expr]: desenvolve produtos e potncias
da expresso.
Comandos para operaes algbricas:
viso geral
Together[expr]: pe toda a expresso sobre um
denominador (transforma a expresso no numerador
de uma frao algbrica).
Cancel[expr]: permite cancelar todos os fatores
comuns da expresso.
%: utiliza novamente a expresso imediatamente
anterior.
%%: Utiliza novamente a expresso imediatamente
anterior anterior
Comandos para equaes algbricas

Solve[equaes, variveis]: tenta resolver as


equaes para as variveis.
As razes determinadas por Solve so expressas
como uma lista da seguinte forma:
{{x x1},{x x2},...}
A notao x x1 indica que a soluo x x1, mas x
no substitudo por este valor.
Se a equao possui razes de mltiplos m>1, cada
uma delas repetida m vezes.
Comandos para equaes algbricas

Se somente uma delas estiver presente, as variveis


podem ser omitidas.
Ex:
> Solve[10x+5== 5x+2.5]
x 0.5
Se resolvermos a equao ax = b para x, Solve nos
dir que x = b/a.
Mas se a = b = 0, ento qualquer nmero x uma
soluo.
Comandos para equaes algbricas

Neste caso, o comando Reduce pode ser usado para


descrever todas as solues possveis.
Reduce[equaes, variveis]: simplifica equaes
tentando resolv-las para variveis.
Se o termo equaes for uma identidade, Reduce
retorna o valor True. Se ele for uma contradio, o
valor False retornado.
Reduce usa os smbolos && (o e lgico ou ) e o
|| (ou lgico ou ). O smbolo && tem
precedncia sobre o ||.
Comandos para equaes algbricas

Exs:
Solve[x^2-12==-3,x]
x 3 , x 3
Reduce[x^2-9==(x-3)*(x+3),x]
True
Reduce[x^2-12==(x-3)*(x+3),x]
False
Comandos para equaes algbricas

Solve[x^2+y^2==12&&x+y==4]
x 2 2 , y 2 2 , x 2 2 , y 2 2

O Mathematica retorna as solues das equaes


como uma lista agrupada ordenadamente.
Ela no pode ser usada diretamente como input
para outra estrutura matemtica.
Mas possvel acessar estes valores sem
desnecessariamente digitar ou colar usando /.
Comandos para equaes algbricas

Se ns quisermos calcular o valor de uma expresso


usando solues obtidas a partir de Solve, ns
podemos usar o /. (operador de substituo) e o
Mathematica substituir os valores apropriados.
Ex: Resolver o sistema com as equaes x+y=10 e
x+y^2=52 e calcular a expresso 2x+2y.
>solucoes=Solve[{x+y==10,x+y^2==52},{x,y}]
x 16, y 6 , x 3, y 7
>2x+2y/.solucoes
20, 20
Comandos para equaes algbricas

O comando Solve foi projetado para resolver


equaes algbricas.
Mas ele pode s vezes ser usado para encontrar
solues limitadas de equaes transcendentais.
Uma mensagem de alerta aparece quando nem
todas as solues puderem ser encontradas.
Ex: >Solve[Cos[x]==1/2,x]
x ConditionalExpression 2 C 1 ,C 1 Integers ,
3
x ConditionalExpression 2 C 1 ,C 1 Integers
3
Comandos para equaes algbricas

Para obter uma soluo mais geral para essa


equao, use Reduce.
>Reduce[Cos[x]==1/2,x]
C 1 Integers && x 2 C 1 x 2 C 1
3 3
Se as equaes a serem resolvidas forem
inconsistentes o Mathematica retorna uma lista vazia.
O comando Nsolve obtm uma aproximao
numrica para a expresso.
Comandos para equaes algbricas

Ex: > equacao=x^4-16x^3+61x^2-22x-12==0


12 22 x 61 x2 16 x3 x4 0
>Solve[equacao]
x 3 5 , x 3 5 , x 5 2 7 , x 5 2 7
> NSolve[equacao]
x 0.291503 , x 0.763932 , x 5.23607 , x 10.2915

Uma soluo estranha aquela que tecnicamente


no uma soluo da equao, mas que emerge do
processo de soluo. Solues de clculos com
radiciaes podem gerar tais solues.
Comandos para equaes algbricas

O comando VerifySolutions determina se o


Mathematica deve verificar se as solues obtidas so
estranhas.
O default do comando VerifySolutions -> True,
que elimina as solues estranhas da lista de solues.
Mas se as solues estranhas forem desejadas, o
comando VerifySolutions->False deve ser usado.
Ex: >Solve[x+x^(1/2)==5]
1
x 11 21
2
Comandos para equaes algbricas

> Solve[x+x^(1/2)==5,VerifySolutionsFalse]
1 1
x 11 21 , x 11 21
2 2
Verifica-se que o segundo termo da soluo acima
uma soluo estranha.
Comandos para equaes
transcendentais
As equaes transcendentais so aquelas que no so
equaes algbricas.
O Mathematica tem o comando FindRoot para lidar
com estas equaes.
O FindRoot usa mtodos iterativos para encontrar
solues.
Deve-se especificar um valor inicial, tambm chamado
de estimativa inicial (initial guess).
Para melhores resultados, a estimativa inicial deve ser
to prxima da raiz desejada quanto for possvel.
Comandos para equaes
transcendentais
FindRoot[lde==lee, {x,x0}] : resolve a equao lde
(lado direito da equao) == lee (lado esquerdo da
equao) usando o mtodo de Newton com valor
inicial igual a x0.
FindRoot[lde==lee, {x,{x0,x1}}] : resolve a equao
lde == lee usando uma variante do mtodo da
secante com valores iniciais iguais a x0 e a x1.
FindRoot[lde==lee, {x,x0,xmin, xmax}}] : tenta
resolver a equao lde == lee, mas para se a
iterao for para fora do intervalo {xmin, xmax}.
Comandos para equaes
transcendentais
Se uma funo for especificada no lugar da equao
lde==lee, o comando FindRoot ir calcular o zero da
funo (o nmero x tal que f(x)=0)
>Plot[{Sin[x], x^2-1},{x,-,}]

3 2 1 1 2 3
Comandos para equaes
transcendentais
O grfico das duas funes mostra que a interseo
delas prxima de x= -1 e x=1.
>FindRoot[Sin[x]==x^2-1,{x,-1}]
x 0.636733
>FindRoot[Sin[x]==x^2-1,{x,1}]
x 1.40962
Outros exemplos

> Expand[(a b-c d)^2+(a d+b c)^2]


2 2 2 2 2 2 2 2
a b b c a d c d

>Factor[%]
2 2 2 2
a c b d

A funo Simplify utiliza vrios mtodos para


reduzir expresses s suas formas mais simples.
Exemplos

> Simplify[Cos[x]^4-Sin[x]^4]
Cos[2 x]

FullSimplify uma verso mais poderosa de


Simplify, mas ela pode demorar mais para dar uma
resposta.
> FullSimplify[Gamma[z] Gamma[1-z]]
Csc [ z]
Atribuindo valores variveis
Para atribuir um valor numrico ou literal (letra) a
uma varivel, escreva o valor da varivel e
pressione [ENTER]
Escrever em seguida a expresso e pressione
[SHIFT]+[ENTER] no teclado comum ou [ENTER] no
teclado numrico.
Use o formato "nome_da_varivel = expresso.
Atribuindo valores s variveis
O valor atribudo varivel permanecer em todas
as expresses inseridas depois dela
>y=-5
-5
>y^3+6y^2-3y
40
Atribuindo valores variveis
Outro exemplo: atribuir um valor literal varivel y.
Como a varivel y j foi utilizada vamos limp-la
antes da nova atribuio. O programa dar a
resposta na forma que considera mais simples.
>y=.
2
1 x

>y=x^2+1
2 3
3y 3y y
Atribuindo valores variveis
sempre recomendvel limpar os valores atribudos
a uma varivel antes de continuar com os clculos na
mesma sesso. Assim, o prximo passo limpar a
varivel y.
>Clear [y]
O smbolo de igualdade = utilizado para
atribuir valores s variveis.
Atribuindo valores variveis
possvel colocar vrios comandos sobre uma linha
separando-as com sinais de ponto-e-vrgula.
Os comandos so executados em seqncia, com o
output sendo o resultado do ltimo comando.

> x=3;y=x+1; Sqrt[x^2+y^2]


5
Atribuindo valores variveis
Os valores atribudos s variveis so mantidos at
que eles sejam explicitados claramente ou at que
o usurio conclua a sesso do Mathematica.
Abaixo, espera-se uma expresso algbrica, mas em
vez de obt-la, obtm-se como resultado um nmero,
uma vez que x e y ainda possuem valores numricos
que foram atribudos acima.

> Expand[(x+y)^5]
16807
Atribuindo valores variveis
Para evitar este comportamento inesperado, convm
apagar os valores das variveis to logo se finalize
o uso delas.
> Clear[x,y];Expand[(x+y)^5]
5 4 3 2 2 3 4 5
x 5x y 10 x y 10 x y 5xy y
Atribuindo valores variveis
No Mathematica, voc pode evitar todas estas
questes pelo uso de regras de transformao. A
regra x 3 representa x redefinido como 3.
Abaixo o /. aplica esta regra expresso anterior,
mas no atribui um valor a x neste processo.

>1+x^2+x^4+x^5/.x->3
334
Limpando os valores das variveis
Para cancelar o valor da varivel, isto , para
limpar a letra ou valor numrico associado a ela,
voc pode utilizar os comandos:
nome_da_varivel =. ou simplesmente Clear
[nome_da_varivel]
Para limpar mais de uma varivel de uma s vez,
utilize o comando Clear [var1, var2, ..., vark].
Limpando valores das variveis
O valor atribudo varivel permanecer em todas
as expresses inseridas depois dela
Para cancelar o valor da varivel, isto , para
limpar a letra ou valor numrico associado a ela,
voc pode utilizar os comandos:
nome_da_varivel =. ou simplesmente Clear
[nome_da_varivel]
Exemplos
>(a+b)*(a-b)/((2-x)*(x^3+y^2))

a b a b
2 x x3 y2

Desenvolvendo os fatores da expresso acima com


o comando Expand [%]:

>Expand[%]
a2 b2
2 x x3 y2 2 x x3 y2
Exemplos
Para desenvolver os produtos e as potncias da
expresso, utiliza-se o comando ExpandAll [%%]:

>ExpandAll [%%]
a2 b2
2 x3 x4 2 y2 x y2 2 x3 x4 2 y2 x y2

Fatorando ao mximo a expresso:

>Factor[%]
a b a b
2 x x3 y2
Exemplo
Simplificando ao mximo a expresso:

>Simplify[%]
a2 b2
2 x x3 y2
Exemplo
Outro exemplo: atribuir um valor literal varivel y.
Como a varivel y j foi utilizada vamos limp-la
antes da nova atribuio.
O programa dar a resposta na forma que
considera mais simples.

>y=.
>y=x^2+1
2

1 x
Exemplo

>y^3+3y^2-3y
2 3
3y 3y y

sempre recomendvel limpar os valores atribudos


a uma varivel antes de continuar com os clculos na
mesma sesso.
Assim, o prximo passo limpar a varivel y.

>Clear [y]
Exemplo

O smbolo de igualdade = utilizado para atribuir


valores s variveis.
possvel colocar vrios comandos sobre uma linha
separando-as com sinais de ponto-e-vrgula.
Os comandos so executados em seqncia, com o
output sendo o resultado do ltimo comando.

> x=3;y=x+1; Sqrt[x^2+y^2]


5
Exemplo

No Mathematica, voc pode evitar todas estas


questes pelo uso de regras de transformao.
A regra x 3 representa x redefinido como
3.
Abaixo o /. aplica esta regra expresso anterior,
mas no atribui um valor a x neste processo.

>1+x^2+x^4+x^5/.x->3
334
Exemplos

>(a+b)*(a-b)/((2-x)*(x^3+y^2))
a b a b
2 x x3 y2

Desenvolvendo os fatores da expresso acima com


o comando Expand [%]:

>Expand[%]
a2 b2
2 x x3 y2 2 x x3 y2
Exemplos

Para desenvolver os produtos e as potncias da


expresso, utiliza-se o comando ExpandAll [%%]

>ExpandAll [%%]
a2 b2

2 x3 x4 2 y2 x y2 2 x3 x4 2 y2 x y2

Fatorando ao mximo a expresso:


>Factor[%]
a b a b
2 x x3 y2
Exemplos

Simplificando ao mximo a expresso:

>Simplify[%]
a2 b2
2 x x3 y2
Polinmios

A seguir est uma lista com os principais comandos


do Mathematica para trabalhar com polinmios.
Designaremos pol como abreviatura de polinmio.
Inicialmente digita-se o polinmio dando-lhe um
nome na forma de "poln = expr".
Aps cada digitao, pressionar [ENTER].
Polinmios: comandos

Exponent[pol, x]: mostra o grau do polinmio.


PolynomialGCD[pol1, pol2]: mximo divisor comum
entre pol1 e pol2.
PolynomialLCM[pol1, pol2]: mnimo mltiplo comum
entre pol1 e pol2.
PolynomialQuotient[pol1, pol2, var]: retorna o
quociente da diviso de pol1 por pol2.
PolynomialRemainder[pol1, pol2, var]: fornece o
resto da diviso de pol1 por pol2.
Polinmios: exemplos

A abreviatura var utilizada para significar


varivel do polinmio.
Para expandir uma expresso polinomial, utilize o
comando abaixo:

>pol1=Expand[(x+3)^2+(x-1)^3]
2 3
8 9x 2x x

Inserindo um novo polinmio para operarmos com


dois polinmios
Polinmios: exemplos

>pol2=2x^3+4x-2
3
2 4x 2x
Para achar o quociente entre pol1 e pol2:

>PolynomialQuotient[pol1,pol2,x]
1/2
Polinmios: exemplos

Calculando o resto da diviso de pol1 por pol2:

>PolynomialRemainder[pol1,pol2,x]
2
9 7x 2x
Equaes na forma simblica

As equaes so escritas com a notao ==.


O segundo argumento de Solve a varivel
incgnita.
As solues so fornecidas pelo Mathematica como
regras da forma x value.

>Solve[x^2+x==a,x]
1 1
x 1 1 4a , x 1 1 4a
2 2
Equaes na forma simblica

O operador = utilizado para atribuir valores s


variveis.
Se o usurio utilizar = em vez de ==, a funo
Solve ir responder com um beep de alerta.
Ocorre que, involuntariamente, o usurio ainda pode
fixar o valor de uma varivel.
O usurio pode resolver equaes envolvendo mais
de uma nica varivel.
Equaes na forma simblica

No output, cada sublista representa uma soluo.

>Solve[{x^2-k^2==0,y^2==x^2},{x,y}]

A funo Solve pode tambm manipular equaes


que envolvam funes mais complicadas.

>Solve[Log[x+Sqrt[a+x^2]]==b,x]

Resolvendo equaes numericamente

Voc pode usar NSolve para encontrar


aproximaes numricas para as razes de uma
equao polinomial.

> solutions=NSolve[x^3+x+1==0,x]
Resolvendo equaes numericamente

A funo NSolve fornece uma lista de regras.


Para obter uma lista de nmeros para um x
qualquer, em vez de uma lista de regras, voc deve
apenas aplicar estas regras para x usando o
operador /.

> x/.solutions
Resolvendo equaes numericamente

A funo Nsolve tambm encontra solues numricas


para sistemas de equaes simultneas.

> NSolve[{x+y==2,x-3y+z==3,x-
y+z==0},{x,y,z}]

Resolvendo equaes numericamente

Para equaes no polinomiais, voc pode usar a


funo FindRoot para encontrar solues.
O argumento {x, 1} pede ao Mathematica para
encontrar uma soluo numrica iniciando em x = 1.

> FindRoot[3Cos[x]==Log[x],{x,1}]

Combinando padres
O Mathematica se baseia no princpio unificador de
que tudo pode ser tratado como uma expresso
simblica.
Todas as operaes no Mathematica sejam
nmeros, smbolos, expresses ou quaisquer outras
podem ser pensadas como transformaes de
expresses.
Combinando padres

Objeto Exemplo Representao


Uma lista de {a,b,c} List[a,b,c]
elementos
Uma expresso x^2+5 Plus[5,Power[x,2]
algbrica ]
Uma equao x==Sin[x] Equal[x,Sin[x]]
Combinando padres
O smbolo _ (chamado de blank ou espao)
pode representar qualquer expresso. Por
exemplo, o padro _^_ representa qualquer
potncia.
A funo Cases fornece os elementos de uma lista
que corresponde a um padro especfico.

> Cases[{1,x^2,E^3,2^t^3,4},_^_]

Combinando padres
possvel nomear um pedao de um padro para
retir-lo de uma expresso.
No padro _^n_ o expoente chamado n.

> Cases[{1,x^2,E^3,2^t^3,4},_^n_n]

Combinando padres
Isto mostra que possvel usar padres para
transformar expresses. Aqui, o padro x + y
permanece para a soma de dois termos.

>{a+b,a+b+c}/.x+yx^2+y^2

Referncias
BLACHMAN, Nancy. Mathematica: a practical
approach. New Jersey: Prentice-Hall, 1992.
DON, Eugene. Mathematica - 750 exercises with
answers .2nd ed. Schaum`s Outlines Series. New York:
McGraw-Hill, 2009.
STINESPRING, John Robert. Mathematica for
Microeconomics. New York:Harcourt/Academic
Press, 2002.
Referncias sobre Polinmios,
Equaes e aplicaes Economia
BALDANI, J.; BRADFIELD, J. & TURNER, R.W.
Mathematical Economics. 2nd ed. Chulo Alto, CA:
Southwestern College Publications, 2004.
CHIANG, A. & WAINWRIGHT, K. Matemtica para
economistas. 4 ed. Rio de Janeiro: Campus, 2005.
DOWLING, E. T. Introduction to Mathematical
Economics. 3rd ed. New York: McGraw-Hill, 2001.
Schaum`s Outline Series.
Referncias sobre Polinmios,
Equaes e aplicaes Economia
IEZZI, G. Complexos, Polinmios e Equaes:
Fundamentos de Matemtica Elementar - Vol. 6. So
Paulo: Atual, 1985.
LIPSCHUTZ, S. Matemtica Finita (Coleo Schaum).
So Paulo: McGraw-Hill, 1972 (traduo de
Adalberto Panobianco Bergamasco).
SIMON, C.P. & BLUME, L. Mathematics for
Economists. New York: W.W. Norton & Company
Inc., 1994

Вам также может понравиться