He examinado el código del simulador de Falstad con cierto detalle. Para los circuitos que consisten solo en componentes lineales como resistencias, interruptores y fuentes de voltaje (cosas como las salidas de compuerta lógica se consideran fuentes de voltaje conectadas a tierra para fines de la simulación) el simulador considera cada nodo del circuito, fuente de voltaje (conectando dos nodos) , o cable (del mismo modo) como definición de una ecuación lineal y una variable, de modo que el número de ecuaciones y el número de variables sean siempre iguales. Para un nodo de circuito, la variable es el voltaje del nodo, y la ecuación calcula la corriente total que fluye a través de él igual a la corriente total inyectada por cualquier fuente de corriente. Para una fuente de voltaje o cable (un cable que se maneja como una fuente de voltaje donde la diferencia de potencial es cero),
Cosas como fuentes de corriente y resistencias no están asociadas con resistencias o variables. En cambio, las fuentes de corriente aumentan la corriente total requerida para un nodo de circuito (recuerde que cada nodo de circuito tiene una ecuación que evalúa la corriente total que fluye hacia adentro y hacia afuera) y la disminuye para el otro. Las resistencias son un poco más complicadas: para la ecuación de cada punto final, la resistencia agrega términos para el voltaje del nodo de cada punto final.
Una resistencia de 100 ohmios que conecta los nodos 1 y 2, por ejemplo, diría que cada aumento de voltaje en el nodo 1 disminuirá la corriente que fluye hacia el nodo 1 en 0.01 amperios y aumentará la corriente que fluye hacia el nodo 2 en una cantidad similar. Del mismo modo, cada aumento de voltios en el nodo 2 aumentaría la corriente que fluye hacia el nodo 1 en 0.01 amperios y disminuiría la corriente que fluye hacia el nodo 2 en una cantidad similar.
Considere un circuito con un suministro de 10 voltios conectando los nodos 1 y 5, y resistencias de 100 ohmios que conectan los nodos 1 y 2, 2 y 3, 2 y 4, y 3 y 4. Suponga además que hay un icono de tierra en el nodo 1. Por lo tanto:
neg ---+-1---R100---2---R100---3---100---4---pos
gnd | |
+---------100--------+
Habría dos "fuentes de voltaje": el cable de tierra y el suministro de 10 voltios (que se consideran ecuación / variable 5 y 6, respectivamente). Las ecuaciones serían así:
-X1*0.01 +X5 -X6 = 0 Node 1
+X1*0.01 -X2*0.01 +X4*0.01 = 0 Node 2
+X2*0.01 -X3*0.01 +X4*0.01 = 0 Node 3
+X2*0.01 -X4*0.01 +X6 = 0 Node 4
-X1*1 = 0 Volts 5 (voltage between 1 and gnd)
-X1*1 +X4*1 = 10 Volts 6 (voltage between 1 and 4)
Este sistema de ecuaciones puede representarse como una matriz NxN más una matriz de N elementos. Cada ecuación está representada por una fila en la matriz, con valores en cada fila que representan los coeficientes de cada variable. El lado derecho de cada ecuación se almacena en una matriz separada. Antes de resolver las ecuaciones, uno sabrá la corriente neta que fluye hacia cada nodo (cero en este caso) y la diferencia de voltaje entre pares de nodos conectados por fuentes de voltaje. Resolver las ecuaciones producirá el voltaje en cada nodo y la corriente que fluye a través de cada fuente de voltaje.
Si el circuito contiene condensadores, cada uno de ellos se considerará como una fuente de voltaje en serie con una resistencia de bajo valor; Después de cada paso de simulación, la fuente de voltaje se ajustará de acuerdo con la cantidad de corriente que fluyó a través de ella. Los inductores se considerarán resistencias de alto valor que alimentan la corriente a una y la eliminan por la otra (la cantidad de corriente se ajusta de acuerdo con el voltaje a través de la resistencia). Tanto para los condensadores como para los inductores, el valor de la resistencia estará controlado por la cantidad de tiempo representada por un paso de simulación.
Los elementos de circuitos más complejos como los transistores se consideran combinaciones de fuentes de voltaje, fuentes de corriente y resistencias. A diferencia de los elementos de circuito más simples que permiten que todo se procese una vez por paso de tiempo de simulación, los elementos como los transistores calculan sus resistencias efectivas, etc. en función de los voltajes y corrientes que están viendo, evalúan todas las ecuaciones resultantes y reevalúan su resistencia en función de los nuevos voltajes y corrientes, reevalúe las ecuaciones, etc. en un esfuerzo por alcanzar un equilibrio donde su resistencia efectiva sea como debería ser para el voltaje y la corriente que el transitor está viendo.
El simulador de Falstad puede ser decentemente rápido para circuitos de tamaño moderado que consisten completamente en elementos "lineales". El tiempo para resolver repetidamente un sistema de ecuaciones es bastante razonable si lo único que cambia son los coeficientes del lado derecho. El tiempo se vuelve mucho más lento si el lado izquierdo cambia (por ejemplo, porque la resistencia efectiva de un transistor sube o baja) porque el sistema tiene que "refactorizar" las ecuaciones. Tener que refactorizar las ecuaciones varias veces por paso de simulación (puede ser necesario con transistores) hace que las cosas sean aún más lentas.
Usar una matriz grande para todo no es un buen enfoque para simulaciones grandes; A pesar de que la matriz será bastante escasa, ocupará un espacio proporcional al cuadrado del número de nodos más las fuentes de voltaje. El tiempo requerido para resolver la matriz en cada paso de simulación será proporcional al cuadrado del tamaño de la matriz si no se requiere refactorizar, o al cubo del tamaño de la matriz si se requiere refactorizar. No obstante, el enfoque tiene cierta elegancia cuando se trata de mostrar la relación entre un circuito y un sistema de ecuaciones lineales.