Según comentaba en la introducción, el estudio por ordenador de un circuito se realiza por medio del análisis numérico de un modelo matemático de dicho circuito. La representación matemática del circuito es por tanto la primera etapa en la tarea de análisis.
El circuito físico es una interconexión de componentes, y su modelo matemático es un sistema de ecuaciones. La solución de este sistema simula las características eléctricas reales del circuito.
Todos los modelos escogidos en ANALOGIA.EXE son ideales, pero en general en la simulación de circuitos, se modelan los elementos reales como un conjunto de elementos ideales (por ejemplo en PSpice los modelos son afectados por las variaciones de temperatura, tensión, corriente, etc.). En ANALOGIA.EXE vamos a considerar el caso más sencillo en análisis transitorio: circuitos lineales compuestos por elementos ideales.
Para la representación matemática del esquema eléctrico del circuito, y comprender la forma en que se expresan las ecuaciones de Kirchoff matricialmente, vamos a ver unas pocas definiciones de teoría de grafos:
- 1) Grafo de un circuito: Llamamos grafo de un circuito al esquema obtenido reemplazando cada una de las ramas del circuito por una línea y manteniendo la estructura de las conexiones.

2) Rama de un grafo: Para el análisis que vamos a realizar, consideraremos una rama (línea) por cada componente del circuito, aunque se encuentren en serie.
3) Nudo de un grafo: Llamamos nudo de un grafo a la intersección de dos o más ramas del grafo.
4) Incidencia: Una rama es incidente en un nudo si ese nudo es una extremidad de la rama considerada.
5) Grado de un nudo: El grado de un nudo será el número de ramas incidentes en ese nudo.
6) Camino en un grafo: Un camino entre dos nudos i y j está constituido por una sucesión de ramas del grafo, a través de las cuales se unen los dos nudos.
7) Malla de un grafo: Es un camino del grafo que une un nudo consigo mismo.
8) Arbol de un grafo: Es un conjunto de ramas del grafo que contiene a todos los nudos y no forma ninguna malla. Veamos un ejemplo:

9) Eslabones y ramas de árbol: Las ramas del grafo que pertenecen al árbol se llaman ramas de árbol, y las restantes son eslabones, de forma que si se añade un eslabón al árbol se forma una malla.
10) Grafo orientado: Un grafo es orientado cuando a cada una de sus ramas se le atribuye un sentido, elegido de forma arbitraria. Este sentido representará la corriente de cada rama.
En un grafo se verifica que si n es el número de nudos, a el número de ramas de árbol, b el de ramas del grafo y e el de eslabones:
El número mínimo de variables independientes tomando la variable como corriente será igual al número de eslabones, es decir r-n+1.a=n-1
l=r-a=r-n+1
El número mínimo de variables independientes tomando la variable como tensión será igual al número de ramas del árbol, es decir, el número de nudos menos uno.
Los lemas de Kirchoff se pueden escribir en forma matricial como:

Donde [Ir] y [Vr] son matrices columna de r filas. [A] y [B] tienen por dimensiones r*a y r*1 respectivamente, y sus elementos sólo son +1, -1 y 0. Además se demuestra que:
La utilización del concepto de árbol lleva a clasificar las corrientes y tensiones en: las a pertenecientes a ramas de un árbol y l de enlace. Las corrientes de las ramas del árbol se pueden escribir como función de las corrientes de los enlaces (n-1 ecuaciones), y las tensiones entre los extremos de una rama de enlace se pueden escribir en función de las tensiones en las ramas del árbol (r-n+1 ecuaciones). Por tanto el sistema A se puede escribir ahora como:

Donde
,
son matrices unidad de dimensiones (n-1)*(n-1) y (r-n+1)*(r-n+1) respectivamente; Ia, I1, V1, Va son submatrices de [Ir] y [Vr] que contienen corrientes y tensiones de árbol o de ramas de enlace. F tiene por dimensiones a*1.
- Al aplicar:
obtenemos que:
Con lo cual, a partir del sistema B se llega a:
la forma matricial de las r ecuaciones de Kirchoff.La simulación de un circuito requiere, como primera etapa la representación del circuito físico por un sistema de ecuaciones que satisfacen los lemas de Kirchoff. Vamos a ver algunos de los diferentes algoritmos para formular dichas ecuaciones, y veremos en detalle el denominado "análisis nodal" que es el método utilizado en ANALOGIA.EXE por ser el más apropiado. En general, los algoritmos más utilizados son el análisis nodal, el análisis híbrido y el de la matriz general semivacía.
Las diferencias básicas entre los distintos métodos está en las distintas incógnitas que se eligen para formular el sistema de ecuaciones y en ocasiones unos son modificaciones de otros.
- 1) Análisis por conjuntos de corte: En este método se utilizan las tensiones de las n-1 ramas de un árbol como las incógnitas del circuito. Por aplicarse la 1ª ley de Kirchoff, en principio no se permiten fuentes de tensión, solo generadores de corriente independientes y controlados por tensión.
2) Análisis por bucles: Es el dual del anterior. Las r-n+1 corrientes de las ramas de enlace se toman como las variables desconocidas, y nos restringimos a generadores de tensión independientes y controlados por corriente.
3) Análisis nodal: Es el usado en ANALOGIA.EXE y en la gran mayoría de los programas de análisis por la facilidad con que se plantean las ecuaciones. Se puede considerar como un caso particular del análisis por conjuntos de corte, y lo estudiaremos con detalle a continuación.
4) Análisis nodal modificado (permite generadores de tensión): En el análisis nodal se permiten únicamente generadores de corriente en los circuitos. Para considerar también los generadores de tensión, se aplica este método. En ANALOGIA.EXE no ha hecho falta usar este método, ya que los únicos generadores presentes en los circuitos de movilidad son los de corriente, a partir de los cuales se analiza el circuito. Este método es usado por SPICE, BIAS-D y M-SINC por su mínimo esfuerzo de cálculo.
5) Métodos híbridos de análisis: formulan las ecuaciones del circuito tomando como incógnitas tensiones y corrientes de ramas. Todos ellos llevan consigo la elección de un árbol de la red y las ecuaciones se deducen del análisis por conjuntos de corte y por bucles. El análisis mediante variables de estado es uno de estos métodos, usado en los programas CIRCUS y SCEPTRE.
6) Análisis por matriz general semi-vacia: consiste en tomar como incógnitas todas las variables del circuito y formar un sistema de ecuaciones con muchos coeficientes nulos, que se resuelve sin simplificaciones previas.
Es el análisis usado por ANALOGIA.EXE y en la mayoría de los programas (en general su versión modificada). Aparte de la facilidad con que se formulan las ecuaciones, lo que implica un esfuerzo de cálculo mínimo, vamos a ver que es el complemento perfecto a la analogía de movilidad, ya que admite únicamente elementos pasivos y generadores de corriente.
Se puede considerar un caso particular del análisis por conjuntos de corte, ya que en vez de tomar como variables independientes (desconocidas) las tensiones en las ramas de un árbol, se toman los potenciales de n-1 nudos con respecto al potencial del nudo 0 (u otro) que se toma como referencia. Las tensiones de rama y los potenciales en los nudos se relacionan por la matriz de incidencia nodal.
Si tomamos el siguiente convenio de signos y definición de tensiones y corrientes en una rama generalizada:

La rama generalizada consta como se ve en la figura de una admitancia pasiva Ybb (o un generador de corriente dependiente), un generador independiente de tensión Eb y un generador de corriente Ib. Vamos a estudiar este caso genérico, aunque en ANALOGIA.EXE no se analicen nunca circuitos con generadores independientes de tensión (Eb) al analizarse la analogía de movilidad.
Las ecuaciones básicas de esta rama (rama "b") serán
eb = Vb - Eb
ib = -Ib + jb = -Ib + Ybb(eb + Eb), ó
ib = -Ib + gmVbl = Ib + gm(ebl + Ebl)
(Sistema A)
Siendo m el número de ramas y n el número de nudos, y considerando el nudo 0 como nudo de referencia (masa).
Definiremos los siguientes vectores (matrices de una sola columna):
J = Vector de corrientes de rama. Tamaño m*1.
Igen= Vector de generadores de corriente. Tamaño m*1.
Egen= Vector de generadores de tensión. Tamaño m*1. En nuestro caso, este vector es nulo, al ser el sistema a analizar de movilidad, pero vamos a estudiar el caso general que podría incluir generadores de tensión.
eb = Vector de tensiones de rama. Tamaño m*1.
Vn = Vector de tensiones de nudo. Tamaño n*1.
Ib = Vector de corrientes totales de rama. Tamaño m*1.
Definiremos las siguiente matrices:
[A] = Matriz de incidencia. Tamaño n*m.
[Yb]= Matriz de admitancias de rama. Tamaño m*m.
[gm]= Matriz de conductancias de los generadores de corriente controlados por tensiones de rama. Tamaño m*m.
Generalizando las ecuaciones del sistema A obtenemos:
Aplicando la segunda ley de Kirchoff:
Siendo [A] la matriz reducida de incidencia, cuyos elementos
se determinan de la siguiente forma:
= 0 si la rama j no está conectada al nudo i.
= +1 si la corriente de la rama j sale el nudo i.
= -1 si la corriente de la rama j entra en el nudo i.
La fila del nudo de referencia (que suele ser el 0 por facilidad, aunque podría ser otro) no se considera.
Multiplicando la ecuación B por [A], obtenemos:
[A]Ib = 0 = [A][Yb]eb + [A][gm]eb + [A][Yb]Egen +
+ [A][gm]Egen - [A]Igen
de donde se deduce que:
[A][Ib+gm]eb = -[A][Yb]Egen + [A]Igen - [A][gm]Egen
teniendo en cuenta que: eb=
Vn obtenemos
[A][Y]Vn = -[A][Y]Egen + [A]Igen
donde hemos sustituido [Yb + gm] por [Y].
Llamamos por fin matriz de admitancia nodal reducida (de tamaño n*n) a [Yn], que es:
De esta forma, obtenemos el conjunto de ecuaciones nodales del circuito:

La resolución del problema se reduce a calcular la solución del sistema:
Siendo Ieq = -[A]*([Y]Egen-Igen) el vector de generadores de corriente equivalentes. En el caso particular de ANALOGIA.EXE se cumple que:
ya que Egen es cero al ser todos los generadores del circuito de corriente, pues se llegó a él a través de la analogía de movilidad.
El análisis nodal puede parecer complicado en teoría, pero con un ejemplo se aclararán los conceptos que son bastante simples.
Sea el siguiente circuito eléctrico de movilidad:

Lo primero que vamos a hacer es numerar los nudos (en verde) del N0 a N2, y las ramas de Ra1 a Ra3 (en rojo). En el análisis nodal contamos como nudo la unión entre dos o más elementos, de forma que entre R2 y R3 existe un nudo.
Como hay tres nudos, y el nudo 0 no se cuenta por ser el de referencia (masa), tenemos que n=2.
Como hay cuatro ramas y la de los generadores no las contamos, tenemos que m=3.
Trataremos de obtener las ecuaciones de Kirchoff en forma matricial:
- Donde [Yn] es la matriz nodal de admitancias reducida.
Donde Vn es el vector de tensiones en los nudos.
Donde Ieq es el vector de generadores independientes.
- 1). Construímos la matriz de incidencia [A], (n*m):
Donde 1 -> La corriente de la rama (según los sentidos impuestos arbitrariamente en la figura) de la rama sale del nudo.
Donde -1-> La corriente de la rama (según los sentidos impuestos arbitrariamente en la figura) de la rama entra en el nudo.

- 2). Construímos la matriz de admitancias [Y] (m*m):

- 3). Construímos la matriz de admitancias nodal reducida (n*n):

Recordemos que la matriz traspuesta se ha obtenido intercambiando filas por columnas.



- 4).Construímos la forma matricial de las ecuaciones de Kirchoff:

Donde como vemos el vector Vn refleja las tensiones en los nudos (incógnitas), mientras que el vector In refleja los generadores de corrientes unidos al nudo (positivo si entran en el nudo, y negativo si salen del nudo).
Si multiplicamos las matrices anteriores, vemos que efectivamente resultan las ecuaciones de Kirchoff:
(1/R1 + 1/R2)V1 - (1/R2)V2 = I0
(-1/R2)V1 + (1/R2 + 1/R3)V2= 0
Como acabamos de ver, el cálculo de la matriz de admitancias nodal reducida es mecánico pero costoso de realizar. Felizmente hay una manera más simple de obtenerla directamente por simple observación del circuito, lo que redundará en una mayor sencillez del código y una mayor rapidez en la ejecución.
El proceso simplificado para el cálculo de [Yn] es:
- Yii en [Yn] representa la suma de todas las admitancias conectadas al nudo i. De esta forma creamos la diagonal de la matriz. Por ejemplo en la matriz nodal de admitancias anterior podemos observar que el elemento de la fila 1, columna 1 es 1/R1+1/R2, ya que efectivamente esas admitancias están conectadas al nudo 1.
- Yij en [Yn] representa el negativo de la suma de todas las admitancias conectadas entre el nudo i y el nudo j. Por tanto, la matriz [Yn] es siempre simétrica puesto que Yij=Yji. Por ejemplo en la matriz nodal de admitancias anterior podemos observar que el elemento de la fila 1, columna 2 es -1/R2, ya que efectivamente entre los nudos 1 y 2 se encuentra una admitancia de valor 1/R2.
Este método directo es el que usa ANALOGIA.EXE para obtener la matriz nodal de admitancias reducida de la forma más rápida posible.
Si se observa el código fuente de ANALOGIA.EXE, en particular las rutinas de análisis del circuito, vemos que aparte del método general de análisis nodal que hemos visto, hace una distinción si el circuito tiene un único nudo aparte del de masa (véase el procedimiento GoAnalisisTemp de la unit u_elect).
Si nos remitimos al circuito del ejemplo anterior, y le quitamos la resistencia R2, nos quedará el siguiente circuito:

Según el método reducido que acabamos de ver, la matriz nodal de admitancias tendrá un solo elemento, puesto que tiene un tamaño de n*n, y n=1 (el único nudo aparte del de masa). Si construimos la matriz observando que su único elemento forma también el primer elemento de la diagonal Y11, nos queda:
Lo que efectivamente es cierto, puesto que las admitancias se encuentran en paralelo (si el circuito tiene un solo nudo, todas las admitancias de cualquier circuito se encuentran siempre en paralelo).
El problema es que si tratamos de resolver este "sistema" de ecuaciones (de una sola ecuación) por el método de Gauss que empleamos para resolver los sistemas de ecuaciones de Kirchoff, se produce un fallo en la rutina que resuelve el sistema (función Gauss de la unit U_Math).
La forma más fácil de resolver el problema es detectar los circuitos con un solo nudo, y convertir el circuito en un circuito con una sola admitancia (el paralelo de todas las admitancias), y un solo generador de corriente (la suma de todos los generadores). De esta forma podemos obtener la tensión del único nudo V1:

lo que aplicado a nuestro ejemplo resulta:

Una vez hallada la tensión en el nudo, la corriente por cada elemento del circuito se puede calcular a través de la ley de Ohm: Ii=V1/Ri
El análisis de circuitos con un solo nudo que contienen condensadores y bobinas no nos crea ningún problema, puesto que como cada condensador o bobina se sustituirá por una pareja generador-resistencia en paralelo, todos los elementos seguirán estando en paralelo y el procedimiento de análisis no cambia.




