¿Es esencial el escalado variable al resolver algunos problemas de PDE numéricamente?


15

En la simulación de semiconductores, es común que las ecuaciones se escalen para que tengan valores normalizados. Por ejemplo, en casos extremos, la densidad de electrones en semiconductores puede variar en más de 18 órdenes de magnitud, y el campo eléctrico puede cambiar de forma, en más de 6 (o más) órdenes de magnitud.

Sin embargo, los documentos nunca dan una razón para hacerlo. Personalmente, estoy contento con las ecuaciones en unidades reales, ¿hay alguna ventaja numérica para hacer esto? ¿Es imposible de otra manera? Pensé con doble precisión que habría suficientes dígitos para hacer frente a estas fluctuaciones.


Ambas respuestas son muy útiles, muchas gracias!


1
"puede variar más de 18 órdenes de magnitud", y si considera cuántos dígitos se retienen en doble precisión, verá si "con doble precisión habría suficientes dígitos para hacer frente a estas fluctuaciones" es realmente cierto ...
JM

1
Y el verdadero problema comienza cuando usted alimenta a estos números en un algoritmo numérico: Toma la plaza, y de repente tiene 36 órdenes de magnitud de diferencia ...
Cristiano Clason

Respuestas:


9

Resolver una PDE (lineal) consiste en discretizar la ecuación para producir un sistema lineal, que luego se resuelve mediante un solucionador lineal cuya convergencia (tasa) depende del número de condición de la matriz. Escalar las variables a menudo reduce este número de condición, mejorando así la convergencia. (Esto básicamente equivale a aplicar un preacondicionador diagonal, ver Precisión y estabilidad de los algoritmos numéricos de Nicholas Higham ).

La resolución de PDE no lineales además requiere un método para resolver ecuaciones no lineales como el método de Newton, donde la escala también puede influir en la convergencia.

Como normalizar todo generalmente requiere muy poco esfuerzo, casi siempre es una buena idea.


Estoy seguro de que @ArnoldNeumaier tiene más que decir sobre este tema.
Christian Clason

El número de condición de las matrices que estoy usando (variables sin escala) es ~ 1.25 . ¿Esto parece razonable? Esto se calcula utilizando el método de 2 normas ( docs.scipy.org/doc/numpy/reference/generated/… ).
boyfarrell

κ2=1

1
@boyfarrell: rutinariamente trabajo con números de condición tan grandes como 10 ^ 7, con resultados aceptables. Sin embargo, no aceptaría números de condición mucho más altos que 10 ^ 9.
jvriesem

9

εΔu+u=0 on Ω,u=1 on Ω.

Dicho esto, no hay escala de variables o dominios que elimine esta dificultad.

uα

α2Δu=fα on αΩ
αu1
Δu=f on Ω.
uα(x):=u1(x/α)αα

44
Y los parámetros restantes deben ser esenciales para determinar el comportamiento cualitativo de la solución; es por eso que el número de Reynolds es tan importante en la dinámica de fluidos. Este proceso se llama no dimensionalización .
Christian Clason

por supuesto, la búsqueda de tales equivalencias de parámetros es esencialmente el problema de encontrar grupos de simetría de la PDE, un problema que es difícil en general
lurscher

2

Tratar con números de coma flotante puede ser un truco con respecto a la resta de números pequeños de números más grandes, así como con muchos otros aspectos. Recomendaría leer las publicaciones de blog de John D. Cooks sobre ellos, como

Anatomía de un número de coma flotante

así como de Oracle

Lo que todo informático debe saber sobre la aritmética de coma flotante

También ciertos algoritmos numéricos para la minimización o maximización requieren normalización para la estabilidad numérica.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.