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 $\vec{\mathbf x} = \left\{x _i \right\}_{i=1}^{n}$ y una función de $f$ nos dicen que $D$ es la diferenciación de la matriz (para el operador de Laplace) si $D \,f\left(\vec{\mathbf x} \right) = \Delta f\left(\vec{\mathbf x} \right) $.
La diferenciación de la matriz se construye como $D = B\cdot A^{-1}$ donde $B$ es la métrica de la matriz para RBF expansión de $\Delta 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 $\Omega$ en el espacio Euclidiano, el conjunto de puntos de $\vec{\mathbf x} = \left\{x _i \right\}_{i=1}^{n}$.
Objetivo: Encontrar numéricamente autovalores del operador de Laplace $\Delta = \nabla ^2$ definido en $\Omega$.
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 $\vec{\mathbf x}$.
- Calcular los autovalores de a $D$.
- Comparar los valores propios de a $D$ con valores propios de la Laplaciano $\Delta$, con lo que la estimación del error.
Nota que los autovalores de a $\Delta$ 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 $\Delta$ sobre las funciones estimada en $\vec{\mathbf 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 $\phi_i = \phi_i(x) = \phi(\| x_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 de$f$$\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 = \Phi$$B = \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}}$.