- [570] 0.1 Miscelânea — Enésima Raiz
Este artigo demonstra uma aplicação direta do Método de Newton, que é a expressão para obtenção da enésima raiz de "fi" através de uma implementação computacional.
- [375] 1.1.1 Raízes de Equações — Métodos Intervalares — Método da Bissecção
Neste artigo é apresentada uma introdução aos métodos intervalares de busca de raízes. Para tais métodos, a primeira exposição é feita sobre as buscas incrementais, que consistem basicamente em testar a nulidade da imagem da função após cada incremento feito dentro do intervalo.
basicamente todos os métodos intervalares fazem uma busca incremental, modificando apenas os seus critérios de teste. Desta forma, surge naturalmente o Método da Bissecção como consequência da busca de raízes dentro de um intervalo.
- [403] 1.1.2 Raízes de Equações — Métodos Intervalares — Regula Falsi
O método conhecido como Regula Falsi, ou "da Falsa Posição" é uma técnica que busca de raízes de funções dentro de um intervalo pré-definido, diferindo-se do Método da Bisecção por avaliar a intersecção entre o eixo abicisso e um segmento de reta produzido através de dois intervalos consecutivos, nos pontos [xi, f(xi)] e [xi+1, f(x_i+1)].
Para algumas funções, este método possui convergência mais veloz que o Método da Bisecção, servindo no refinamento de algumas outras técnicas compostas.
Este artigo faz uma apresentação do método e segue com uma discussão sobre a implementação e as possíveis melhorias computacionais que podem ser aplicadas à ele.
- [563] 1.1.3 Raízes de Equações — Métodos Intervalares — Método de Rider
O Método de Ridder consiste em avaliar a aproximação parcial -- obtida em cada iteração pelo Método da Falsa Posição -- em uma função de ajuste exponencial, a fim de otimizar a busca pela raiz.
- [435] 1.2.1 Raízes de Equações — Métodos Abertos — Ponto Fixo
O Método do Ponto Fixo é o primeiro e mais básico dos métodos abertos para busca de zeros em funções.
Diferente dos métodos intervalares, onde exige-se um conhecimento prévio da localização da raiz para delimitação do intervalo de busca, os métodos abertos, em geral, necessitam apenas de uma estimativa inicial para convergir à raiz.
Este artigo apresenta uma breve explanação sobre os métodos abertos -- cuja maioria dos métodos numéricos derivam -- e uma implementação do Método do Ponto Fixo.
- [439] 1.2.2 Raízes de Equações — Métodos Abertos — Newton Raphson
O método de Newton-Raphson é um método aberto, pois a convergência que ele provê à raiz não depende da delimitação de um intervalo, possuindo as propriedades descritas para Método do Ponto Fixo.
Provavelmente é o método numérico mais aplicado computacionalmente para a aproximação de raízes, graças à sua capacidade de rápida convergência, associada à simplicidade de sua formulação.
- [450] 1.2.3 Raízes de Equações — Métodos Abertos — Método da Secante
Este artigo demonstra matematicamente a função de iteração do Método da Secante e disponibiliza um algoritmo implementado na linguagem Python.
- [485] 1.2.4 Raízes de Equações — Métodos Abertos — Método de Halley
O método inventado pelo físico Edmond Halley, é um algoritmo que consiste em aplicar o Método de Newton-Raphson duas vezes, gerando uma fórmula de aproximação com dependência da função, da primeira e da segunda derivada, possuindo a vantagem de convergir cubicamente à raiz.
- [497] 1.2.5 Raízes de Equações — Métodos Abertos — Método de Steffensen
O Método de Steffensen é uma técnica de busca de raízes de funções muito semelhante ao Método de Newton-Raphson, mas que substitui a derivada da função por uma aproximação.
Este método se difere do Método da Secante por permitir que o delta-quadrado de Aitken seja usado para permitir a aceleração da convergência em alguns casos.
Neste artigo, é apresentado a demonstração do Método de Steffensen, seguido de um comentário sobre o processo de Aitken e como isto é implementado em um programa.
- [549] 1.2.6 Raízes de Equações – Métodos Abertos – Método de Householder
Assim como o Método de Newton exige a derivada de primeira ordem e apresenta uma taxa de convergência quadrática; o Método de Halley leva a primeira e segunda derivada e possui convergência cúbica; o Método de Householder é um algoritmo de busca de raízes que permite que as iterações convirjam a uma taxa d+1 , uma vez que sejam utilizadas d derivadas, onde d é a ordem do método.
- [528] 1.2.7 Raízes de Equações – Métodos Abertos – Interpolação Quadrática Inversa
Interpolação Quadrática Inversa é uma técnica usada para obtermos zeros de equações não-lineares na forma f(x) = 0. Ele é raramente implementado em aplicações como único método de busca de raízes, sendo usado como fator acelerador da convergência.
- [544] 1.2.8 Raízes de Equações — Métodos Abertos — Método de Newton Interpolado
Neste artigo, apresentaremos a implementação de uma função de iteração modificada do Método de Newton que permite aproximar uma raiz a uma taxa de convergência de quinta ordem.
- [457] 1.3.1 Raízes de Equações — Raízes de Polinômios — Newton-Raphson para polinômios
Os polinômios formam uma classe de função toda especial, contendo propriedades e relações particulares e bem conhecidas. Devido a isso, alguns métodos computacionais foram desenvolvidos de forma a permitir encontrar suas raízes.
Como funções polinomiais formam soluções de diversos problemas físicos, matemáticos e de outras áreas, aplicar o método correto que melhor resolva, certo problema pode ser a chave para uma solução computacionalmente elegante e eficiente.
Este artigo apresenta uma breve introdução aos métodos de busca de zeros de polinômios e dispõe uma adaptação do Método de Newton para suportar raízes complexas -- tipo de solução quase sempre presente para este tipo de função.
- [463] 1.3.2 Raízes de Equações — Raízes de Polinômios — O Método de Muller
O Método de Muller é uma técnica modificada do Método da Secante, mas que ao contrário dessa, não estima a raiz de uma função prolongando uma reta através de dois pontos -- fazendo com que esta reta seja secante à curva da função --, e sim utiliza-se de uma parábola através de três pontos para aproximação da derivada.
- [473] 1.3.3 Raízes de Equações — Raízes de Polinômios — O Método de Bairstow
O Método de Bairstow permite encontrar todas as raízes de um polinômio de grau $n$ exigindo-se apenas seus coeficientes.
Este artigo faz uma breve exposição matemática do método, seguida de duas implementações reais nas linguagens Python e Fortran 90.
- [518] 1.3.4 Raízes de Equações – Raízes de Polinômios – O Método de Aberth
O Método de Aberth é uma algoritmo usado para encontrar todas as raízes de um polinômio de grau qualquer.
- [524] 1.3.5 Raízes de Equações – Raízes de Polinômios – O Método de Durand-Kerner
O Método de Durand-Kerner, também chamado de Método de Weierstrass, é uma técnica numérica usada para obter todas as raízes de um polinômio, que atua de forma semelhante ao Método do Ponto Fixo, mas é generalizado para buscar todos os zeros da função polinomial.
- [507] 1.3.6 Raízes de Equações — Raízes de Polinômios — O Método de Laguerre
O Método de Laguerre é um algoritmo numérico modificado a partir do Método de Newton para encontrar raízes complexas de polinômios. Sendo um método muito eficiente na busca de um zero de função, pois sempre converge à alguma raiz, independente da aproximação inicial dada (propriedade nem sempre presente em outros métodos computacionais). A principal desvantagem do Método de Laguerre é que ele não encontra todas raízes do polinômio, aproximando satisfatoriamente bem apenas à uma delas. Neste artigo, apresento uma pequena demonstração das relações matemáticas usadas na implementação, também presente.
- [573] 1.3.7 Raízes de Equações — Raízes de Polinômios — O Método de Jenkins-Traub
O Método de Jenkins-Traub é um algoritmo para busca dos zeros de uma função polinomial que utiliza três estágios de estimativas para aproximar as raízes.
- [558] 1.4.1 Raízes de Equações — Métodos Mistos — Método de Brent
O Método de Brent é uma combinação simples de diversos métodos computacionais para busca de raízes de função. Os métodos usados no algoritmo de Brent são: Método da Bisseção, da Secante e Interpolação Quadrática Inversa.
- [577] 2.1.1 Sistemas Lineares — Métodos Diretos — Eliminação de Gauss
O método conhecido como "Eliminação de Gauss" consiste em combinar as equações de forma ir eliminando as variáveis até convergir à uma solução. Embora este seja um dos métodos mais antigos, e também um dos menos eficientes, serve como fundamento para compreendermos as demais técnicas relativas à resolução de sistemas lineares.
- [586] 2.1.2 Sistemas Lineares — Métodos Diretos — Decomposição LU
Este artigo trata de uma classe de algoritmos de eliminação -- tais como da Eliminação de Gauss -- que utilizam decomposição de uma matriz para obtenção das incógnitas do sistema. A principal vantagem da decomposição LU é que ela otimiza o tempo gasto na eliminação, sendo adaptativo às situações nas quais o vetor dos termos independentes são calculados para um único conjunto de coeficientes do sistema. Além disso, este artigo desenvolve o método da decomposição LU como uma implementação da eliminação de Gauss.
- [604] 2.1.3 Sistemas Lineares — Métodos Diretos — Decomposição de Cholesky
Este artigo apresenta o algoritmo conhecido como "Fatoração de Cholesky", onde decompõe uma matriz A tal que A = LL*, onde L será uma matriz triangular-inferior com diagonal composta apenas por elementos não negativos, enquanto L* será a matriz adjunta de L.
Caso A seja uma matriz positiva, então L será única, o que permite servir como fator identificador dos dados de A, chamado de "Fator de Cholesky de A". Essa propriedade pode permitir aplicações em diversas áreas da ciência e computação.
Decomposições baseadas na de Cholesky estão presentes em criptografia, geração de hashes, verificação de dados e em uma diversidade de aplicações práticas.
- [657] 2.1.4. Sistemas Lineares — Métodos Diretos — Decomposição SVD
Uma das mais importantes fatorações de matrizes é a Singular Value Decomposition (SVD). Ela é utilizada em diversos problemas práticos, tais como processamento de sinais, ajuste de funções multivariadas, soluções de problemas de otimização, etc. Sua principal aplicação nestes problemas está em permitir a aproximação da pseudo-inversa da matriz decomposta. Neste artigo vamos apresentar a decomposição SVD e mostrar como ela pode ser utilizada para solução de sistemas lineares.
- [689] 2.1.5. Sistemas Lineares — Métodos Diretos — Decomposição QR
Neste post apresentaremos um método para decomposição de matrizes conhecido como Fatoração QR. Esta técnica consiste em decompor uma matriz A como sendo um produto de uma matriz ortogonal com outra matriz triangular. Em problemas práticos, este método é consideravelmente mais útil que outras técnicas (tais como LU ou Cholesky).
- [704] 2.1.6 Sistemas Lineares — Métodos Diretos — Decomposição LDL
Um aspecto da decomposição de Cholesky que insere um custo adicional na computação das matrizes decompostas está na necessidade de calcular a raiz quadrada durante a resolução do problema. Contudo, o cálculo da raiz quadrada é um processo caro, sujeito à propagações de erros maiores do que aqueles obtidos com a utilização de operações simples de ponto flutuante, tais como adição e multiplicação. Neste artigo mostraremos uma modificação na decomposição de Cholesky que elimina necessidade do cálculo da raiz quadrada, sendo mais eficiente e propagando menos erros.
- [711] 2.1.7 Sistemas Lineares — Métodos Diretos — O Algoritmo de Thomas
Neste post veremos o algoritmo para resolução de sistemas com matrizes tri-diagonais (TDMA - Tridiagonal Matrix Algorithm), conhecido como "Algoritmo de Thomas", que é uma forma simplificada da Eliminação de Gauss. Este algoritmo é um dos mais eficientes métodos para resolução de problemas reduzidos à sistemas lineares e também possui grande simplicidade, o que favorece a implementação.
- [762] 2.2.1 Sistemas Lineares — Métodos Iterativos — Gauss-Siedel
Neste artigo discutiremos o Método de Gauss-Siedel, que é um algoritmo iterativo para aproximação de soluções de sistemas lineares. Em problemas que empregam métodos computacionais, o método de Gauss-Siedel é muito útil, uma vez que gera soluções satisfatórias para sistemas de equações muito grandes. Todavia, como é comum de ocorrer em métodos iterativos, esta técnica é sujeita a erros de arrendondamento. Por isso, há certos casos em que o método não convergirá à uma solução. Portanto, apresentaremos neste trabalho uma digressão sobre as vantagens e os contras da utilização de métodos iterativos e do algoritmo de Gauss-Siedel.
- [787] 2.2.2 Sistemas Lineares — Métodos Iterativos — Jacobi
O Método de Jacobi é um algoritmo iterativo para resolução de sistemas lineares, muito semelhante ao método de Gauss-Siedel. Neste post, apresentamos características deste método e uma implementação em python do mesmo.
- [850] 3.1.1 Aproximação de Funções — Interpolação — Introdução
Neste artigo, comentamos sobre a importância das formas mais simples de ajuste de funções: a interpolação. Nos posts seguintes, iremos detalhar as
diversas abordagens numéricas utilizadas para transformar dados obtidos do mundo real (finitos) em funcionais (abstrações contínuas).
- [858] 3.1.2 Aproximação de Funções — Interpolação — Polinômios de Interpolação
Frequentemente precisamos fazer estimativas de valores intermediários àqueles obtidos a partir de amostras. A forma mais comum para fazer estas
estimativas está no uso de interpolações polinomiais. Neste artigo, discutiremos sobre a teoria comum à todas técnicas numéricas que utilizam polinômios interpoladores, tais como as funções de Lagrange e de Hermite.
- [868] 3.1.3 Aproximação de Funções — Interpolação — Interpolação de Lagrange
O polinômio interpolador de Lagrange é uma das formulas mais simples para obtenção do polinômio interpolador. Neste post apresentamos e discutimos o método, além de disponibilizar um código que ilustra o algoritmo.
- [880] 3.1.4 Aproximação de Funções — Interpolação — Interpolação de Hermite
A interpolação de Hermite é um método que utiliza tanto amostras da função quanto da sua derivada para ajustá-la em uma curva. Neste artigo, demonstramos a formulação desse método e um exemplo de como implementá-lo
- [1111] 3.1.5 Aproximação de Funções — Interpolação — Fórmula de Newton-Gregory
Um caso especial de interpolação polinomial se dá quando temos dados obtidos em uma amostragem igualmente espaçada. Neste post veremos a Interpolação com Dados Igualmente Espaçados, que cumina em uma equação conhecida como Fórmula de Newton-Gregory.
- [1119] 3.1.6 Aproximação de Funções — Interpolação — Interpolação Inversa
Na maioria dos casos de interpolação os valores de f(x) e x são as variáveis dependente e independente, respectivamente. Como tal, os valores dos x's são uniformemente espaçados. Contudo, supondo que precisemos utilizar os mesmos dados amostrados para determinar x a partir de f(x). Tal problema é chamado de interpolação inversa.
- [1130] 3.1.7 Aproximação de Funções — Interpolação — Splines
Neste post, usamos funções lineares simples para introduzir alguns conceitos básicos e problemas relacionados à splines. Então, desenvolvemos um algoritmo para ajuste de valores aos dados. Finalmente, discutimos sobre splines cúbicos, que possuem maior aplicabilidade em problemas reais.
- [1137] 3.2.1 Aproximação de Funções — Análise de Fourier — Introdução
Nos posts anteriores, apresentamos a interpolação baseada em aproximações baseadas em funções polinomiais. Agora, neste post, apresentamos uma nova classe de funções de aproximação que têm enorme importância em problemas que utilizam métodos computacionais: as funções trigonométricas.
- [1142] 3.2.2 Aproximação de Funções — Análise de Fourier — A Série de Fourier
Neste post veremos a aproximação de uma função qualquer em termo de funções trigonométricas através da série de Fourier.
- [1163] 3.2.3 Aproximação de Funções — Análise de Fourier — A Transformada Integral de Fourier
A integral de Fourier é a principal ferramenta para analisar funções de ondas não-periódicas através da modelagem trigonométrica das séries de Fourier. Neste post discutiremos a versão contínua da transformada de Fourier.
- [1172] 3.2.4 Aproximação de Funções — Análise de Fourier — A Transformada Discreta de Fourier
Um sinal natural raramente é caracterizado como uma função definida no contínuo, como aquelas descritas pela transformada contínua de Fourier. Em vez disso, os dados são amostrados em tempos discretos. Assim, a forma mais eficiente de conversão entre domínios de problemas reais se dá pela transformada discreta de Fourier.
- [1186] 3.2.5 Aproximação de Funções — Análise de Fourier — A Transformada Discreta Rápida de Fourier
Embora o algoritmo implementado no post anterior calcule adequadamente a transformada discreta de Fourier (TDF), ele é computacionalmente custoso, uma vez que possui ordem de complexidade quadrática. Por isso, para uma amostra de dados considerável, pode ser inviável a utilização daquela função. Neste post veremos a transformada de rápida de Fourier, algoritmo eficiente que é muito utilizado em diversas áreas que utilizam recursos eletrônicos e computacionais, tais como processamento de sinais.
- [1251] 3.3.1 Aproximação de Funções — Regressões — Regressão Linear
Neste e nos próximos posts, vamos considerar o problema de aproximar uma função cuja sequência de pontos foram obtidos de forma aproximada, sendo sujeitos à ruídos inerentes do processo de amostra. Assim, os arrendondamentos feitos pelos métodos de interpolação podem acumular erros muito maiores. Os métodos de regressão consistem em um conjunto de técnicas em que os erros funcionais podem ser usados para gerar uma aproximação suave da função.
- [1343] 3.3.2 Aproximação de Funções — Regressões — Regressão Linear Múltipla
Estendendo o post sobre regressão linear simples, temos o caso em que o vetor y é gerado por uma função com duas ou mais variáveis.
- [1350] 3.3.3 Aproximação de Funções — Regressões — Regressão Polinomial
Nos dois últimos posts apresentamos o desenvolvimento para ajustar dados em uma equação da reta através de mínimos quadrados. Contudo, existem muitos eventos em que o modelo obedece à um comportamento polinomial. Para tais modelos é necessário adaptar o ajuste para uma função polinomial de grau superior.