Según la respuesta aquí , un número de condición grande (para la resolución lineal del sistema) disminuye el número garantizado de dígitos correctos en la solución de coma flotante. Las matrices de diferenciación de orden superior en los métodos pseudoespectrales suelen estar muy mal condicionadas. ¿Por qué es entonces que siguen siendo métodos muy precisos?
Entiendo que la baja precisión que proviene de las matrices mal acondicionadas es solo un valor garantizado , pero aún así me pregunto por qué las matrices mal acondicionadas se resuelven con precisión por métodos directos en la práctica, por ejemplo, las LCOL
columnas de la Tabla 3.1 en la página 11 de Wang et al., MÉTODO DE COLOCACIÓN BIEN CONDICIONADO UTILIZANDO UNA MATRIZ DE INTEGRACIÓN PSEUDOSPECTRAL , SIAM J. Sci. Comput., 36 (3) .
fuente
Respuestas:
Agregado después de mi respuesta inicial:
Ahora me parece que el autor del artículo al que se hace referencia está dando números de condición (aparentemente números de condición de 2 normas pero posiblemente números de condición de norma infinita) en la tabla al tiempo que proporciona errores absolutos máximos en lugar de errores relativos normativos o errores relativos máximos relativos a elementos ( estas son todas medidas diferentes.) Tenga en cuenta que el error relativo máximo por elemento no es lo mismo que el error relativo de la norma infinita. Además, los errores en la tabla son relativos a la solución exacta al problema del valor límite original de la ecuación diferencial más que al sistema lineal de ecuaciones discretizado. Por lo tanto, la información proporcionada en el documento realmente no es adecuada para su uso con el error vinculado en función del número de condición.
Sin embargo, en mi réplica de los cálculos, veo situaciones en las que el error de la norma de infinito relativo (o error relativo de dos normas) es sustancialmente menor que el límite establecido por el número de condición de norma de infinito (número de condición de 2 normas respectivamente). A veces solo tienes suerte.
Utilicé el paquete DMSUITE MATLAB y resolví el problema de ejemplo de este artículo utilizando el método pseudoespecífico con polinomios de Chebyshev. Mis números de condición y mis errores absolutos máximos fueron similares a los reportados en el documento.
También vi errores relativos a la norma que fueron algo mejores de lo que cabría esperar según el número de condición. Por ejemplo, en el problema de ejemplo con , usando N = 1024 , obtengoϵ=0.01 N=1024
cond (A, 2) = 7.9e + 8
cond (A, inf) = 7.8e + 8
norma (u-uexact, 2) / norma (uexact, 2) = 3.1e-12
norma (u-uexact, inf) / norma (uexact, inf) = 2.7e-12
Parece que la solución es buena para aproximadamente 11-12 dígitos, mientras que el número de condición es del orden de 1e8.
Sin embargo, la situación con errores de elementos sabios es más interesante.
max (abs (u-uexact)) = 2.7e-12
Eso todavía se ve bien.
max (abs ((u-uexact) ./ uexact) = 6.1e + 9
Wow: hay un error relativo muy grande en al menos un componente de la solución.
¿Que pasó? La solución exacta de esta ecuación tiene componentes que son pequeños (por ejemplo, 1.9e-22) mientras que la solución aproximada toca fondo con un valor mucho mayor de 9e-14. Esto está oculto por la medida de error relativo de la norma (ya sea la norma 2 o la norma de infinito) y solo se hace visible cuando se miran los errores relativos de elementos y se toma el máximo.
Mi respuesta original a continuación explica por qué puede obtener un error relativo de la norma en la solución que es menor que el límite dado por el número de condición.
Como ha notado en la pregunta, el número de condición, , de una matriz no singular da un error relativo en el peor de los casos vinculado a la solución de un sistema perturbado de ecuaciones. Es decir, si resolvemos A ( x + Δ x ) = b + Δ b exactamente y resolvemos A x = b exactamente, entoncesκ(A) A(x+Δx)=b+Δb Ax=b
Los números de condición se pueden calcular con respecto a una variedad de normas, pero a menudo se usa el número de condición de dos normas, y ese es el número de condición utilizado en el documento al que se refiere.
El error del peor caso se produce cuando es un vector singular izquierda de A correspondiente al valor singular más pequeño de A . El mejor de los casos se produce cuando Δ b es un vector singular izquierda de A correspondiente al valor singular más grande de A . Cuando Δ b es aleatorio, debe observar las proyecciones de Δ b en todos los vectores singulares izquierdos de A y los valores singulares correspondientes. Dependiendo del espectro de A , las cosas pueden ir muy mal o muy bien.Δb A A Δb A A Δb Δb A A
Considere dos matrices , ambas con el número de condición de 2 normas 1.0 × 10 10 . La primera matriz tiene los valores singulares 1 , 1 × 10 - 10 , … , 1 × 10 - 10 . La segunda matriz tiene valores singulares 1 , 1 , ... , 1 , 1 × 10 - 10 .A 1.0×1010 1 1×10−10 … 1×10−10 1 1 … 1 1×10−10
En el primer caso, es poco probable que una perturbación aleatoria esté en la dirección del primer vector singular izquierdo, y es más probable que esté cerca de uno de los vectores singulares con valor singular . Por lo tanto, el cambio relativo en la solución es probable que sea muy grande. En el segundo caso, casi cualquier perturbación estará cerca en dirección a un vector singular con valor singular 1 , y el cambio relativo en la solución será pequeño.1×10−10 1
PD (agregado más tarde después de regresar de la clase de yoga ...)
La fórmula para la solución de esAΔx=Δb
Por el teorema de Pitágoras,
Si mantenemos , entonces esta suma se maximiza cuando Δ b = U n y se minimiza cuando Δ b = U 1 .∥Δb∥2=1 Δb=Un Δb=U1
En la situación considerada aquí, es el resultado de errores de redondeo aleatorio, por lo que los valores de U T i Δ b deben ser aproximadamente de la misma magnitud. Los términos con valores más pequeños de σ i contribuirán mucho al error, mientras que los términos con valores más grandes de σ i no contribuirán mucho. Dependiendo del espectro, esto podría ser mucho más pequeño que el peor de los casos.Δb UTiΔb σi σi
fuente
?getrs
tl; dr Informaron un número de condición, no necesariamente el número de condición correcto para la matriz, porque hay una diferencia.
Esto es específico de la matriz y del vector del lado derecho. Si nos fijamos en la documentación
*getrs
, dice que el error de reenvío es Aquícond(A,x)no es exactamente el número de condición habitualκ∞(A), sino más bien cond(A,x)=‖| A - 1Para su ejemplo, tomé un operador diferencial pseudoespectral para un problema similar con , y de hecho hay una gran diferencia entre ‖ | A - 1 | El | A | ‖ Y κ ∞ ( A ) , calculé 7 × 10 3 y 2.6 × 10 7n=128 ∥|A−1||A|∥ κ∞(A) 7×103 2.6×107 , que es suficiente para explicar la observación de que esto sucede para todos los lados derechos, porque los órdenes de magnitud coinciden aproximadamente con lo que se ve en la Tabla 3.1 (3-4 órdenes de mejores errores). Esto no funciona cuando intento la misma por sólo una matriz mal condicionado al azar, por lo que tiene que ser una propiedad de .A
Un ejemplo explícito para el que los dos números de condición no coinciden, que tomé de Higham (7.17, p.124), debido a Kahan es Otro ejemplo que encontré es solo la matriz de Vandermonde simpleconbaleatorio. Paséy algunas otras matrices mal acondicionadas también producen este tipo de resultado, comoy.
[1:10]
MatrixDepot.jl
triw
moler
Esencialmente, lo que está sucediendo es que cuando analiza la estabilidad de resolver sistemas lineales con respecto a las perturbaciones, primero debe especificar qué perturbaciones está considerando. Al resolver sistemas lineales con LAPACK, este error considera las perturbaciones de componentes en , pero no las perturbaciones en b . Por lo tanto, esto es diferente de lo habitual κ ( A ) = ‖ A - 1 ‖ ‖ A ‖ , que considera las perturbaciones normales en A y b .A b κ(A)=∥A−1∥∥A∥ A b
?getrs
(A + E)x = b
Caso promedio (casi 9 órdenes de magnitud mejor error):
fuente