Aproximação de raízes de funções pelo uso de métodos numéricos paralelizados

Authors

  • Matheus da Silva Menezes
  • Vinícius Samuel Valério de Souza
  • Daniel Sabino Amorim de Araújo
  • João Paulo Caraú Oliveira
  • Raimundo Leandro Andrade Marques

DOI:

https://doi.org/10.5540/03.2015.003.01.0317

Keywords:

Métodos iterativos, raízes de funções, paralelismo, MPI.

Abstract

No cotidiano profissional e científico, muitas vezes nos deparamos com situações onde necessitamos encontrar a raiz ou zeros de funções [1]. É possível se chegar a tal solução através de métodos diretos, porém, seu uso é limitado somente a funções cujo grau polinomial é menor ou igual a quatro. Para funções acima disso, devemos utilizar métodos iterativos, que mesmo não alcançando a solução exata, fornecem um resultado aproximado, com a precisão esperada pelo problema com o qual estamos lidando [2]. Devido à natureza dessas funções, não é possível determinar um único método para a resolução de todas elas. Mesmo um especialista com vasta experiência pode não ser capaz de decidir a melhor abordagem para um determinado problema, sem que mais de um desses métodos seja testado. Sendo assim, o uso de uma abordagem paralela pode fornecer uma alternativa mais eficiente na determinação do método mais apropriado para função a qual estamos trabalhando. Diante disso, este trabalho propõe uma abordagem que utiliza paralelismo e os métodos numéricos Bisseção [1], Falsa Posição [1], Newton [1] e Secante [1] para encontrar de maneira eficiente zeros de funções transcendentes. 1. Abordagem Numérica Paralela O algoritmo proposto neste trabalho utiliza noções de teoria dos jogos especificamente teoria da escolha racional onde aplicada uma lógica (resolução por métodos diferentes) a premissas dadas (número máximo de iterações e a precisão estabelecida) [3], com processos que competem entre si, para determinar o mais rápido. Cada processo utiliza um método distinto para encontrar o zero de uma função qualquer e aquele que for o vencedor, ou seja, o processo que primeiro convergir, será consequentemente o mais apropriado para a função analisada. Também compramos os resultados para soluções de forma paralela e de forma sequencial. Existem cinco processos atuando no algoritmo. O processo 0 é chamado Master, sua função é coordenar o trabalho dos demais processos chamados Slaves ou Worker[4], sendo que o termo utilizado neste trabalho será Slave. Cada Slave procura a raiz da função proposta, por meio de um dos quatro métodos escolhidos. O processo de convergência é atingido através dos seguintes passos: I. O Master garante que todos os processos sejam iniciados por meio de uma rotina que cria uma barreira lógica, a qual todos os processos devem atingir, antes que o processamento realmente tenha início, funcionando assim como uma linha de largada. II. A partir de então os Slaves entram em loop, procurando o zero da função analisada. III. Quando um dos processos encontra a raiz ele envia uma mensagem para o mestre e então termina seu laço de execução. Assim que o Master recebe a mensagem ele envia uma mensagem para os demais Slaves, informando que eles também devem parar de realizar cálculos, pós a raiz já foi encontrada. IV. Caso todos os processos atinjam o número máximo de iterações sem que a raiz seja encontrada, dizemos que a função analisada não convergiu para nenhum dos processos. A seguir verificaremos os resultados obtidos para análise de algumas funções, quando colocamos um algoritmo sequencial versus um algoritmo paralelo. Todos os testes foram realizados em um computador com Processador Core i5 2ª Geração e 4 Gb RAM, Windows 8, escrita em linguagem C e compilado no Microsoft Visual Studio 2013. [...]

Downloads

Download data is not yet available.

Published

2015-08-25

Issue

Section

Métodos Numéricos e Aplicações