Buscar

TRABALHO DE MÉTODOS COMPUTACIONAIS - 4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

TRABALHO DE MÉTODOS COMPUTACIONAIS: 
SISTEMAS LINEARES 
 
Instituto Militar de Engenharia 
Mestrado em Engenharia Mecânica 
Tito Magno Lavorato Alves Dacal 
Data:18/05/2019 
 
1. OBJETIVO 
 
Desenvolvimento da interpolação por spline cúbica, código próprio, para 
resolução do Projeto 2 sobre o fenômeno de Runge, presente no capitulo 5 do livro 
texto. 
Comparar a solução do algoritmo desenvolvido com os equivalentes presentes 
na biblioteca do FGSL do Fortran e a função presente no Matlab. Comparar também 
para os métodos de spline simples e polinomial, elaborados somente pelo Matlab. 
2. DADOS COMPUTACIONAIS 
 
Notebook Avell A62, com processador Intel® Core™ i7-8750H CPU 2.20GHz, 
memória de 16GB DDR4 SDRAM e 250GB SSD M2. 
 
3. SOFTWARE 
 
Computador com dual boot, SO Windows 10 e SO Ubuntu 18.04.2 LTS. Os 
códigos em linguagem Fortran são compilados a partir do terminal do Ubuntu em 
ambos os sistemas operacionais. Os códigos em Matlab são compilados somente em 
ambiente Windows. 
 
4. APRESENTAÇÃO DO PROBLEMA 
 
Os métodos de aproximação servem, em geral, para a obtenção de valores não 
tabelados para o caso de funções implícitas ou de difícil obtenção. Os métodos de 
interpolação de dados são mais utilizados para tratar dados considerados precisos, ou 
seja, quando se admite que os erros, imprecisões dos dados não existem, ou são 
mínimos. 
4.1 Fenômenos de Runge 
 
Segundo RUGGIERO e LOPES (2000) este fenômeno ocorre quando os pontos 
utilizados para a construção do polinômio interpolador estão igualmente espaçados 
segundo a Eq.1, indicando que é de se esperar divergencias neste caso. 
 (1) 
 
O fenômeno é caracterizado pela oscilação de valores obtidos pelo polinômio 
interpolador em pontos conhecido, a Fig.1 ilustra o fenômeno. 
Figura 1- Fenômeno de Runge. 
 
Fonte: adaptado de (RUGGIERO e LOPES, 2000). 
4.2 Projeto 2 
 
Considerando a função descrita na Eq.2 para o intervalo [a,b] = [-5,5] Constatar 
o fenômeno de Runge através das alternativas: 
 Pn(x): Polinômio de grau k que interpola f(x) em x0, x1, ...,xk 
 S1(x): Spline linear interpolante em x0, x1, ...,xk 
 S3(x): Spline cúbica interpolante em x0, x1, ...,xk 
 ( ) (
 
 
) (2) 
 
Onde x0, x1, ...,xn são (k+1) pontos igualmente espaçados no intervalo [-5,5]. 
Realize os conjuntos de testes descritos nas Eq. 3, 4 e 5 para k=20. 
 ( ) (3) 
 
 ( ) ( ) (4) 
 
 ( ) ( ) (5) 
 
Onde : 
 zi= -5 +0,2i, 
 i=1,2,..., 50. 
 
 
5. METODOLOGIA PARA A RESOLUÇÃO DO PROBLEMA 
 
Primeiramente, iniciou-se a implementação do código próprio para Spline 
cúbica. Após foi implementado os demais códigos referentes à biblioteca FGSL, onde 
fez se uso do manual GSL e FGSL para determinação das funções e parâmetros 
necessários para estas. Por último foi elaborado os procedimentos para resolução via 
Matlab. 
5.1 Interpolações por Spline Cúbica 
 
Realizou-se a implementação do método de interpolação por Spline cúbica em 
linguagem Fortran. Está foi realizada utilizando a metodologia de criação da Spline 
cúbica interpolante presente no livro texto. 
A partir dos parâmetros de entrada do problema, foi possível determinar o 
tamanho do sistema que seria trabalhado. Seguindo a metodologia descrita no livro 
texto é possível simplificar o problema para um problema de resolução de sistemas 
lineares, a Eq. 6 exemplifica a forma e padrão de montagem do sistema linear. 
[
 
 
 
] [
 
 
 
] 
 
 
 [
 
 
 
] (6) 
 
Onde: 
 h: é o passo; 
 g: é o vetor de independentes 
 y: é referente a f(x) 
O sistema foi montado de forma a se seguir a teoria da Spline natural, onde o 
comportamento da Spline no início é o mesmo no fim. Foi utilizado o algoritmo de 
Gauss-Seidel para resolução do sistema linear resultante, obtendo o vetor de 
independentes g. 
Conhecendo o vetor de independentes, é possível determinar os coeficientes ak, 
bk, ck, dk para k=1, 2, ..., n espaços, a obtenção dos coeficientes para o primeiro espaço 
estão descritos nas Eq. 7, 8, 9 e 10. 
 
 
 
 (7) 
 
 
 
 (8) 
 
 
 
 
 
 
 (9) 
 (10) 
 
Conhecendo os coeficientes pode-se determinar a Spline cúbica interpolante 
referente ao espaço, neste caso S1(x) será obtido através da Eq. 11 
 ( ) ( )
 ( )
 ( ) (11) 
 
As demais funções interpolantes foram obtidas de forma análoga. Destaca-se que 
foi necessário determinar quais pontos deveriam ser interpolados segundo o espaço em 
que pertencem, ou seja, dependendo do espaço estariam submetidas ao comportamento 
da Spline cubica referente a este espaço. 
Foram gerados arquivos referentes à função interpolada nos pontos zi e a função 
analítica calculada para os pontos zi, mostrando o comportamento das duas de forma 
gráfica e calculando o erro absoluto entre eles. 
 
6. ANÁLISE DOS RESULTADOS OBTIDOS 
 
Os resultados obtidos através das interpolações: polinomial, Spline linear e 
Spline cúbica estão expostas nos tópicos a seguir. 
6.1 INTERPOLAÇÕES POLINOMIAIS 
 
Os programas para resolução pelo método polinomial foram desenvolvidos no 
Matlab e no Fortran com auxílio da biblioteca do FGSL, para k=20, como requerido no 
exercício. A aproximação resultou em um erro absoluto extremamente alto, em ambas 
as implementações. A Figura 2 ilustra o comportamento da função interpolada. 
Figura 2- Comportamento da função analítica e interpolada. 
 
O erro absoluto calculado segundo a Eq. 3 está descrito na Tab. 1. 
Tabela 1- Resultado das interpolações polinomiais, 10 amostras. 
Métodos Utilizados ( ) Tempo [s] 
Matlab (polyfit) 1223,0841056592 0,050017 
Biblioteca FGSL 
(fgsl_interp_polynomial) 
1223,0841056490724 0,003625 
 
Analisando os resultados pode-se afirmar que ambos os métodos convergiram, 
divergindo somente na oitava casa decimal sendo está uma tolerância mais que 
aceitável. 
Em termos de tempo de resolução, fica evidente que o processamento na 
linguagem Fortran da biblioteca do FGSL apresenta-se como a opção de maior 
desempenho, tendo está resolvido o problema aproximadamente 13,8 vezes mais rápido. 
Analisando o tempo de implementação dos códigos, pode-se afirmar que a 
implementação do código no Matlab se realiza de forma mais rápida, uma vez que se 
pode obter auxílio na obtenção das funções e sua sintaxe utilizando a função nativa 
“help”, ressalta-se que durante o processamento da função Polyfit o matlab indicou que 
esta estava mal condicionada. Enquanto que para a implementação da biblioteca FGSL 
se teve que buscar auxilia no manual da GSL e da FGSL, entretanto, este processo se 
torna mais rápido a cada implementação. 
Observa-se através da Fig. 2 a ocorrência do fenômeno de Runge, como 
ilustrado na Fig. 1 este ocorre próximo às extremidades. 
6.2 SPLINE LINEAR 
 
Os programas para resolução pelo método da Spline linear foram desenvolvidos 
no Matlab e no Fortran com auxílio da biblioteca do FGSL, para k=20, como requerido 
no exercício. A aproximação resultou em um erro absoluto relativamente pequeno, 
ilustrado na Tab. 2 
Tabela 2- Resultado das interpolações por Spline linear, 10 amostras. 
Métodos Utilizados ( ) ( ) Tempo [s] 
Matlab (Interp1) 0,1552 0,013825 
Biblioteca FGSL 
(fgsl_interp_linear) 
0,15517 0,0033 
 
Analisando os resultados pode-se, novamente, afirmar que ambos os métodos 
convergiram, neste caso divergindo somente na quarta casa decimal. 
Em termos de tempo de resolução, novamente o processamento na linguagem 
Fortran da biblioteca do FGSL apresenta-se como a opção de melhor desempenho, 
tendo está resolvido o problema aproximadamente 4,2 vezes mais rápido. 
O tempo de implementação novamente foi mais rápido em Matlab, mas o tempo 
de implementação do método pela biblioteca do FGSL, foi relativamente mais rápido 
que a implementaçãoanterior devido ao fato de as variáveis e procedimentos realizados 
para a implementação do código de interpolação polinomial ser similares, divergindo 
em detalhes na declaração destas. 
A Fig. 3 ilustra o comportamento da interpolação pelo método da Spline linear, 
observa-se que o método, entre os estudados, se apresentou como o de melhor 
aproximação, não ocorrendo o fenômeno de Runge. 
 
Figura 3- Resultado obtido pelo método da Spline linear 
 
 
6.3 SPLINE CÚBICA 
 
Os programas para resolução pelo método da Spline cúbica foram desenvolvidos 
no Fortran por código próprio, Matlab e no Fortran com auxílio da biblioteca do FGSL, 
para k=20, como requerido no exercício. A aproximação resultou em um erro absoluto 
relativamente pequeno, porém maior do que o obtido pelo método da interpolação por 
Spline linear, os valores obtidos estão dispostos na Tab.3. 
Tabela 3- Resultado das interpolações por Spline cúbica, 10 amostras. 
Métodos Utilizados ( ) ( ) Tempo [s] 
Matlab (Interp1) 0,2684 0,05384 
Biblioteca FGSL 
(fgsl_interp_linear) 
0,268405 0,00375 
Fortran (código próprio) 0,268405 0,0018 
 
Analisando os resultados pode-se, novamente, afirmar que ambos os métodos 
convergiram. 
Em termos de tempo de resolução, novamente o processamento na linguagem 
Fortran da biblioteca do FGSL apresenta-se como a opção de melhor desempenho. A 
diferença de tempo de resolução entre o código próprio e o utilizando a biblioteca do 
FGSL não é comparável, pois neste caso estão em uma escala muito pequena de tempo, 
sendo praticamente instantâneo em ambos. 
O tempo de implementação novamente foi mais rápido em Matlab, mas o tempo 
de implementação do método pela biblioteca do FGSL, foi novamente mais rápido que 
a implementação anterior da biblioteca, novamente se atribui ao fato de as variáveis e 
procedimentos realizados para a implementação do código de interpolação Spline linear 
ser similar, divergindo em detalhes na declaração das variáveis e funções. A 
implementação do código próprio é sem duvidas a de maior tempo, além de todo o 
estudo sobre a questão e escolha de técnicas para resolução desta, busca-se a 
implementação de um código que aceite diferentes condições iniciais, e que seja 
adaptável para diversas funções. Ressalta-se também que para a resolução do sistema 
linear, foi utilizado código próprio. Neste caso, o código de Eliminação de gaus, foi 
somente adicionado como sub-rotina, porém se este tivesse que ser implementado em 
conjunto, demandaria mais tempo. 
A Figura 5 apresenta o comportamento da função interpolada por Spline cúbica. 
Pode-se observar a ocorrência do fenômeno de Runge. 
Figura 4- Resultado referente a interpolação por Spline cúbica 
 
 
7. CONCLUSÃO 
 
Analisando os métodos propostos, percebe-se que o método de interpolação por 
Spline linear se mostrou o mais verossímil, representando melhor o comportamento da 
função. Neste caso também não foi detectado a ocorrência do fenômeno de Runge, 
atribui-se isto devido a escolha dos pontos que definiram a função e por esta somente 
considerar uma Spline de grau 1. Pode-se afirmar também que o método de interpolação 
polinomial, não é adequado, sendo neste caso a ocorrência do fenômeno de Runge 
amplificada pelo caráter exponencial da função de interpolação. A Spline cúbica 
apresenta a ocorrência do fenômeno de Runge, porém neste caso o fenômeno ocorre de 
forma mais discreta, não resultando em um erro absoluto que inviabiliza-se a utilização 
deste método. 
Comparando a analise de resultados, tempos de resolução e de implementação 
dos códigos pode-se concluir que em termos de resultados todos os métodos 
convergiram. Em termos de desempenho computacional códigos em Fortran se 
destacam, resolvendo os problemas de forma mais rápida. Em termos de tempo de 
implementação realizar um código próprio implica em maior demanda de tempo, visto 
que podem ocorrer erros no código não ligados a logica deste. Comparando a biblioteca 
do FGSL e a utilização do Matlab, apesar dos códigos em Matlab terem sidos 
implementados de forma mais célere, acredito que a utilização das bibliotecas do FGSL 
acelerou de forma circunstancial a resolução do problema se comparado com a 
implementação do código próprio. Concluindo, acredito que a utilização da biblioteca 
do FGSL se apresente como “forma ótima” de implementação de códigos para 
computação de alto desempenho e defino a utilização do matlab como “forma prática” 
para esta implementação, isto devido à facilidade e instintividade na utilização deste. 
 
Bibliografia 
ADAMS, J. C. et al. Fortran 90 Handbook. New York: MCGraw-Hill Book 
Company. 
BASSI, A. A. Notas de aula da Diciplina de Introdução à Computação 
Científica. Instituto Militar de Engenharia. Rio de Janeiro. 2019. 
DOXYGEN. Manual FGSL. [S.l.]. 2014. 
GALASSI, M. et al. GNU Scientific Library. [S.l.]: [s.n.], v. 2.5, 2018. 
RUGGIERO, M. A. G.; LOPES, V. L. D. R. Cálculo Numérico Aspectos 
Teóricos e Computacionais. 2. ed. São Paulo: Pearson Makron Books, 2000. 
SIQUEIRA, T. G. D. Tutorial Sobre Comandos do MATLAB - Solução de 
quações Diferenciais, Interpolação, Ajuste Polinomial e Integração. Unicamp. 
Campinas. 2003.

Continue navegando