Manipula\347\343o de Express\365esSimplifyEste comando tenta simplificar uma express\343o matem\341tica dada aplicando v\341rias regras de transforma\347\343o. Por ser um comando geral de simplifica\347\343o, a sua utiliza\347\343o \351 sempre a primeira tentativa em tornar a express\343o mais simples. Pode ser que n\343o fa\347a exatamente a mudan\347a desejada pelo usu\341rio e neste caso outros comandos dever\343o ser tentados.Express\365es contendo trigonometria, pot\352ncia e logar\355tmos tamb\351m podem ser simplificadas com suas respectivas propiedades de manipula\347\343o.sin(theta)^2+cos(theta)^2=simplify(sin(theta)^2+cos(theta)^2);exp(a*ln(b))=simplify(exp(a*ln(b)));Enquanto estes exemplos fornecem uma boa impress\343o da funcionalidade do simplify, n\343o \351 dif\355cil achar aqueles em que a express\343o fica menos simples ou que n\343o se altera.(x-1)^10+1=simplify((x-1)^10+1);(x-2)*(x+2)*(x^2+4)=simplify((x-2)*(x+2)*(x^2+4));Para express\365es na forma NiMpJSJhRyUiYkc= simplify executa as simplifica\347\365es que s\343o matematicamente permitidas para quaisquer valores poss\355veis para a e b. Outras simplifica\347\365es que, por exemplo, s\363 podem ser realizadas para a > 0, s\343o obtidas com a op\347\343o symbolic ou assumindo propriedades com o comando assume.simplify( sqrt(Pi^2*n^2) )=simplify( sqrt(Pi^2*n^2) ,symbolic);assume(n>=0);simplify(sqrt(Pi^2*n^2));simplify( (a*b)^c )=simplify( (a*b)^c ,symbolic);Se uma ou mais equa\347\365es s\343o fornecidas como par\342metro do simplify, o Maple usa estas informa\347\365es como v\355nculos adicionais para simplificar as express\365es. Estes v\355culos podem ser passados como um conjunto, mesmo que tenha apenas um elemento. O background matem\341tico para esta simplifica\347\343o \351 representado pelas bases de Gr\366bner. Pense como seria trabalhoso realizar a simplifica\347\343o da express\343oexpr:=a^4+b^4+c^4;utilizando os seguintes v\355nculos:eq1:=a+b+c=3;eq2:=a^2+b^2+c^2=9;eq3:=a^3+b^3+c^3=24;O Maple encontra solu\347\365es n\343o triviais de primeira (e em pouco tempo):simplify(expr,{eq1,eq2,eq3});Expand e NormalO comando expand abre os par\352nteses contidos na express\343o realizando as propriedades distributivas.restart;x*(x-a)^2*(x-b)^3;expand(%);Para fun\347\365es racionais, s\363 o numerador \351 alterado.f:=(x-a)^2/(x+b)^3:f=expand(f);Para que a expans\343o do denominador tamb\351m seja feita devemos acess\341-lo atrav\351s do comando denom e process\341-lo separado do numerador que \351 realizado com o comando numer. Esta mesma simplifica\347\343o pode ser tamb\351m realizada pelo normal com a op\347\343o expanded.normal(f,expanded)=expand(numer(f))/expand(denom(f));FactorO comando factor executa o processo inverso do expand tentando converter as v\341rias parcelas de uma soma em um conjunto de produtosx*(x-2*b)^2*(x+a);expand(%);factor(%);Neste comando a fatoriza\347\343o \351 feita tanto para o numerador como para o denominador de fun\347\365es racionais.factor((x^2+x-6)/(x^2-1));CombineO combine representa outro comando que executa o processo inverso do expand. Ele tem a finalidade de agrupar fun\347\365es mais gen\351ricas. x^(a+b);expand(%);combine(%,power);Pode combinar v\341rias ra\355zes em uma s\363.sqrt(3)*sqrt(5)=combine(sqrt(3)*sqrt(5));ConvertO comando convert \351 usado para converter express\365es matem\341ticas em diferentes nota\347\365es. Estas nota\347\365es s\343o passadas com argumento para o comando que podem ser: exp, expln, expsincos, ln, sincos, tan, trig, radical, RootOf, factorial, GAMMA entre outros. sinh(x)=convert(sinh(x),exp);sin(2*x)=convert(sin(2*x),tan);arctan(x)=convert(arctan(x),ln);n!=convert(n!,GAMMA);binomial(n,k)=convert(binomial(n,k),factorial);Sort e CollectO uso destes dois comandos se torna importante quando as express\365es s\343o grandes ou quando possuem muitas vari\341veis. O comando sort reorganiza a express\343o ordenando os termos de acordo com a pot\352ncia.f:=expand((a*x^2*y+b*y)^2+(x-2*y+c*y^2)^2+x^3+x^4*y^2);sort(f);Sem nenhum par\342metro adicional, este comando ordena os termos de acordo com a soma das pot\352ncias das vari\341veis de cada parcela. Normalmente a ordena\347\343o \351 feita em rela\347\343o a uma determinada vari\341vel, mas tamb\351m \351 poss\355vel ordenar para duas.sort(f,x);sort(f,[x,y]);O comando collect possui uma certa afinidade com o comando sort. Ele combina termos que possuem uma vari\341vel em comum colocando-a em evid\352ncia.collect(f,x);Pode-se escpecificar tamb\351m duas vari\341veis para este comando. O crit\351rio de associa\347\343o fica sendo o de colocar em evid\352ncia em rela\347\343o \340 primeira vari\341vel e para os termos resultantes \351 que ser\341 colocada em evid\352ncia a segunda vari\341vel. collect(f,[x,y]);collect(f,[y,x]);N\372merosisprime(153);prevprime(153);nextprime(153);with(numtheory):ifactor(389687148183148898309040626433);factorset(389687148183148898309040626433);divisors(389687148183148898309040626433);igcdex(153,654,'b','y');b;y;mlog(1438,256,8383);index(1438,256,8383);phi(256);phi(9);phi(3);phi(12);phi(3);phi(4);phi(27);Grupo da Unidades groupfor i from 1 to 27 do
if (igcd(i,27)=1) then printf("%d, ",i); fi:
od:Exemplos - RSArestart;with(StringTools):alfabeto:=cat(" ",Iota("A".."Z"));nextprime(50);nextprime(100);pq:=53*101;phi:=(53-1)*(101-1);a:=111;igcdex(a,phi,'b','y');b:=b mod phi;a*b mod phi;msg:="LNCC";map(x->Search(x,alfabeto)-1,Explode(msg));LN:=1214;CC:=0303;b1:=(LN &^b ) mod pq;b2:=(CC &^b ) mod pq;b1 &^ a mod pq;b2 &^ a mod pq;Outro exemplo:pq:=79*151;phi:=(79-1)*(151-1);a:=473;igcdex(a,phi,'b','y');b:=b mod phi;y;a*b mod phi;(LN &^a ) &^ b mod pq;(CC ^ a ) ^ b mod pq;b1:=(LN^b) mod pq;b2:=(CC^b) mod pq;b1^a mod pq;b2^a mod pq;map(x->alfabeto[x+1],[12,14,03,03]);Implode(%);Um exemplo mais elaborado:restart;with(StringTools):alfabeto:=cat(" ",Iota("A".."Z"));p:=nextprime(61234);q:=nextprime(103342);pq:=p*q;ceil(log[10](pq));phi:=(p-1)*(q-1);a:=111;igcdex(a,phi,'b','y');b:=b mod phi;a*b mod phi;msg:="ATACAR DE MANHA";msg:=map(x->Search(x,alfabeto)-1,Explode(msg));msg[1..5];c1:=( 120010301&^b ) mod pq;msg[6..10];c2:=( 1800040500&^b ) mod pq;msg[11..15];c3:=( 1301140801 &^b ) mod pq;Transmite o criptograma NiM2JCZJIkNHNiI2IyIiIiZGJTYjIiIj e NiMmSSJDRzYiNiMiIiQ=c1 &^ a mod pq;c2 &^ a mod pq;c3 &^ a mod pq;msg:=[1,20,1,3,1, 18,0,4,5,0, 13,1,14,8,1];map(x->alfabeto[x+1],msg);Implode(%);Exerc\355cios1. Cifre e decifre a frase: QED DO LATIM QUOD ERAT DEMONSTRANDUM usando o RSA2. Cifre e decifre a frase: TRUTH IS HARD TO FIND AND HARDER TO OBSCURE usando o RSA3. Com o alfabeto usual e a chave "STATUS" cifre e decifre "\311 COMPRAR UMA COISA QUE VOC\312 N\303O QUER, COM UM DINHEIRO QUE VOC\312 N\303O TEM, PARA MOSTRAR PRA GENTE QUE VOC\312 N\303O GOSTA, UMA PESSOA QUE VOC\312 N\303O \311." usando o RSATendo acesso a NiM+SSNwcUc2IiIrKEhPL0wn e a chave p\372blica NiM+SSJiRzYiIis+em42OA== decifre o criptograma NiM+SSNjMUc2IiIrMFFUPFk=.