|
Cálculos com números irracionais
1/(2^(1/2) + 3^(1/2));
1
(%o15) -----------------
sqrt(3) + sqrt(2)
Isso é um número no campo Q[sqrt(2), sqrt(3)]. Esse número tem representação na forma
a + b*sqrt(2) + c*sqrt(3) + d*sqrt(2)*sqrt(3)
ev (ratdisrep(rat(%)), algebraic);
E recebemos esse resultado:
sqrt(3) - sqrt(2)
Aqui está um exemplo mais complicado que calcula em Q[sqrt(2), 3^(1/3)]:
ir2: 2^(1/2) + 3^(1/3);
1/3
(%o20) 3 + sqrt(2)
1/ir2;
1
(%o26) --------------
1/3
3 + sqrt(2)
ev (ratdisrep(rat(%)), algebraic);
2/3 1/3
(%o27) (3 - 2 sqrt(2)) 3 + (4 - 3 sqrt(2)) 3 - 4 sqrt(2) + 6
%*ir2;
1/3 2/3 1/3
(%o28) (3 + sqrt(2)) ((3 - 2 sqrt(2)) 3 + (4 - 3 sqrt(2)) 3 - 4 sqrt(2) + 6)
expand(%);
1
O terceiro exemplo é mesmo mais complicado. Usamos uma raíz aninhada para extender o campo Q:
r: 33^(1/2)*3;
3 sqrt(33)
Com essa raíz, definimos duas terceiras raízes:
r1: (17 - r)^(1/3);
1/3
(%o2) (17 - 3 sqrt(33))
r2: (17 + r)^(1/3);
1/3
(%o3) (3 sqrt(33) + 17)
Com essas raízes podemos agora escrever o número que queremos inverter:
rn: r1+r2;
1/3 1/3
(%o8) (3 sqrt(33) + 17) + (17 - 3 sqrt(33))
O recíproco é:
1/rn;
1
(%o9) -------------------------------------------
1/3 1/3
(3 sqrt(33) + 17) + (17 - 3 sqrt(33))
ev (ratdisrep(rat(%)), algebraic);
Obtemos:
2/3 1/3 1/3
(%o10)((3 sqrt(33) + 17) - (17 - 3 sqrt(33)) (3 sqrt(33) + 17)
2/3
+ (17 - 3 sqrt(33)) )/34
Esse produto é simplificado com rootscontract:
rootscontract(%);
2/3 2/3
(3 sqrt(33) + 17) + (17 - 3 sqrt(33)) + 2
(%o11) -----------------------------------------------
34
Que é o recíproco procurado na representação desejada.
Multiplicação com um rn dado:
%*rn;
1/3 1/3 2/3 2/3
((3 sqrt(33) + 17) + (17 - 3 sqrt(33)) ) ((3 sqrt(33) + 17) + (17 - 3 sqrt(33)) + 2)
(%o12) -----------------------------------------------------------------------------------------------
34
Para continuar nosso cálculo, expandimos a linha anterior:
expand(%);
1/3 2/3 2/3 1/3 1/3
(17 - 3 sqrt(33)) (3 sqrt(33) + 17) (17 - 3 sqrt(33)) (3 sqrt(33) + 17) (3 sqrt(33) + 17)
(%o22)----------------------------------------- + ----------------------------------------- + --------------------
34 34 17
1/3
(17 - 3 sqrt(33))
+ -------------------- + 1
17
O produto das raízes é removido com rootscontract:
rootscontract(%);
1/3 1/3 1/3 1/3
(24 sqrt(33) - 136) (3 sqrt(33) + 17) (17 - 3 sqrt(33)) (- 24 sqrt(33) - 136)
(%o24) ---------------------- + -------------------- + -------------------- + ------------------------ + 1
34 17 17 34
17
Para simplificar isso, passamos para a forma canônica com a opção radexpand:all. Essa opção transforma (24*SQRT(33) - 136) em 2*(3*SQRT(33) - 17).
radcan(%), radexpand:all;
1
Isso é conveniente paraa definir uma função que calcula o recíproco e executa todas as simplificações desejadas:
inv(x) := block([r:1/x], rootscontract(ev (ratdisrep(rat(r)), algebraic)));
Podemos agora escrever:
inv(r1 + r2);
para obter:
2/3 2/3
(3 sqrt(33) + 17) + (17 - 3 sqrt(33)) + 2
(%o5) -----------------------------------------------
34
|