Aritmética com Maple

Propaganda
Aritmética com Maple:
Capítulo 3
Objetivos:
1. Estudar os tipos de dados numéricos disponíveis no Maple
2. Estudar as operações ariméticas disponíveis no Maple
3. Apresentar as funções de uso mais frequente
Constantes Operadores e Funções:
Se podemos usar o Maple como uma calculadora para calcularmos expressões aritméticas, podemos
dispor também das constantes matemáticas , numéricas e simbólicas.
O sistema distingue entre valores exatos e valores aproximados. Os inteiros, racionais e algébricos , as
constantes simbólicas , , , true e false , são exatas . Os decimais são aproximados. Os complexos ,
ambas as partes , real e imaginária , são exatas ; em outros casos , são aproximados.
Estas constantes podem combinar entre si , inclusive com as variáveis descritas nopróximo capítulo, para
formar expressões.
Funções matemáticas
Função
, ln x,
no Maple
exp(x), ln(x) ou log(x), log[b](x)
sqrt(x)
|x|
abs(x)
Mínimo, máximo
min( , ,..., ), max( , ,..., )
Quociente e resto
iquo(m,n), irem(m,n)
Truncamento
round(x), trunc(x)
Parte fracionária
frac(x)
Máximo Divisor Comum
gcd( , , ... ,
Sinal
), lcm( , , ... ,
)
signum(x), csgn(x)
Trigonométricas
sin(x), cos(x), tan(x)
sec(x), csc(x), cot(x)
Trigonométricas inversas
arcsin(x), arcos(x), arctan(x)
arcsec(x), arccsc(x), arccot(x)
Hiperbólicas
sinh(x), cosh(x), tanh(x)
sech(x), csch(x), coth(x)
Hiperbólicas inversas
arcsinh(x), arccosh(x), arctanh(x)
arcsech(x), arccsch(x), arccoth(x)
GAMMA(x)
--------------------------------------------------------------Operadores Racionais e lógicos
operação
Menor
Menor ou igual
Maior
Maior ou igual
Igual
Diferente
Conjunção
Disjunção
Negação
símbolo
<
<=
>
>=
=
<>
and
or
not
exemplos
1<Pi, x+2<5
-(2+3)<=3*a
3*5>b, 3*y>6+3*x
6/4*x=6/(4*x)
6/4*x<>6/(4*x)
6/4*x<>6/(4*x)
a and (b<1)
a or b
not(b<1)
Números Inteiros e Racionais:
O Maple pode armazenar e operar com números inteiros de grande tamanho sem transformá-los em
números decimais, e portanto sem erros de arrendondamento.
A representação e manipulação de inteiros se faz com a notação matemática usual:
> restart;
> 6/4, -2/3, 4/(-3);
(1)
>
(1)
> 6/4+(-2/3)*4/(-3)+abs(-4);
(2)
O quociente e o resto inteiros se obtêm através das funções:
> iquo(17,3), irem(17,3);
(3)
O sistema pode manipular dados de grande tamanho:
> 5!!/30^50;
(4)
O caracter \, que aparece no resultado anterior, serve para indicar que o dado continua na linha seguinte.
O racional anterior pode se decompor em fatores primos por meio da função ifactor:
> ifactor(%);
(5)
Expandindo o resultado anterior com a função expand comprova-se a sua validez:
> expand(%);
(6)
Alguns valores excedem a capacidade do Maple:
> 13!!;
> 8!!;
A capacidade do Maple de manipular dados de grande tamanho se deve à representação interna dos
mesmos. De fato, um natural representa-se como um registro:
O primeiro campo contém o INTPOS, que codifica informação sobre a estrutura dos dados, indicando
dentre outras coisas, que se trata de um número positivo e o seu tamanho. O resto dos campos contém os
dígitos do número da base B (B=
numa máquina de 32 bits), do menos ao mais significativo e sem
zeros na cabeceira. Esta estrutura representa o inteiro
+ +...+ .
As limitações no tamanho dos dados que se podem manipular com essa representação são duas:
- Em primeiro lugar, como a cabeceira armazena a longitude do inteiro, é decidir , o número de dígitos
em base B, em um espaço de tamanho fixo (17 bits), essa longitude possui valor de ( *4=524288
dígitos decimais). É improvável alcançar este valor na prática, ainda que isso tenha ocorrido no exemplo
anterior ao tentar calcular 8!!
- Em segundo lugar, é possível que o Maple seja capaz de manipular um dado concreto, mas que este
não cabe na memória disponível no ordenador que está usando.
Com a informação anterior, pode-se imaginar que o Maple representa internamente um racional como
um registro com três campos, o segundo e terceiro dosquais contêm o numerador e denominador da
fração uma vez normalizada. Esta suposição é correta, salvo que os campos que contém os inteiros em
questão, são ponteiros deles mesmos. Desta forma, se segue a regra que no Maple cada expressão se
armazena somente uma vez.
Números Algébricos
O Maple pode operar com números algébricos utilizando dois tipos de representação. Uma, mediante os
radicais, para números como
que saõ expressáveis deste mmodo. Outra, mediante raízes
de polinômios, que permite expressar todos os números algébricos. Em ambos os casos, a aritmética é
exata. O Maple sabe passar de uma representação a outra quando o é possível.
Exemplo de números algébricos representados como radicais.
Obs: o sistema representa o número algébrico i, unidade imaginária, como I:
> restart;
> (-1)^(1/2);
>
O Maple realiza certas simplificações elementares como racionalizar:
> (-2)^(9/2);
reduzir expoentes:
> (-2)^(9/2);
simplificá-los:
> (3^(1/2))^2,I^2,((-2)^(2/3))^(9/2);
ou distribuí-los sobre fatores:
> (3*2^(1/2))^(1/2);
algumas simplificações mais complexas, que não se realizam de modo automático, podem obter-se com
a função simplify :
> (3^2)^(1/2),(2/27)^(2/3),1/(2^(1/2)+1);
> simplify([%]);
Como podemos observar, a função simplify não racionaliza .Para realizar este tipo de simplificação com
expressões com radicais , e outras expressões mais complexas em geral, usa-se as funções descritas nos
capítulos 9 e 10 .
A função sqrt , também permite expressar raíz quadrada :
> sqrt(3),sqrt(9),sqrt(-9),sqrt(12);
> sqrt(4-2*sqrt(3)),sqrt(5+sqrt(24))+sqrt(5-sqrt(24));
Como podemos ver ,esta função realiza automáticamente certas simplificações.
A representação interna dos radicais, se mostra como um registro com três campos , onde o segundo e o
terceiro ponteiro apontam para a base e o expoente , respectivamente :
A maioria dos números algébricos , não se pode expressar mediante radiacais, somente como raízes de
polinômios. No Maple, conseguimos isto, usando uma função:
que representa a raíz de um polinômio indeterminado , porém mais próximo deste valor.Se omitirmos o
terceiro argumento, ela expressará qualquer uma das raízes do polinômio. Se omitirmos o segundo
argumento, o Maple extrai a indeterminada do polinomio autmáticamente. Esta expressão corresponde
tanto a representação externa como interna.
Exemplo 1 (Números algébricos como raízes de polinõmios)
Neste exemplo , expressamos
quadrado do objeto 2.
como uma das raízes do polinômio
.Este sistema usará o
> restart;
> RootOf(x^2-2);
Internamente, o Maple utiliza a variável _Z para todas as expressões RootOf .
Igualmente como nas expressões com radicais , a aritmética e as simplificações com expressões RootOf
não são automáticas. Para obtermos , utilizaremos as funções evala, que realizam um cálculo algébrico, o
simplify :
> %^2,1/%;
> evala([%]);
É comum utilizarmos um apelido para as expressões RootOf , utilizamos então um nome simbólico tanto
para a entrada como para a saída :
> alias(alfa=RootOf(x^5+9*x+3));
Ao utilizarmos a função alias , o Maple informa todos os alias definidos até o momento. Em particular,
observamos que I é um alias.
> evala([alfa^5+alfa,1/alfa,1/(alfa+1)]);
Se o polinômio utilizado com RootOf for grau 1 , o Maple resulta uma variável indeterminada. Se for
grau 0 , se produz um erro:
> RootOf(2*x+1);
> RootOf(2);
>
Através da função convert, o Maple pode passar da representação de um radical dada por RootOf, e
vice-versa , quando há possibilidade :
> convert(2^(1/2),RootOf),convert((1-2^(1/2))^(1/3),RootOf);
> ### WARNING: note that `I` is no longer of type `radical`
convert([%],radical);
> ### WARNING: note that `I` is no longer of type `radical`
convert(alfa,radical);
Neste último caso , o Maple não pode realizar a conversão, pois o polinômio não é definido por
radicais.
Se o polinômio utilizado com RootOf não é redutível , a função simplify opera até onde pode , utilizando
a raíz do número do polinômio em questão :
> alias(beta=RootOf(x^2-x));
> simplify([beta^2,1/beta]);
Ao contrario, evala verifica qual polinômio é redutível :
> evala(beta^2);
> evala(1/beta);
> evala(beta);
O sistema informa o surgimento das raízes 0 e 1 .
Números transcendentes e funções elementares
A menos de constantes numéricas, como os inteiros, racionais e radicais, o Maple pode manipular
constantes simbólicas, como os números algébricos vistos na seção anterior , como os números
transcendentes , ,
. Em todos os casos, se trata de valores exatos , dos quais o sistema
conhece certas propriedades .
Exemplo 2 (números transcendentes e funções elementares)
Entre as constantes simbólicas, encontram-se os números e
, representados como Pi e exp(1) ,
respectivamente :
> restart;
> abs(exp(1)-Pi),signum(2-exp(1));
As funções elementares (veja 3.3) quando atuam sobre dados exatos , devolvem resultados exatos:
> sin(-Pi/6),sin(Pi/5),tan(Pi/12)^2,exp(0);
> tan(Pi/2);
Se o Maple não pode obter uma expressão mais simples para o resultado , nem automáticamente , nem
com a ajuda da função simplify , ele devolve a expressão introduzida:
> sin(Pi/7),exp(1/2),exp(-1);
> simplify([%]);
Estas expressões também são constantes simbólicas.
Algumas funções admitem um número variável de argumentos:
> min(1,-2),min(3,Pi,abs(I)),min(Pi,sqrt(10),a+1,a-1,a);
Neste exemplo, verificamos que a função min, igual a outras como max, trunc, round, floor e ceil , são
capazes de realizar simplificações simbólicas. Entre outras coisas, existe o uso da função signum para
determinar que
.
Números Decimais
Os números decimais se escrevem no Maple usando ponto decimal, notação científica da função :
.
cujos argumentos são inteiros e representam o número
Exemplo 3 (Representação de números decimais)
Todas as expressões seguintes representam o mesmo número decimal :
> restart;
.
> -4.70,-0.47E1,-4700e-3;
> Float(-470,-2),Float(-47,-1),Float(-4700,-3);
Ao contrário, veja o seguinte racional:
> -470*10^(-2);
A representação externa dos decimais através da função Float, se correspnde diretamente a representação
interna , esquematizada abaixo:
Os números decimais são dados aproximados. Quando o Maple os manipula, os arredonda utlizando
arimética decimal de precisão arbitrária, o que significa que o número de dígitos a utilizar , é finito, pode
ser tão grande como se queira.
Exemplo 4 (Aritmética decimal de precisão arbitrária)
Quando uma expressão está formada por dados exatos , o Maple calcula de modo exato, devolvendo em
forma simbólica aquelas subexpressões que não pode calcular :
> restart;
> 4/6+2,exp(2),sqrt(12)/2^4-tan(Pi/4)+cos(1);
Por outro lado, quando uma expressão contém algum dado aproximado, o Maple calcula utilizando
aritmética aproximada. O número de dígitos que o sistema usa para as operações aritméticas decimais
não é o número de operandos , mas sim o valor da variável global Digits, que por default é 10.
> Digits;
> 4/6+2.,exp(2),sqrt(12.)/2^4-tan(Pi/4)+cos(1.);
Ao modificarmos o valor da variável Digits , as operações aritméticas aproximadas subsequentes , serão
feitas com a nova precisão:
> Digits:=4;
>
> 4/6+2.,exp(2),sqrt(12.)/2^4-tan(Pi/4)+cos(1.);
A aritmética decimal está sujeita a erros de arredondamento :
> (1+.0003)+.0003<>1+(.0003+.0003);
Este exemplo, nos mostra que , a soma em modo aproximado não é associativa, pois se faz um
arredondamento em cada operação.
O Maple não reconhece imediatamente o resultado seguido como zero :
> (1+sqrt(2))^2-3-2*sqrt(2);
> simplify(%)<>(1+sqrt(2.))^2-3-2*sqrt(2.);
Desta forma vemos que , se usarmos a simplificação em modo exato o resultado é diferente do modo
aproximado devido aos erros de arredondamento.
Para obtermos uma aproximação decimal de uma expressão, utilizamos a função evalf(expressão,n)
que aproxima para o primeiro argumento o número de dígitos expecificado no segundo. Este segundo
argumento é opcional, e caso seja omitido o Maple utiliza o valor da variável Digits .
Exemplo 5 (Cálculos Aproximados)
Podemos aproximar os valores de várias constantes e funções elementares e especias:
> restart;
> Pi<>evalf(Pi,200);
> Digits:=50:exp(1)<>evalf(exp(1));Digits:=10:
> sin(3)<>evalf(sin(3));
Podemos produzir diferenças entre calcular com aritmética decimal e logo em seguida fazermos o
arredondamento, e calcularmos com aritmética decimal o arredondamento em cada etapa :
> evalf((1/9)^1000)<>(1/9.)^1000;
A capacidade das funções como min de realizar simplificações simbólicas tem algumas limitações. Por
exemplo, Maple não é capaz de calcular o mínimo entre e uma aproximação decimal de seu valor com
a precisão atual dada por Digits :
> min(Pi , evalf(Pi));
A função evalf aproxim os números algébricos expressados na forma RootOf a uma raíz mais próxima
do argumento numérico quando este é utilizado :
> evalf([RootOf(x^2-2,-1),RootOf(x^2-2,1),RootOf(x^2-2)]);
> evalf([RootOf(x^3+8),RootOf(x^3+8,1+I)]);
Números Complexos
Já vimos que a unidade imaginária I , é um alias de um número algébrico
.Os números
complexos são polinômios em I . Quando operamos com estes números , o Maple usa a informação de
que
.Para realizar operações com complexos , ele dispõem das funções da tabela 3.5.
Tabela 3.5 Funções para operar com números complexos
Exemplo 6 (Operações com números complexos)
Quando os dados são numéricos , a aritmética complexa realiza automáticamente. E inclui a aritmética
racional complexa e a aritmética decimal complexa :
> restart;
> (1/2+I)*(2+I)/(5-3*I)^2,sin(1./3-1/2*I)^2;
Quando aparecem dados simbólicos e se deseja uma expansão completa, é preciso utilizar a função
evalc , que calcula o argumento a um número complexo expressado de forma binomial :
> exp(1)^(I*Pi),(sqrt(2)+I)*I,I^(1/2),2^I;
> evalc([%]);
> exp(2+Pi/3*I),ln(2+Pi/3*I);
> evalc([%]);
> ((-2)^3)^(1/3);
> evalc(%),simplify(%);
> sqrt(55/36+4/3*I);
Como podemos observar pelos exemplos anteriores, o Maple utiliza a parte principal para simplificar as
raízes complexas.
As funções Re e Im calculam as partes real e imaginária de um complexo . Estas funções realizam
simplificações simbólicas.
> ln(Pi-sqrt(10))+sqrt(cos(2));
> Re(%),Im(%);
As funções comjugate , abs e argument retornam o conjugado, módulo e argumento principal de
um complexo, respectivamente :
> conjugate(2+3*I),conjugate(exp(3*I));
> abs(2+3*I),abs(exp(2-3*I)),abs(-1);
> argument(2+3*I),argument(exp(2-3*I)),argument(-1);
A função csgn calcula o sinal do complexo, definindo como, 1 se a parte real é positiva ou se a parte
real é 0 e imaginária positiva ; 0 se o complexo é 0 , e -1 em outros casos. Esta função é utilizada para
aplicar certas regras de simplificação :
> csgn(1-2/3*I),csgn(-1-2/3*I),csgn(0);
A função evalc assume que as variáveis apresentadas em uma expressão são reais :
> Re(a+I*b),abs(a+I*b),conjugate((2+3*I)*x);
> evalc([%]);
Aritmética Modular
Para realizarmos aritmética modular com o Maple, utilizaremos o operador mod .
Exemplo 7 (Aritmética modular)
É possível realizar as operações aritméticas soma, resto e módulo de um produto de um inteiro dado ,
assim como o inverso quando este existir :
> restart;
> 2345 mod 6,3-11 mod 6,24*45 mod 6,1/5 mod 6;
O número 4 não é inversível para o conjunto dos inteiros módulo 6 :
> 1/4 mod 6;
Ao contrário, vimos que , se ele pertencer ao conjunto
primo :
, veremos que existe por 7 ser um número
> 1/4 mod 7;
O inconveniente da aritmética modular, tal como ela é implementada no Maple, é a necessidade de
utilizarmos o operador mod em cada operação. Não é possível para o Maple realizar todos os cálculos
subsequentes módulo a um inteiro fixo.
Download