1a questão (5.0 pontos)
Escreva o algoritmo PETEQS para a função filtro(vetor, dim, K) que aplica um algoritmo de filtragem a um vetor numérico de dimensão dim recebido como parâmetro, e retorna um novo vetor com o resultado da aplicação do filtro.
O algoritmo de filtragem consiste em substituir cada elemento de vetor na posição i pela média aritmética dos elementos vetor[i - K], vetor[i – (K – 1)], ..., vetor[i], vetor[i + 1], ..., vetor[i + K].
Exemplo:
Se vetor é igual a [1, 2, 3, 4, 5, 6] e K é igual a 1, então, a posição 3 do vetor de saída seria calculada como:
filtrado[3] (vetor[2] + vetor[3] + vetor[4])/3.0
filtrado[3] (2 + 3 + 4)/3.0
filtrado[3] 3.0
Se K é igual a 2, a posição 3 do vetor de saída seria calculada como:
filtrado[3] (vetor[1] + vetor[2] + vetor[3] + vetor[4] + vetor[5])/5.0
filtrado[3] (1 + 2 + 3 + 4 + 5)/5.0
filtrado[3] 3.0
Um caso especial desse algoritmo são as posições do vetor de entrada próximas ao início ou o fim do vetor. Essas posições podem não ter tantos vizinhos quanto as outras posições, então a média deve incluir menos elementos. Por exemplo, a primeira posição do vetor entrada não tem vizinhos à sua esquerda, então a posição correspondente no vetor de saída deve ser a média das (K + 1) posições: 1, 2, ... K+1. Assim, para o vetor acima e K=1, a primeira posição do vetor de saída seria preenchida com (1 + 2) / 2 = 1.5, e assim por diante. Da mesma forma, a última posição do vetor não tem vizinhos à direita, então a posição correspondente no vetor de saída deve ser a média das (K+1) posições: dim, dim-1, ..., dim-K. Para o vetor acima e K=1, a última posição do vetor de saída seria preenchida com (5 + 6)/2 = 5.5. Tenha cuidado para que o seu algoritmo não tente acessar posições fora dos limites do vetor original.
Um erro frequente neste algoritmo é tentar modificar o vetor de números no próprio espaço do vetor original. Você não deveria fazer isto, ao contrário, você deveria criar um novo vetor para armazenar o resultado da filtragem. A razão é porque você não deseja que as modificações feitas em uma posição impactem o cálculo de outra posição na mesma passagem do algoritmo. No exemplo anterior, determinamos que, para K=1, a posição 1 deveria ser alterada de 1 para 1.5. Mas se você
armazenar 1.5 na mesma posição do vetor de entrada e usar esse valor para os cálculos seguintes no vetor, suas médias serão incorretas. Por exemplo, ao calcular as médias para a posição 2, a posição 1 é uma de suas vizinhas, mas você deveria usar o valor original dessa posição (1) ao calcular essa média, e não o valor modificado (1.5).
Exemplos:
vetor [1, 2, 3, 4, 5, 6]
filtro(vetor, 6, 1)
retornaria:
[1.5, 2.0, 3.0, 4.0, 5.0, 5.5]
filtro(vetor, 6, 2)
retornaria:
[2.0, 2.5, 3.0, 4.0, 4.5, 5.0]
vetor [11, 22, 25, 68, 12, 6, 79, 98, 51, 73]
filtro(vetor, 10, 1)
retornaria
[23.5, 38.333, 35.0, 28.667, 32.333, 61.0, 76.0, 74.0, 62.0]
filtro(vetor, 10, 2)
retornaria
[38.333, 31.75, 26.6, 38.0, 52.6, 49.2, 61.4, 75.25, 74.0]
filtro(vetor, 10, 3)
retornaria
[31.75, 26.6, 35.333, 44.286, 48.429, 55.286, 53.167, 61.4, 75.25]
Soluções para a tarefa
Respondido por
0
é difícil, desde ontem que eu estou tentando conseguir essa pergunta, achei a resposta agora!
Usuário anônimo:
Dá uma dica de qual caminho seguir
Perguntas interessantes
Espanhol,
8 meses atrás
Ed. Técnica,
8 meses atrás
Português,
8 meses atrás
Português,
1 ano atrás
Matemática,
1 ano atrás
Matemática,
1 ano atrás
Geografia,
1 ano atrás