Tengo un problema de computación numérica de los valores propios de Laplace-Beltrami operador. Yo uso meshfree Funciones de Base Radial (RBF) enfoque para la construcción de la diferenciación de la matriz D. Las pruebas de mi código en simples colectores (por ejemplo, en una unidad de la esfera) muestra que calcula los autovalores de a D a menudo tienen distinto de cero imaginaria, aunque todos ellos deben ser real.
(Para simplificar, me voy a referir a la Kansa RBF método a partir de ahora).
Dado un conjunto de puntos de →x={xi}ni=1 y una función de f nos dicen que D es la diferenciación de la matriz (para el operador de Laplace) si Df(→x)=Δf(→x).
La diferenciación de la matriz se construye como D=B⋅A−1 donde B es la métrica de la matriz para RBF expansión de Δf, e A es la métrica de la matriz para RBF expansión de f. Tanto en A B son simétricas, por lo D también debe ser simétrica. Sin embargo, los complejos autovalores reales de la matriz significa que D no es simétrica, a pesar del hecho de que D está formado por todas las matrices simétricas.
Por lo que entiendo, la simetría sólo podía ser violado cuando se calcula la inversa de la matriz métrica A, especialmente si A es un mal condicionado de la matriz. Mi pregunta es:
¿Cuáles son los métodos para "symmetrizing" diferenciación métrica de las matrices?
Alternativamente,
Cómo deshacerse de la asimetría que se da cuando se calcula numéricamente la inversa de una matriz simétrica y causado por la máquina de error de redondeo?
EDITAR: A continuación es un ejemplo de cómo construir la diferenciación de la matriz D para el operador de Laplace.
Dado: el Dominio Ω en el espacio Euclidiano, el conjunto de puntos de →x={xi}ni=1.
Objetivo: Encontrar numéricamente autovalores del operador de Laplace Δ=∇2 definido en Ω.
La solución consta de tres pasos:
- Construir la diferenciación de la matriz D que actuará como operador de Laplace para cualquier función estimada en un dado (finito) conjunto de puntos de →x.
- Calcular los autovalores de a D.
- Comparar los valores propios de a D con valores propios de la Laplaciano Δ, con lo que la estimación del error.
Nota que los autovalores de a Δ son positivos, por lo tanto, buena diferenciación de la matriz D también tendrá todos los autovalores positivos, por lo tanto, D se symmetric a fin de imitar con precisión la acción de operador Δ sobre las funciones estimada en →x.
Por lo tanto tengo que encontrar una manera de construir la diferenciación de la matriz D y para asegurarse de que es simétrica.
Considere una función de ϕi=ϕi(x)=ϕ(‖ conoce como Función de Base Radial (o RBF) centrado en x_i\in \vec{\mathbf x}. El conjunto \{\phi_i\}_{i=1}^{n} de RBFs centrado en \vec{\mathbf x} puede ser utilizado para aproximar cualquier función de f(x): f(x) \approx \sum_{i=1}^{n} \alpha_i \phi_i(x) = \sum_{i=1}^{n} \alpha_i \phi(\| x_i - x\|) \label{1} \tag{1} Denota el vector de coeficientes de \vec{\boldsymbol{\alpha}} = \{ \alpha_i\}_{i=1}^{n} y un vector de valores def\vec{\mathbf x}\vec{\mathbf{f}} = f\left(\vec{\mathbf x}\right) . Entonces podemos escribir la RBF expansión de f en la matriz de la forma: \label{2}\etiqueta{2} \begin{bmatrix}f\left( x_1 \right)\\ f\left( x_1 \right)\\ \vdots \\ f\left( x_n \right) \end{bmatrix} = \begin{bmatrix} \phi_{1} \left(x_{1}\right) & \phi_{1} \left( x_2 \right) & \cdots & \phi_{1} \left(x_n \right) \\ \phi_{2} \left(x_{1}\right) & \phi_{2} \left( x_2 \right) & \cdots & \phi_{2} \left(x_n \right) \\ \vdots & \vdots & \ddots & \vdots \\ \phi_{n} \left(x_{1}\right) & \phi_{n} \left( x_2 \right) & \cdots & \phi_{n} \left(x_n \right) \end{bmatrix} \begin{bmatrix} \alpha_1 \\ \alpha_2 \\ \vdots \\ \alpha_n\end{bmatrix} \iff \vec{\mathbf{f}} = \Phi \, \vec{\boldsymbol{\alpha}} \implica \vec{\boldsymbol{\alpha}} = \Phi^{-1}\vec{\mathbf{f}}, donde \Phi_{ij} = \phi_i(x_j) = \phi\left(\left\|x_i - x_j \right\| \right).
Aplicar el operador de Laplace a la RBF expansión \eqref{1} de una función de f, obtenemos \Delta \vec{\mathbf{f}} = \Delta\Phi\, \vec{\boldsymbol{\alpha}}, donde \Delta\Phi_{ij} := \Delta\phi_i(x_j) = \Delta \phi\left(\left\|x_i - x_j \right\| \right) . Sustituyendo \vec{\boldsymbol{\alpha}}\eqref{2}, obtenemos \Delta \vec{\mathbf{f}} = \Delta \Phi\cdot \Phi^{-1} \cdot \vec{\mathbf{f}}. Denotando A = \PhiB = \Delta \Phi, escribimos la diferenciación de la matriz: D = \Delta \Phi\cdot\Phi^{-1} = B \cdot A^{-1} \implica D \vec{\mathbf{f}} = \Delta \vec{\mathbf{f}} para cualquier función de f estimado en puntos de \vec{\mathbf{x}}.