Eu tenho conjuntos de dados de campo multiponto, cada conjunto de dados de pontos se refere a uma única célula de uma malha não estruturada. O objetivo é interpolar os dados para o centro celular, direta ou indiretamente, da maneira mais precisa.
Se eu usar a interpolação com Distância inversa ponderada, no caso em que a distância entre a fonte e o alvo (centro da célula) for muito pequena, eu posso acabar com uma exceção de ponto flutuante.
Para esse tipo de interpolação em uma malha estruturada, é usada uma interpolação ponderada por volume. Isso não se traduz diretamente em uma célula de malha de formato arbitrário.
A introdução de uma tolerância para que uma interpolação IDW contorne o SIGFPE só faz sentido se eu não apresentar nenhum teste que possa tornar a interpolação ineficiente. Está adicionando um δ suficientemente pequeno ao denominador para cada peso é uma opção possível com a interpolação IDW? Quais são os métodos de interpolação adequados para esse problema?
Informação adicional:
Para a interpolação da malha para os pontos, estou usando uma interpolação baseada nas coordenadas barcêntricas . Cada célula poliédrica da malha é decomposta em tetraedro. O campo centralizado da célula é interpolado para os pontos da célula usando a interpolação IDW . Uma pesquisa é realizada para cada ponto para encontrar o tetraedro no qual ele se encontra, e os valores são interpola- dos usando a interpolação barentêntrica .
Para a interpolação dos pontos para a malha, isso não é possível. Os valores centrados nas células são desconhecidos. Não há maneira de montar uma composição tetraédrico que iria impor , onde W P C é o peso, relativamente a um ponto P e um centro de célula C . Isso vem do fato de a configuração do ponto ser arbitrária. Portanto, atualmente estou usando o IDW para isso, certificando-me de que não recebo uma exceção de ponto flutuante. Existem métodos de interpolação mais adequados para esse problema?
fonte
Respostas:
Links para diversos pacotes de software para interpolação de dados dispersos estão na minha página da web http://www.mat.univie.ac.at/~neum/stat.html#fit
O livro
GE Fasshauer, Métodos de aproximação de malha livre usando MATLAB, World Scienti fi c 2007.
fornece um estado da arte abrangente (a partir de 2006).
Alguns artigos mais recentes sobre interpolação de dados dispersos:
http://www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/ Box-splines / box-splines.pdf
O método a ser usado depende muito do uso do interpolante resultante. Os métodos de Kriging são baseados em um modelo estocástico, portanto, são bons se os dados a serem interpolados forem um pouco barulhentos. As funções de base radial devem ser preferidas se (implementadas de forma estável) e se desejar um resultado visualmente agradável (interpolação de baixa curvatura).
fonte
Abaixo, darei um exemplo de como interpolo de um conjunto de pontos para outro, na malha de volume finito.
Coloquei um arranjo de variáveis - os dados que armazeno na memória representam valores nos centros de células. Eu guardo variáveis de campo e seus gradientes. Os gradientes são encontrados a partir dos valores circundantes, resolvendo um problema dos mínimos quadrados (com QR via reflexões de Household).
Seu arranjo pode ser diferente, mas o princípio é o mesmo.
...
Então eu escrevo
Portanto, você precisa de um conjunto de valores e gradientes de campo nesses pontos. Você precisa decidir quais pontos circundantes contribuirão para o seu ponto interpolado, bem como os vetores de distância desses pontos para os pontos nos quais interpolamos.
Por exemplo: Se alguém armazena dados representativos dos valores nos vértices da célula, você usa esta equação para encontrar valores do centro da célula etc., tudo dependendo da situação que você possui.
Portanto, isso é baseado na série de Taylor em torno do ponto. Pode-se usar também segundas derivadas para derivar uma expressão mais precisa.
fonte