Tengo un sistema lineal no homogéneo
donde es una matriz real n × n con n ≤ 4 . Se garantiza que el espacio nulo de A es de dimensión cero, por lo que la ecuación tiene un inverso único x = A - 1 b . Dado que el resultado entra en el lado derecho de una EDO, que tengo la intención de resolver utilizando un método adaptativo, es importante que la solución sea suave con respecto a las pequeñas variaciones de los elementos de A y b . Debido a este requisito y la pequeña dimensionalidad, pensé implementar fórmulas explícitas para A - 1 b. Los elementos pueden ser exactamente cero o tomar valores muy diferentes. Mi pregunta es si esto tiene sentido para usted y si hay expresiones estables conocidas para esto. Estoy codificando en C para sistemas x86.
fuente
Respuestas:
Antes de implementar fórmulas explícitas, me haría la pregunta: "¿Vale la pena?":
Mi consejo: use primero la combinación BLAS / LAPACK, vea si funciona, perfile todo el programa, solicite a un estudiante que implemente fórmulas explícitas (lo siento, es sarcástico aquí) y haga una comparación de velocidad y robustez.
fuente
Para estar seguro, probablemente sea mejor asegurarse de que tampoco sea numéricamente deficiente en rango (es decir, no tenga valores singulares pequeños).A
El problema con la regla de Cramer es que sus propiedades de estabilidad son desconocidas, excepto para (que es estable hacia adelante, pero no estable hacia atrás). (Ver Precisión y Estabilidad de Algoritmos Numéricos , 2ª edición, por N. Higham.) No se considera un algoritmo confiable; Se prefiere la eliminación gaussiana con pivote parcial (GEPP).n=2
Esperaría que el problema con el uso de BLAS + LAPACK para llevar a cabo GEPP en una resolución ODE sería cualquier diferencia finita utilizada en un método ODE implícito. Sé que las personas han resuelto programas lineales como parte de una evaluación del lado derecho, y debido a que lo hicieron ingenuamente (solo enchufaron la solución del programa lineal en el lado derecho, llamando a un algoritmo simplex), redujeron en gran medida la precisión de su solución calculada y aumentó considerablemente el tiempo necesario para resolver el problema. Un compañero de laboratorio mío descubrió cómo resolver estos problemas de una manera mucho más eficiente y precisa; Tendré que mirar para ver si su publicación ya ha sido lanzada. Puede tener un problema similar independientemente de si opta por usar GEPP o la Regla de Cramer.
Si hay alguna manera de calcular una matriz analítica jacobiana para su problema, puede hacer eso para ahorrarse algunos dolores de cabeza numéricos. Será más barato de evaluar, y probablemente más preciso, que una aproximación de diferencia finita. Las expresiones para la derivada de la matriz inversa se pueden encontrar aquí si las necesita. La evaluación de la derivada de la matriz inversa parece que tomaría al menos dos o tres soluciones lineales del sistema, pero todas tendrían la misma matriz y diferentes lados a la derecha, por lo que no sería considerablemente más costoso que un solo sistema lineal resolver.
Y si hay alguna forma de comparar su solución calculada con una solución con valores de parámetros conocidos, lo haría, para que pueda diagnosticar si ha encontrado alguno de estos obstáculos numéricos.
fuente
No estoy seguro de que eso pueda ayudar, pero creo que cuando hablas de una solución estable, estás hablando de métodos de aproximación. Cuando calcula cosas explícitas, la estabilidad no tiene sentido. Eso dice que tienes que aceptar una solución aproximada si quieres ganar en estabilidad.
fuente