Eu tenho um sistema de equações não lineares que quero resolver numericamente:
f = ( f 1 , … , f n )
Este sistema possui várias características que dificultam o manuseio. Estou procurando idéias sobre como lidar com o sistema de forma mais eficaz.
Por que o sistema é difícil?
As funções são semelhantes a esta (mas é claro em várias dimensões):
Eles têm planaltos planos separados por uma região de mudança suave. Em 2D, você pode imaginar algo assim para um :
Geralmente, cada possui dois platôs separados por mudança suave em torno de um hiperplano dimensional. n - 1
Funções como essa são difíceis de lidar com métodos do tipo Newton, porque a derivada é efetivamente zero nos platôs. Em várias dimensões, não consigo encontrar facilmente uma região onde nenhum dos n=1 tenha um platô - se pudesse, isso resolveria o problema. O método de bissecção funciona bem para , mas não generaliza bem para várias dimensões.
As funções são muito lentas para calcular. Estou procurando um método que possa obter uma aproximação razoável da raiz no menor número possível de iterações.
As funções são calculadas com o método Monte Carlo. Isso significa que, cada vez que são calculados, recebo um valor aleatório ligeiramente diferente. Derivativos são difíceis de estimar. Quando estivermos perto o suficiente da raiz, o ruído começará a dominar, e é necessário usar a média para aumentar a precisão. Idealmente, deve ser possível generalizar o método para uma versão equivalente de aproximação estocástica (por exemplo, Newton → Robbins-Monro).
O sistema é de alta dimensão. pode ser tão grande quanto 10-20. Quando , um método eficaz seria, provavelmente, ser o seguinte: tentar seguir os contornos definidos por e e ver onde eles se intersectam. Não está claro como isso se generalizaria em altas dimensões.n = 2 f 1 ( x 1 , x 2 ) = 0 f 2 ( x 1 , x 2 ) = 0
O que mais eu sei sobre o sistema?
Existe precisamente uma raiz (dos resultados teóricos).
Eu sei o valor de nos platôs (digamos que seja 0 e 1 para qualquer ). i
tem um relacionamento especial com : muda monotonicamente de 1 para 0, conforme passa de para . Isso vale para qualquer valor fixo do outro .
fonte
Respostas:
Como existe uma única raiz e não há restrições, você pode ter sorte em colocá-la como um problema de otimização: minimize a soma (ao longo de cada dimensão) dos quadrados da sua função original.
Os métodos de otimização clássica provavelmente falharão, mas métodos heurísticos, como algoritmos genéticos ou CME-ES (adaptação covariável da matriz etc - estratégia evolutiva), podem funcionar.
fonte