como sugiere el título, estoy tratando de calcular la integral de una función compacta (polinomio quíntico de Wendland) en un triángulo. Tenga en cuenta que el centro de la función está en algún lugar del espacio tridimensional. Integro esta función en un triángulo arbitrario, pero pequeño ( ) Actualmente estoy usando la integración descrita por Dunavant, 1985 (p = 19).
Sin embargo, parece que estas reglas de cuadratura no son adecuadas para problemas con soporte compacto. Esto se ve respaldado por el hecho de que cuando integro (una función que es 1 dentro del círculo de radio 1) en un plano que se discretiza usando triángulos, mis resultados (normalizados) están entre 1.001 y 0.897.
Entonces mi pregunta es, ¿existe una regla de cuadratura especializada para este tipo de problema? ¿Funcionaría mejor una regla de integración compuesta de orden inferior?
Desafortunadamente, esta rutina es realmente crítica en mi código, por lo que la precisión es crucial. Por otro lado, necesito hacer esta integración "un par de veces" para un solo paso de tiempo, por lo que el gasto computacional no debería ser demasiado alto. La paralelización no es un problema, ya que ejecutaré la integración en serie.
Gracias de antemano por sus respuestas.
EDITAR: el polinomio quintico de Wendland viene dado por con r0R3
EDIT2: Si es el triángulo bidimensional, entonces quiero calcular con . Entonces en nunca será menor que 0. Tenga en cuenta que la integral es una integral de superficie sobre una superficie 2-D en∫ Δ ω ( r ) d r ω ( r ) = W ( ‖ r - r 0 ‖qWR3
EDITAR3: Tengo una solución analítica para el problema 1-D (línea). También es posible calcular uno para 2-D (triángulo).
fuente
Respuestas:
Dado que la función es suave dentro de , pero no de grado fijo (en el plano, es decir), sugeriría usar un esquema adaptativo simple, por ejemplo, la regla trapezoidal con el método de Romberg , en ambas dimensiones.q≤2
Es decir, si el triángulo es definida por los vértices , y , y usted tiene una rutina de la que se integra a lo largo de la línea de a , se puede hacer lo siguiente (en notación Matlab):y z ∈ R 3x y z∈R3
romb(f,a,b)
f
a
b
En
romb
, no use un número fijo de puntos, pero siga creciendo la tabla hasta que la diferencia entre dos diagonales sucesivas esté por debajo de su tolerancia requerida. Como su función es fluida, esta debería ser una buena estimación de error.Si partes del triángulo están fuera del dominio de , puede intentar ajustar los límites de integración en el código anterior en consecuencia.W(q)
Puede que esta no sea la forma más eficiente desde el punto de vista computacional de resolver su problema, pero la adaptabilidad le dará mucha más robustez que una regla de grado fijo.
fuente
Para una buena visión general de las reglas de cubature, vea "R. Cools, An Encyclopaedia of Cubature Formulas J. Complexity, 19: 445-453, 2003". El uso de una regla fija puede darle la ventaja de que algunas reglas integran polinomios exactamente (como lo hace la cuadratura gaussiana en una dimensión).
Cools es también uno de los principales autores de CUBPACK , un paquete de software para cubicación numérica.
fuente
Las reglas de integración suponen que la función está localmente bien aproximada por un polinomio de bajo grado. Su problema no tiene nada que ver con el soporte compacto. Las funciones de base radial con soporte compacto son suaves en el límite de soporte, y las reglas de cuadratura hasta el orden de suavidad se pueden usar sin problemas. (Las reglas de orden superior no ayudan; por lo tanto, probablemente no debería usar una regla que integre polinomios de grado 5 exactamente).
En su caso, la inexactitud proviene del hecho de que la suposición de buena aproximación polinómica falla en su caso para triángulos cerca de , incluso cuando no contienen .r 0r0 r0
q q r r → r 0 r rW es suave como una función de , pero es una función no suave de , con un gradiente que se vuelve infinito en el límite . La integración está sobre , y la función compuesta es una función no suave de .q q r r→r0 r r
Si el triángulo no contiene , la función es pero esto no ayuda ya que la derivada más alta crece muy rápidamente cerca de , y el error de un método de alto orden es proporcional a una derivada de alto orden, por lo tanto muy grande !C i n f r 0r0 Cinf r0
El remedio simple es dividir cada triángulo T en un número N_T de sub-triángulos. Puede tomar lejos de y cerca de . Puede averiguar sin conexión qué tan grande debe ser para los triángulos de un diámetro y distancia dados de para alcanzar la precisión deseada. Además, solo debe usar fórmulas de bajo orden cerca de .r 0 N T ≫ 1 r 0 N T r 0 r 0NT=1 r0 NT≫1 r0 NT r0 r0
A medida que se integra sobre un triángulo, pero es tridimensional, el triángulo aparentemente está en .R 3r0 R3
Por lo tanto, un remedio más rápido tabularía la integral para como una función de las coordenadas del triángulo (normalizado al rotarlo en un plano bidimensional de modo que un vértice se encuentre en el eje y reflejándolo de tal manera que un segundo vértice se encuentra por encima de él). Esta tabulación debe ser suficientemente detallada para que una interpolación lineal o cuadrática sea lo suficientemente precisa. Pero puede usar el método lento descrito primero para crear esta tabla.x y xr0=0 xy x
Otra forma de deshacerse del problema es utilizar una función de base radial con soporte compacto que sea un polinomio en lugar de . Esto es suave en todas partes y fácil de integrar. qq2 q
fuente