Programação Imperativa

Documentos relacionados
Exercícios de Teoria da Computação Computabilidade

Exercícios de Teoria da Computação Computabilidade

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio

Matemática Computacional

UNIVERSIDADE FEDERAL DE PERNAMBUCO Lista de Exercícios / Cálculo Numérico 1ª Unidade

Matemática Computacional - 2 o ano LEMat e MEQ

Matemática Computacional - Exercícios

ÁLGEBRA LINEAR A FICHA 6. Por definição do determinante de uma matriz 3 3, tem-se det A = 7.

Matemática Computacional - Exercícios

A. Equações não lineares

Inteligência Artificial

(LEAmb, LEMat, LQ, MEBiol, MEQ) Exame 2 28 de Janeiro de 2008, 9h00

Programação Universidade da Beira Interior Departamento de Informática 2007/08

5 a Lista de Exercícios de Introdução à Álgebra Linear IMPA - Verão Encontre os autovalores, os autovetores e a exponencial e At para

Testes Formativos de Computação Numérica e Simbólica

Sexta Lista: Geração de Números Pseudo-Aleatórios e Método de Monte Carlo

Cálculo Numérico BCC760 Raízes de equações algébricas e transcendentes

Matemática Computacional - 2 o ano LEMat e MEQ

SME Cálculo Numérico. Lista de Exercícios: Gabarito

UNIVERSIDADE FEDERAL DO ABC. 1 Existência e unicidade de zeros; Métodos da bissecção e falsa posição

INSTITUTO SUPERIOR TÉCNICO Mestrado Integrado em Engenharia Física Tecnológica Ano Lectivo: 2007/2008 Semestre: 1 o

Cálculo Numérico BCC760

Matrizes material teórico

UNIVERSIDADE FEDERAL DE PERNAMBUCO Resolução Lista / Cálculo Numérico 1ª Unidade

Exercícios de MATEMÁTICA COMPUTACIONAL. 1 0 Semestre de 2009/2010 Resolução Numérica de Equações Não-Lineares

Raízes de Equações métodos delimitados. qual o problema? equações não lineares/raízes

Nota importante: U é a matriz condensada obtida no processo de condensação da matriz

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

Programação imperativa

Resolução Numérica de Equações (Parte II)

Actividade Formativa 1

Resolução de Sistemas Lineares. Ana Paula

SME0300 Cálculo Numérico Aula 4

Capítulo 4 - Equações Não-Lineares

Integral Definida. a b x. a=x 0 c 1 x 1 c 2 x 2. x n-1 c n x n =b x

Marina Andretta/Franklina Toledo. 18 de outubro de Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires.

Uma equação linear com n variáveis tem a seguinte forma:

UNIVERSIDADE FEDERAL DO ABC

Artur M. C. Brito da Cruz. Escola Superior de Tecnologia Instituto Politécnico de Setúbal 2015/2016 1

Exercícios de ANÁLISE E SIMULAÇÃO NUMÉRICA

Cálculo Numérico. Resumo e Exercícios P1

Ficha de trabalho Decomposição e resolução de equações e inequações polinomiais

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Aula 5 - Produto Vetorial

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição

TE231 Capitulo 2 Zeros de Funções; Prof. Mateus Duarte Teixeira

Matemática Computacional. Exercícios. Teoria dos erros

Definição: Uma função de uma variável x é uma função polinomial complexa se pudermos escrevê-la na forma n

Determinação numérica de autovalores e autovetores: Método das Potências Inversas

Módulo Tópicos Adicionais. Recorrências

Métodos Numéricos Professor Tenani - 3 / 42

Neste capítulo estamos interessados em resolver numericamente a equação

Instituto Superior Técnico Departamento de Matemática Última actualização: 18/Nov/2003 ÁLGEBRA LINEAR A

Capítulo 6 - Equações Não-Lineares

ÁLGEBRA LINEAR I - MAT0032

C alculo Num erico Ra ızes de Equa c oes Ana Paula Ana Paula C alculo Num erico

Cálculo Numérico. Santos Alberto Enriquez-Remigio FAMAT-UFU 2015

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Equação algébrica Equação polinomial ou algébrica é toda equação na forma anxn + an 1 xn 1 + an 2 xn a 2 x 2 + a 1 x + a 0, sendo x

Matemática Computacional Ficha 5 (Capítulo 5) 1. Revisão matéria/formulário

Equação do Segundo Grau

Semana 4 Zeros das Funções

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

Universidade de São Paulo

Matemática A - 10 o Ano

f(1) = 6 < 0, f(2) = 1 < 0, f(3) = 16 > 0 x [2, 3].

MINISTÉRlO DA EDUCACAO UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CAMPUS PATO BRANCO

Cálculo Diferencial e Integral 2 Formas Quadráticas

Valores e vectores próprios

A = Utilizando ponto flutuante com 2 algarismos significativos, 2 = 0, x (0)

- Métodos numéricos. - Métodos analíticos versus métodos numéricos. - Necessidade de se usar métodos numéricos. - Métodos iterativos

CEM Centro De Estudos Matemáticos

Álgebra Linear. Curso: Engenharia Electrotécnica e de Computadores 1 ō ano/1 ō S 2006/07

Introdução aos Métodos Numéricos

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

Aula 2: Algoritmos: Intuição

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

Fundamentos de Programação

Os Fantásticos. Números Primos

INSTITUTO SUPERIOR TÉCNICO Licenciatura em Engenharia Física Tecnológica Licenciatura em Engenharia e Gestão Industrial Ano Lectivo: 2002/

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006)

Métodos Numéricos Zeros Posição Falsa e Ponto Fixo. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

TP062-Métodos Numéricos para Engenharia de Produção Zeros: Introdução

Álgebra Linear e Geometria Anaĺıtica. Matrizes e Sistemas de Equações Lineares

Cálculo Numérico. Zeros de funções reais

Comandos de Repetição

Lista de Exercícios de Métodos Numéricos

Lista de Exercícios 1 Cálculo Numérico - Professor Daniel

Sistemas de equações lineares

Matemática- 2008/ Se possível, dê exemplos de: (no caso de não ser possível explique porquê)

Resolução Simulado 16 de maio de 2014 SEMI

Exercícios: Vetores e Matrizes

Determinantes. det A = a 11. Se A = a11 a 12 a 21 a 22. é uma matriz 2 2, então. det A = a 11 a 22 a 12 a 21. Exemplo 1. det 3 4. = 1; det 3 4 = 0.

Exercícios de ANÁLISE E SIMULAÇÃO NUMÉRICA

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

ficha 1 matrizes e sistemas de equações lineares

Métodos Numéricos Zeros: Introdução. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Estatística Aplicada ao Serviço Social

Transcrição:

03.prog.imp.nb 1 Programação Imperativa Nos exercícios que se seguem, as únicas funções primitivas sobre listas que deve utilizar são: First, Last, Rest, Append, Prepend, Length, [[.]] e{}. Cada exercício sobre listas pode (e deve) ser resolvido de várias maneiras: - recorrendo à função Length para determinar a guarda do While; - utilizando variável de progresso em lista; -... Defina imperativamente em Mathematica as funções abaixo descritas. somanat: recebe um número natural n e devolve a soma de todos os naturais até n. somanat@6d 21 quadrados: recebe um número natural n e devolve a lista dos quadrados perfeitos até n. quadrados@6d 81, 4, 9, 16, 25, 36< quadradosinv: recebe um número natural n e devolve a lista dos quadrados perfeitos até n, por ordem decrescente. quadradosinv@6d 836,25,16,9,4,1< prodlista: recebe uma lista de inteiros e devolve o produto dos seus elementos. prodlista@81, 2, 3, 4<D 24 contemprimoq:recebe uma lista de naturais w e devolve sse w contém pelo menos um número primo. contemprimoq@81, 2, 3, 4<D

03.prog.imp.nb 2 contemprimoq@84, 6, 8, 10<D pertenceq: recebe uma lista de inteiros w e um inteiro k e devolve sse k ocorre em w. pertenceq@83, 4, 5, 6, 7, 5<, 8D pertenceq@83, 4, 5, 6, 7, 5<, 7D junta: recebe duas listas e devolve a sua concatenação. junta@81, 2, 3<, 89, 8, 7<D 81, 2, 3, 9, 8, 7< indicespar: recebe uma lista de inteiros w e devolve a lista dos elementos de w em posições pares. indicespar@82, 3, 4, 4, 5<D 83, 4< retirapares: recebe uma lista de inteiros w e devolve a lista dos elementos pares de w. retirapares@82, 3, 4, 4, 5<D 82, 4, 4< retiraneg: recebe uma lista de inteiros w e devolve a lista resultante de retirar todos os números negativos de w. retiraneg@83, 2, 1, 7<D 83, 1< supremo: recebe uma lista de inteiros e devolve o seu supremo. (Note que o supremo do conjunto vazio é -.) supremo@8<d supremo@81, 3, 6, 27<D 6

03.prog.imp.nb 3 posicoesmaximo: recebe uma lista de inteiros e devolve a lista das posições onde ocorre o maior elemento. posicoesmaximo@82, 7, 6, 5, 7<D 82, 5< conta: recebe como argumentos uma lista de inteiros w e um inteiro k e devolve o número de vezes que k ocorre em w. conta@81, 2, 3, 1, 2, 3<, 2D 2 lposicoes: recebe como argumentos uma lista de inteiros w e um inteiro k e devolve a lista das posições em que k ocorre em w. lposicoes@81, 2, 3, 1, 2, 3<, 2D 82, 5< caracteristicaprimos: recebe uma lista de naturais w e devolve uma lista com nas posições onde ocorre em w um número primo e nas outras. caracteristicaprimos@81, 2, 3, 4, 5, 6, 7, 8, 9<D 8,,,,,,,, < apaga1: recebe uma lista w e um número inteiro k e devolve a lista que resulta de se apagar de w a primeira ocorrência de k (caso exista). apaga1@81, 2, 3, 2, 1, 2<, 1D 82, 3, 2, 1, 2< apaga: recebe uma lista w e um número inteiro k e devolve a lista que resulta de se apagar de w todas as ocorrências de k. apaga@81, 2, 3, 2, 1, 2<, 1D 82, 3, 2, 2< seleccao: recebe uma lista e um predicado e devolve a lista dos elementos que verificam esse predicado. seleccao@81, 2, 3, 4, 5, 6<, PrimeQD 82, 3, 5<

03.prog.imp.nb 4 mapeia: recebe uma função f e uma lista w e devolve a lista dos resultados de aplicar f aos elementos de w. mapeia@function@x, 2^xD, 83, 5, 7, 8<D 88, 32, 128, 256< mapeia@function@x, EvenQ@xDD, 83, 5, 7, 8<D 8,,, < primalg: recebe um inteiro k e devolve o primeiro algarismo de k. primalg@2d 2 primalg@6535d 6 invertelista: recebe uma lista e devolve a mesma lista mas invertida. invertelista@81, 2, 3, 4<D 84, 3, 2, 1< ligualq: recebe duas listas e devolve se as listas forem iguais e caso contrário. ligualq@81, 2, 3<, 81, 2, 3<D ligualq@81, 2, 3<, 82, 1, 3<D Os exercícios seguintes são de um nível de dificuldade mais elevado; caso considere necessário, utilize algumas das funções acima definidas. permutacao: recebe duas listas w1 e w2 e devolve se w2 for uma permutação de w1 e caso contrário. permutacao@81, 2, 3<, 82, 1, 3<D permutacao@81, 2, 3<, 81, 2, 2, 3<D

03.prog.imp.nb 5 intercala: recebe duas listas w1 e w2 e devolve a lista resultante de intercalar os elementos de w1 e w2. intercala@83, 2, 1<, 85, 6, 7<D 83, 5, 2, 6, 1, 7< intercala@83, 2, 1<, 84<D 83, 4, 2, 1< intercala@8<, 85, 6, 7<D 85, 6, 7< separamult3e5: recebe uma lista de inteiros w e devolve um par formado por duas listas: a dos múltiplos de 5 que ocorrem em w e a dos múltiplos de 3 que ocorrem em w. separamult3e5@81, 2, 3, 4, 5, 9, 15<D 883, 9, 15<, 85, 15<< potencia: recebe um dígito k (que não zero) e devolve o menor natural n tal que 2^n começa por k. potencia@2d 2 potencia@3d 6 repete: recebe uma lista w e devolve uma lista em que o primeiro elemento de w aparece uma vez, o segundo elemento duas vezes,.... repete@8a, b, c<d 8a, b, b, c, c, c< Ciclos encaixados temprimoq: recebe uma lista de listas de inteiros e devolve sse alguma das suas sublistas tem um número primo. temprimoq@884<, 83<, 81, 4, 6<<D temprimoq@884<, 88<, 81, 4, 6<<D

03.prog.imp.nb 6 prodmatriz: recebe uma matriz e devolve o produto de todos os seus elementos. prodmatriz@883, 2, 1<, 82, 1, 2<<D 24 mediacolunasparesmatriz: recebe uma matriz e devolve a média dos elementos das colunas pares da matriz. mediacolunaspares@881, 2, 3, 6<, 84, 3, 2, 1<, 81, 6, 7, 6<<D 4 indprimos: recebe uma lista de listas de inteiros {w11,w12,...,w1k} e devolve a lista de listas {w21,w22,...,w2k} em que cada w2i contém as posições dos números primos em w1i. indprimos@881, 2, 3, 4, 5<, 82, 4, 3, 5<, 84, 6, 8, 9<, 8<<D 882, 3, 5<, 81, 3, 4<, 8<, 8<< transposta: recebe uma matriz e devolve a sua transposta. transposta@881, 2, 3<, 89, 8, 7<, 85, 7, 9<, 84, 6, 8<<D 881, 9, 5, 4<, 82, 8, 7, 6<, 83, 7, 9, 8<< Problemas Defina uma função produtomatrizes que recebe como argumentos duas matrizes e devolve a sua matriz produto. Verifique que a dimensão das matrizes recebidas é tal que é possivel realizar o seu produto (se não o for, retorne uma mensagem de erro adequada). Sugestão: use um procedimento auxiliar para multiplicar a linha de indice i de uma matriz pela coluna de indice j da outra matriz. produtomatrizes@882, 3<, 88, 7<, 86, 2<<, 884, 5<, 81, 9<<D 8811, 37<, 839, 103<, 826, 48<< Considere o problema de calcular a área por baixo do gráfico duma função f (o integral de f) num intervalo [a,b]. Defina uma função aproximaintegral que receba como argumentos a função f, os extremos do intervalo de integração e um parâmetro n e calcula uma aproximação do integral da função nesse intervalo. A ideia básica consiste em dividir o intervalo [a,b] em n sub-intervalos consecutivos, com n suficientemente grande para se obter a aproximação desejada [a, b] = [x 0, x 1 ]... [x n-1, x n ] e aproximar a função em cada um dos intervalos [x i-1, x i ] por f(x i-1 ).

03.prog.imp.nb 7 400 300 200 100 2.5 3 3.5 4 4.5 Nestas condições, o valor do integral é aproximado por n i=1 Hx i - x i-1 L f Hx i L. Escolhendo todos os intervalos com os mesmo comprimento d = b-a ÅÅÅÅÅÅÅÅ n tem-se que x i = x i-1 + d, ou então, x i = a + id, e chega-se a n i=1 dfha + Hi - 1L dl. ou seja n d i=1 f Ha + Hi - 1L dl g = Function@x, H1 + xl^ 1D; aproximaintegral@g, 0, 1.5, 5D 1.01253 aproximaintegral@g, 0, 1.5, 500000D 0.916292

03.prog.imp.nb 8 Defina uma função bisseccao que calcula uma raíz de uma equação não linear num intervalo [a,b] com aproximação pelo menos e, usando o método da bissecção a seguir descrito. O Método da Bissecção é um método iterativo para encontrar raízes de funções baseado no Teorema do Valor Intermédio. Pretende-se encontrar uma solução da equação f(x)=0, admitindo que f é contínua em [a,b] e que f(a)f(b)<0. Tome-se a 0 = a, b 0 = b, I 0 = @a 0, b 0 D e repita-se iterativamente o seguinte processo. Seja x i o ponto médio do intervalo I i. Uma das três condições seguintes verifica-se: 1) f Ha i L f Hx i L < 0, e existe uma raíz de f em @a i, x i D; 2) f Ha i L f Hx i L > 0, e existe uma raíz de f em @x i, b i D; 3) f Ha i L f Hx i L = 0, e x i é uma raíz de f. No terceiro caso, não é preciso fazer mais nada. Nos outros dois casos, defina-se a i+1 e b i+1 como sendo a i e x i (primeiro caso) ou x i e b i (segundo caso), tome-se I i+1 = @a i+1, b i+1 D e repita-se o processo. Aplicando este procedimento sucessivamente, é calculada uma sequência de intervalos I 0 I 1 I 2... onde a raíz rœi k para todo o k. O procedimento termina quando a amplitude do intervalo for menor do que o erro pretendido e. Note que a amplitude do intervalo se reduz a metade a cada iteração. f = Function@x, E^ x Sin@xDD; bisseccao@f, 0.25, 0.75, 0.000001D O numero de iterações realizadas foi: 18 0.588532 Exercícios de Exame Defina imperativamente as seguintes funções. (Exame 21/01/2002 - Versão A) exame1 que recebendo como argumento uma matriz quadrada de números inteiros calcula a lista dos pares {i,j} tais que a soma da linha i é igual à soma da coluna j. Sugestão: defina uma função auxiliar eqsum tal que eqsum[i,j] seja no caso de a soma da linha i ser igual à soma da coluna j e no caso contrário. exame1@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 882, 1<, 82, 2<<

03.prog.imp.nb 9 (Exame 21/01/2002 - Versão B) exame2 que recebendo como argumento uma matriz quadrada de números inteiros calcula a lista dos números (2^i)*(3^j) tais que o produto da linha i é igual ao produto da coluna j. Sugestão: defina uma função auxiliar eqprod tal que eqprod[i,j] seja se o produto da linha i for igual à soma da coluna j e no caso contrário. exame2@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 812< (Exame 06/02/2002 - Versão A) exame3 que recebendo como argumento uma matriz de números inteiros calcula a lista dos pares {i,x} tais que a soma dos elementos da linha i é igual a x. Sugestão: defina uma função auxiliar sum tal que sum[i] seja a soma da linha i. exame3@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 881, 12<, 82, 10<, 83, 9<< (Exame 06/02/2002 - Versão B) exame4 que recebendo como argumento uma matriz de números inteiros calcula a lista dos pares {j,y} tais que o produto dos elementos da coluna j é igual a y. Sugestão: defina uma função auxiliar prod tal que prod[j] seja o produto da coluna j. exame4@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 881, 30<, 82, 36<, 83, 40<< (Exame 22/01/2003 - Versão A) triangularsuperiorq que recebendo como argumento uma matriz quadrada de números inteiros determina se a matriz é triangular superior (isto é, todos os elementos abaixo da diagonal principal são nulos). triangularsuperiorq@883, 4, 5<, 80, 3, 2<, 80, 0, 4<<D triangularsuperiorq@883, 4, 5<, 80, 3, 2<, 80, 3, 4<<D (Exame 22/01/2003 - Versão B) triangularinferiorq que recebendo como argumento uma matriz quadrada de números inteiros determina se a matriz é triangular inferior (isto é, todos os elementos acima da diagonal principal são nulos). triangularinferiorq@883, 0, 0<, 85, 3, 0<, 82, 3, 4<<D triangularinferiorq@883, 4, 0<, 85, 3, 0<, 82, 3, 4<<D

03.prog.imp.nb 10 (Exame 07/02/2003 - Versão Ax) exame5 que recebendo como argumento uma matriz quadrada de números inteiros calcula o produto de todos os elementos pares acima da diagonal principal. exame5@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 11 (Exame 07/02/2003 - Versão Ay) exame6 que recebendo como argumento uma matriz quadrada de números inteiros calcula a soma de todos os elementos ímpares acima da diagonal principal. exame6@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 10 (Exame 07/02/2003 - Versão Bx) exame7 que recebendo como argumento uma matriz quadrada de números inteiros calcula a soma de todos os elementos pares abaixo da diagonal principal. exame7@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 2 (Exame 07/02/2003 - Versão By) exame8 que recebendo como argumento uma matriz quadrada de números inteiros calcula o produto de todos os elementos ímpares abaixo da diagonal principal. exame8@883, 4, 5<, 85, 3, 2<, 82, 3, 4<<D 15 (Exame 17/01/2005 - Versão A) exame9 que quando recebe como argumento w uma lista de listas de números inteiros percorre w recorrendo a dois ciclos While encaixados e verifica se cada lista em w é prefixo de todas as listas posteriores. Sugestão: Basta verificar se cada lista em w é prefixo da lista seguinte. Recorde que se diz que w1 é prefixo de w2 se existe w3 tal que Join[w1,w3]==w2. exame9@881, 2<, 81, 2, 3<<D

03.prog.imp.nb 11 (Exame 17/01/2005 - Versão B) exame10 que quando recebe como argumento w uma lista de listas de números inteiros percorre w recorrendo a dois ciclos While encaixados e verifica se cada lista em w é sufixo de todas as listas anteriores. Sugestão: Basta verificar se cada lista em w é sufixo da lista anterior. Recorde que se diz que w1 é prefixo de w2 se existe w3 tal que Join[w1,w3]==w2. exame10@881, 2, 3<, 82, 3<<D (Exame 31/01/2005 - Versão A) exame11 que quando recebe como argumento w uma lista de listas de números inteiros percorre w recorrendo a dois ciclos While encaixados e devolve a soma de todos os números ímpares que ocorrem em listas estritamente decrescentes de w. exame11@883, 2<, 83, 2, 3<<D 3 (Exame 31/01/2005 - Versão B) exame12 que quando recebe como argumento w uma lista de listas de números inteiros, percorre w recorrendo a dois ciclos While encaixados e devolve a soma de todos os números pares que ocorrem em listas estritamente crescentes em w. exame12@883, 1, 2<, 81, 2, 3<<D 2 (Exame 16/01/2006) exame13 que quando recebe como argumento w uma lista de listas de números inteiros percorre w recorrendo a dois ciclos While encaixados e verifica se w é um código de Gray. Nota: um código de Gray é uma lista de listas de números inteiros tal que todas as listas têm o mesmo comprimento e cada lista difere da lista seguinte exactamente numa posição. exame13@881, 2, 4<, 81, 2, 3<, 83, 2, 3<, 83, 5, 3<<D