A primeira coisa a notar é que a correspondência entre encontrar raízes de um polinômio ( qualquer polinômio) e encontrar os valores próprios de uma matriz arbitrária é realmente direto, e é um assunto rico, ver Pseudozeros de polinômios e pseudospectra de matrizes companheiro por Toh e Trefethen e as referências lá.
Δ
x1=−b−sign(b)Δ−−√2a,x2=c/(ax1),Δ=det(b2c2ab)
Δb2≈4ac
Não existe esse equivalente direto, mesmo para polinômios cúbicos. ( Edit: veja o link para o método de Kahan abaixo no comentário do CADJunkie. Isso pode estar errado. ) A fórmula direta nem sempre é numericamente estável (ao contrário do que você pensa, eu acho), e não pode ser numericamente estável da mesma maneira maneira como a fórmula quadrática, inserindo os sinais certos em algum lugar. Você pode tentar avaliá-lo com precisão extra, por exemplo, com aritmética de dupla origem. Mas as abordagens que funcionam diretamente no polinômio são bastante complicadas. Por exemplo ( https://doi.org/10.1145/2699468 , que também funciona em polinômios quáticos), você pode usar o método de Newton com um bom palpite pré-computado, mas fica realmente um pouco complicado, e a aceleração não é tão grande .
As fórmulas explícitas para polinômios de grau 4 nem sempre são numericamente estáveis. Os polinômios mais difíceis tendem a ter raízes incomuns (pequenas ou próximas umas das outras, diferindo muito em magnitude), mas até mesmo testar seu código em alguns bilhões de polinômios puramente aleatórios geralmente pode revelar erros numéricos.
Uma coisa curiosa relacionada a isso é que Jenkins-Traub, que é uma boa maneira comum de encontrar raízes polinomiais, é na verdade um algoritmo de autovalor (iteração inversa) disfarçado.
Eu diria que a explicitação das fórmulas é, de certa forma, enganosa: isso o leva a pensar que, porque a fórmula tem uma forma fechada, significa que é de algum modo mais barato / fácil. Eu realmente recomendo que você realmente teste / compare isso em alguns dados de teste. Não precisa ser verdade: determinar as raízes dos polinômios de grau está dentro de um pequeno fator inteiro de dificuldade do problema completo de determinar os valores próprios de uma matriz pequena, e as rotinas da biblioteca padrão para valores próprios são muito mais robustas e bem testado. Portanto, ao reduzir o pequeno problema de valor próprio a um problema de raízes polinomiais de baixo grau, você não está necessariamente simplificando.≥3
Quais são os prós e os contras de usar o polinômio característico para obter valores próprios especificamente para este caso?
Eu acho que o principal golpe é que essa suposição que você faz:
Por outro lado, a equação é apenas quártica e, na melhor das hipóteses, temos fórmulas analíticas para as raízes polinomiais, portanto, não devemos nos afastar muito.
porque uma fórmula está na forma fechada e analítica, significa que é fácil / barata / precisa, não é necessariamente verdadeira. Pode ser verdade em dados específicos que você possa ter, mas até onde eu sei, não é verdade em geral.
PS: Toda a distinção entre a forma fechada e a não fechada fica realmente complicada com a aritmética do computador: você pode pensar que em uma fórmula cúbica é uma forma fechada, mas tanto quanto a aritmética do computador No entanto, essa é apenas outra função racional aproximada, talvez seja mais rápida, mas não fundamentalmente diferente, da função racional aproximada que define o resultado de um algoritmo de autovalor.cos(⋯)
Usar um algoritmo QR é a melhor maneira. Eu acho que é melhor usar um algoritmo mais adequado para a tarefa em questão.
De fato, mesmo que você estivesse tentando calcular as raízes de um polinômio, sem pretender usá-las como os valores próprios de uma matriz, é recomendável criar a Matriz Complementar para esse polinômio e resolver os valores próprios dessa matriz. (ou seja, faça o processo oposto ao que você está considerando.) O processo é extremamente robusto, mas não muito eficiente em termos computacionais. Um algoritmo específico para a tarefa de encontrar raízes polinomiais (por exemplo, Jenkins-Traub, Method of Laguerre, etc.) seria mais eficiente. E mesmo se você usar um desses métodos, ainda pode haver alguns casos em que a formação da Matriz Complementar e a computação de seus autovalores ainda oferecem melhores resultados.
Além disso, como Kirill indicou, não há como tirar proveito das soluções de forma fechada para um polinômio de 3º ou 4º grau. Analisei isso alguns anos atrás antes de escrever uma tradução do algoritmo Jenkins-Traub. Para resultados numéricos, ainda é melhor escrever um algoritmo desde o início como um solucionador discreto e ignorar as soluções de formulário fechado.
fonte