• Nenhum resultado encontrado

Exame 13 de Janeiro de Resolução. f[n Integer/;n>=2]:= Apply[Nor,Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]]

N/A
N/A
Protected

Academic year: 2022

Share "Exame 13 de Janeiro de Resolução. f[n Integer/;n>=2]:= Apply[Nor,Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]]"

Copied!
6
0
0

Texto

(1)

Unidade de Ensino de Matem´atica Aplicada e An´alise Num´erica Departamento de Matem´atica/Instituto Superior T´ecnico

Matem´atica Experimental (LMAC) – 1o Semestre de 2019/2020

Exame – 13 de Janeiro de 2020 - Resolu¸c˜ao

Apresente todos os c´alculos e justifique convenientemente todas as suas respostas.

1. Considere a seguinte fun¸c˜ao Mathematica f[n Integer/;n>=2]:=

Apply[Nor,Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]]

Qual ´e o resultado da instru¸c˜ao {f[97],f[113],f[133]}? [1.5]

Resolu¸c˜ao: O resultado da execu¸c˜ao {f[97],f[113],f[133]} ´e a lista {True,True,False}. O co- mando Range[2,Floor[Sqrt[n]]]gera uma lista de inteiros de 2 ab√

nc. A instru¸c˜ao Select[Range[2,Floor[Sqrt[n]]],PrimeQ]

selecciona dessa lista os n´umeros primos. O comando

Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]

testa, para cada um dos elementos da lista de primos {2,3, . . . ,b√

nc}, se ele divide ne , se dividir, devolve True, caso contr´ario devolveFalse. Finalmente, a instru¸c˜ao

Apply[Nor,Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]]

devolve Truese todos os elementos da lista booleana

Divisible[n,Select[Range[2,Floor[Sqrt[n]]],PrimeQ]]

tˆem o valor True e False se pelo menos um deles ´e False. Por outras palavras devolve True se o naturaln´e divis´ıvel por um dos primos≤√

neFalseno caso contr´ario. Isto quer dizer que devolve True se o naturalnfor primo eFalsese ele ´e composto. Quando aplicarmos a fun¸c˜ao faos naturais 97,113e 133, o resultado ´e True,Truee Falsevisto que97,113s˜ao primos e133´e composto. Por exemplo

Range[2,Floor[Sqrt[133]]]→ {2,3,4,5,6,7,8,9,10,11}

e 133=7·19ou seja133´e divis´ıvel por7.

(2)

2. Considere as seguintes instru¸c˜oesMathematica

code[m Integer/;m>0]:=If[EvenQ[m],code[m/2],code[3 m+1]];

code[1]=0;

Se executar code[10] que resultado espera obter? Se n˜ao definir code[1]=0 o que acontece quando

executar code[10]? [2.0]

Resolu¸c˜ao: O c´odigo code define a itera¸c˜ao de Collatz atrav´es da programa¸c˜ao recursiva. O code recebe um inteiro positivo m e divide-o por 2 se ele for par e multiplica por 3 e soma a 1 se ele for

´ımpar. Sem o comandocode[1]=0, qualquer que fossem, o programa entraria no ciclo{4,2,1}e n˜ao parava. Mais precisamente, devolvia a mensagem de erro:

$IterationLimit::itlim:Iteration limit of 4096 exceeded.

Com a instru¸c˜ao code[1]=0, o programa para e devolve 0quando chega a 1. Portanto o resultado da execu¸c˜ao code[10]´e 0.

3. Considere a lista fermatdefinida por

fermat=Map[Function[n,{n,2ˆn-1}],Range[12]]

a) Que tipo de objetos s˜ao os elementos da listafermat? [1.0]

Resolu¸c˜ao: Os12elementos da listafermats˜ao pares de inteiros da forma {n,2ˆn-1}em quenvaria entre 1e 12.

b) Defina os pseudoprimos de Fermat na basea∈N, a6= 1,e construa uma express˜ao Mathematica que selecciona da lista fermatos pseudoprimos de Fermat na base 2. A lista fermatcont´em alguns

pseudoprimos de Fermat na base 2? Quais? [1.5]

Resolu¸c˜ao: Os pseudoprimos de Fermat na base a ∈ N, a 6= 1, s˜ao n´umeros compostos n tais que an−1 ≡ 1 (mod n), i.e. n´umeros compostos que satisfazem a congruˆencia de Fermat. Os elementos 2ˆn-1 na lista fermat s˜ao n´umeros de Mersenne quando n ´e primo. Sabe-se que os n´umeros de Mersenne ou s˜ao primos de Mersenne ou pseudoprimos de Fermat na base 2. Existem 5 n´umeros de Mersenne Mn na listafermat, nomeadamente

M2 = 3, M3 = 7, M5 = 31, M7= 127, M11= 2047.

Desses cinco apenas o M11´e composto, ou seja, ´e um pseudoprimo de Fermat na base 2. A instru¸c˜ao Mathematicaque selecciona da lista fermatos pseudoprimos de Fermat na base 2 pode ser

Flatten[Drop[Select[fermat,Function[x,PrimeQ[x[[1]]]==

True && PrimeQ[x[[2]]]==False]],None,{1}]]

ou simplesmente

Select[fermat,Function[x,PrimeQ[x[[1]]]==True && PrimeQ[x[[2]]]==False]]

que devolve uma lista de elementos{n,2ˆn-1}em que2ˆn-1´e um pseudoprimo de Fermat na base 2.

(3)

4. Sejar = (1 +√

5)/2. Prove que

r= (1 + (1 + (1 +. . .)1/2)1/2)1/2. [2.0]

Resolu¸c˜ao: Note-se primeiro que

r2= (1 + (1 + (1 +. . .)1/2)1/2= 1 +r . Portanto

r2−r−1 = 0 ⇐⇒ r= 1±√ 5

2 ,

e, comor >0, conclui-se quer = 1+

5 2 .

5. Defina uma fun¸c˜ao Mathematicaque receba um naturalne devolva todos os naturaisk, inferiores a n, tais que k ´e um n´umero triangular ek+ 1 ´e um quadrado perfeito. Consegue determinar algum

desses naturais k? [2.0]

Resolu¸c˜ao: Os n´umeros triangulares s˜ao n´umeros inteiros da forma m(m+1)2 , para algum natural m.

Podemos assim definir, com o comando Table, uma lista de n´umeros triangulares e seleccionar dessa lista os quadrados perfeitos com a instru¸c˜aoIntegerQ[Sqrt[x]]que devolveTrue se√

xfor inteiro.

A fun¸c˜aoMathematicafica ent˜ao f[n Integer/;n>0] :=

Select[Table[j∗(j+1)/2,{j,1,n}],Function[x,IntegerQ[Sqrt[x+1]] && x<n]]

onde a condi¸c˜ao x<ngarante que a fun¸c˜aofdevolva os naturaiskinferiores anvisto que a instru¸c˜ao Table[j∗(j+1)/2,{j,1,n}]gera uma lista de n´umeros triangulares at´e n(n+1)2 .

E f´´ acil ver que o n´umero k = 3 ´e triangular e k+ 1 = 4 ´e um quadrado perfeito. Os pr´oximos exemplos s˜ao k= 15 e k= 120.

6. Escreva um programa Mathematica que receba dois naturaisae be devolva a fra¸c˜ao cont´ınua sim- ples finita [a0, a1, . . . , an] do racional a/b. Deve validar convenientemente os dados e determinar os elementos da frac¸c˜ao cont´ınua pelo algoritmo de Euclides. [2.0]

Resolu¸c˜ao: Os elementos aj da fra¸c˜ao cont´ınua [a0, a1, . . . , an] do racional a/b correspondem aos quocientes no algoritmo de Euclides, ver os slides Aulas 11-15. O c´odigoMathematicafica assim

(4)

fcEuclides[a_Integer, b_Integer /;b >0]:= Module[{r0=a,r1=b,r2=Mod[a,b],

qlist= {Quotient[a,b]}}, While[r20,

r0=r1;

r1=r2;

r2=Mod[r0,r1];

AppendTo[qlist, Quotient[r0, r1]]]; qlist];

7. a)Determine a fra¸c˜ao cont´ınua dex=√

37. [1.5]

Resolu¸c˜ao: Temos

37 = 6 + (√

37−6) = 6 + 1

√37 + 6 ,

37 + 6 = 12 + (√

37−6) = 12 + 1

√37 + 6 ,

⇒ √

37 = [6; 12 ], i.e. a fra¸c˜ao cont´ınua de√

37 ´e infinita peri´odica da forma √

37 = [6; 12,12, . . .].

b) Determine todos os pares de naturais{p, q}, para 1≤q ≤1500,tais que

q√

37−p <

n√

37−m

, ∀m, n∈N, m

n 6= p

q , n≤q . [1.0]

Resolu¸c˜ao: Note-se que um n´umero fraccion´ario pq diz-se melhor aproxima¸c˜ao racional p/q de um n´umero real x se para todos os racionais mn, tais que mn 6= pq e 1≤n≤q, temos

|q x−p|<|n x−m|.

Portanto, os pares de naturais {p, q} correspondem a alguns dos melhores aproxima¸c˜oes racionais de

√37. Por outro lado, um n´umero fraccion´ario ´e melhor aproxima¸c˜ao racional de um n´umero real x se e s´o se ele for convergente da fra¸c˜ao cont´ınua dex. Os primeiros convergentes de √

37 s˜ao c0 = 6, c1= 6 + 1

12 = 73

12, c2 = 6 + 1

12 + 121 = 882

145, c3= 6 + 1 12 + 1

12+121

= 10657 1752 . Assim os pares de naturais {p, q}, com 1≤q ≤1500,tais que

q√

37−p <

n√

37−m

, ∀m, n∈N, m

n 6= p

q , n≤q , s˜ao {6,1},{73,12} e{882,145}.

(5)

8. Considere a seguinte a fun¸c˜ao Mathematica

f[a Integer,b Integer]/;a∗b6=0:=Minimize[a∗x+b∗y,a∗x+b∗y>0,{x,y},Integers]

Se executarTable[Map[f,{{13,65},{13,7},{-2,-8}}][[k,1]],{k,1,3}]que resultado espera ob-

ter? [1.5]

(O Help do sistemaMathematica cont´em a seguinte informa¸c˜ao: Minimize[{f,cons},{x,y,...},dom]}

minimizes f subject to the constraints cons over the domain dom and returns a list of the form {fmin,{x→xmin,y →ymin, ... }} .

Resolu¸c˜ao: Dados dois inteiros n˜ao nulos a,b∈ Z, o valor m´ınimo positivo da express˜ao ax+by, x,y∈Z, corresponde, pelo Lema de B´ezout, ao m´aximo divisor comum dea eb. Portanto, a fun¸c˜ao f recebe dois inteiros n˜ao nulos e devolve uma lista em que o primeiro elemento fmin ´e o m´aximo divisor comum de aebe o segundo elemento ´e um par de elementos da forma{x→xmin,y →ymin} em que os inteiros xmin e ymin s˜ao tais que

mdc(a,b) = min x,yZ

ax+by=axmin+bymin.

Portanto ao executar a instru¸c˜ao Table[Map[f,{{13,65},{13,7},{-2,-8}}][[k,1]],{k,1,3}] , obt´em-se uma lista com os m´aximos divisores comuns de {13,65},{13,7} e{-2,-8}ou seja, a lista {13,1,2}. Note-se que ao executar o comando Table[. . .[[k,1]],{k,1,3}], extrai-se, para cadak, apenas o primeiro elemento da lista {fmin,{x→xmin,y →ymin}}.

9. A representa¸c˜ao do n´umero fraccion´ario 1/17 na base 2 e finita ou infinita? Caso seja infinita,

determine a periodicidade da representa¸c˜ao. [1.5]

Resolu¸c˜ao: A representa¸c˜ao na base 2 do n´umero fraccion´ario 1/17 ´e infinita peri´odica visto que mdc(2,17)=1. Temos ainda

21 ≡2 (mod 17), 22≡4 (mod 17), 23 ≡8 (mod 17), 24 ≡16 (mod 17) 25 = 32≡15 (mod 17), 26 = 64≡13 (mod 17), 27 = 128≡9 (mod 17), 28= 256≡1 (mod 17). Portanto a ordem de 2 m´odulo 17 e, por conseguinte, o per´ıodo da representa¸c˜ao de 1/17 na base 2,

´

e igual a 8.

10. Considere o seguinte c´odigo Mathematica

code[f ,a ,b ,nmax Integer]/;(f[a]∗f[b]<0 && nmax>1):=

Module[{i=1,x0,a0=N[Min[a,b]],b0=N[Max[a,b]]}, x0=(a0+b0)/2;

While[i <= nmax && f[x0]6=0,

If[f[a0]∗f[x0]<0,b0=x0,a0=x0];i++;x0=(a0+b0)/2];

x0]

(6)

a) Se executar a instru¸c˜ao

code[Function[x,Exp[x-2]-xˆ2],0,1,4]

que resultado espera obter? [1.5]

Resolu¸c˜ao: O c´odigocodecorresponde `a implementa¸c˜ao (em linguagemMathematica) do m´etodo da bisec¸c˜ao, ver os slidesAula 20. O programacoderecebe a fun¸c˜aof, cujo zero se pretende aproximar pelo m´etodo da bisec¸c˜ao, os extremos a e b de um intervalo em que a fun¸c˜ao f muda de sinal (a condi¸c˜ao f[a]∗f[b]<0), e o n´umero m´aximo de itera¸c˜oesnmax. O programa come¸ca por determinar o intervalo [a0,b0] tal que a0<b0 (note-se que os valores s˜ao num´ericos a partir desta altura) e calcula o ponto m´edio x0 desse intervalo. Depois, no cicloWhile, o programa passa para o intervalo [a0,x0] ([x0,b0]) sefmudar de sinal no intervalo[a0,x0] ([x0,b0]) e assim sucessivamente at´e que o n´umero m´aximo de itera¸c˜oes for atingido ouf[x0]=0. O programa devolve a itera¸c˜ao da ordem nmax), visto quex0=(a0+b0)/2.

Quando executarmos

code[Function[x,Exp[x-2]-xˆ2],0,1,4]

estamos a aproximar o zero da fun¸c˜aof(x) =ex−2−x2no intervalo [0,1]. ´E importante verificar que f(0) =e−2 = 0.135335>0, f(1) =e−1−1 =−0.632121<0,

ou seja f tem pelo menos um zero em [0,1]. Desenhando o gr´afico da fun¸c˜ao f, vˆe-se que ela possui trˆes zeros,z1 ∈[−1,0], z2∈[0,1] ez3∈[5,6], i.e. apenas um zero em [0,1]. O programacodeefetua 4 itera¸c˜oes no cicloWhile, depois de primeiro ter calculado x0=0.5. Obtemos assim os valores

x1=0.25, x2=0.375, x3=0.4375, x4=0.46875. Portanto o resultado da execu¸c˜ao ´e 0.46875.

b)Modifique o programacode de modo a que ele receba, para al´em def,a,benmax, um valor >0 e devolva uma aproxima¸c˜ao da raiz da equa¸c˜ao f(x) = 0 com um erro inferior a . [1.0]

Resolu¸c˜ao: A modifica¸c˜ao pode ser

codigo1[f_, a_, b_,nmax_Integer, eps_] /;(f[a] *f[b] <0 &&nmax>1):= Module[{i=1, x0,a0=N[Min[a, b]],b0=N[Max[a, b]]},

x0= (a0+b0) /2;

While[inmax&&f[x0]0 && Abs[a0-b0] /2>eps,

If[f[a0] *f[x0] <0, b0=x0,a0=x0];i++;x0= (a0+b0) /2]; {x0,i}]

Note-se que, se z for o zero def que estamos a aproximar, temos para o erro da iterada xk

|z−xk| ≤ bk−ak

2 .

em quexk= ak+b2 k. Embora n˜ao tenha sido pedido, o programacodigo1devolve tamb´em o n´umero de itera¸c˜oesipara que o utilizador possa averiguar qual dos crit´erios de paragem,i>nmaxou bk−a2 k ≤, foi atingido primeiro.

Referências

Documentos relacionados

PARTE III A TEMPESTIVIDADE DO PROCESSO SOB O ÂNGULO NORMATIVO E SUA DIMENSÃO CONFLITUAL Capítulo 4 A TRÍADE CONSTITUCIONAL DA TEMPESTIVIDADE (EM SENTIDO AMPLO): CELERIDADE,

pesquisa com idosos institucionalizados, demonstrou percentual 58,8% de baixo peso segundo o IMC, ao realizar uma análise bivariada, constatou relação positiva entre

Entrevistado: Jilmar Tatto: Concordo plenamente, de tudo isso que falei e acho que o seguinte, aqui coloco claramente a base de dados é fundamental, acesso a base de dados do Estado

O método escolhido para a realização deste estudo foi à pesquisa qualitativa, de cunho exploratório, que foi realizada com mulheres que residem na comunidade de São Jorge,

Os estudos da “Hipóteses do custo da reprodução” na natureza (Cram et al. 2015) são escassos na atualidade e uma das razões é a dificuldade de trabalho com animais em campo e a

a) Para as especialidades de acesso direto (Anestesiologia, Cirurgia Geral, Clínica Médica, Neurologia, Obstetrícia e Ginecologia, Ortopedia e Pediatria): Prova

Quando da apresentação do formulário de referência por conta do pedido de registro de distribuição pública de valores mobiliários, as informações devem se referir aos 3

20 Apesar dos problemas de representação contidos em alguns mapas impressos, principalmente no que tange a ausência ou erro dos principais elementos do mapa