Está en la página 1de 8

Universidad de la Costa

CUC
Programación Numérica

Proyecto Programación Numérica


Resolución de circuitos DC por el método de mallas, usando algoritmos en
C++

Por:

Silvio Gómez
Fred Arzuza
Armando Simmonds.

Profesor: Msc. Nicolás Rueda P.

Noviembre 12 de 2016
Contenido
1. INTRODUCCIÓN...................................................................................................................3
2. OBJETIVO............................................................................................................................3
3. MARCO TEÓRICO.................................................................................................................3
4. METODOLOGIA...................................................................................................................4
5. CROOGRAMA DE ACTIVIDADES..........................................................................................4
6. DESARROLLO DEL CODIOG EN C++.....................................................................................4
6.1 Condiciones para el uso del código...............................................................................4
6.2 Algoritmo.......................................................................................................................5
6.3 Código en C++................................................................................................................5
7. CONCLUSIONES...................................................................................................................8
8. REFERENCIAS.......................................................................................................................8
1. INTRODUCCIÓN.

En el análisis de circuitos eléctrico, se presentan una variedad de métodos para resolver


este tipo de problemas, entre los que se encuentran, métodos de nodos, supernodo,
teoremas de superposición, de Thevening, Norton, sustitución, entre otros, y análisis de
mallas, este último será el objeto de estudio, y por medio de su algoritmo, se desarrollara
un código en C++ que permita resolver problemas básicos de hasta tres ecuaciones con
tres incógnitas por medio de determinantes.

2. OBJETIVO.

Diseñar un algoritmo y su respectivo código en C++, para resolver problemas de circuitos


de corriente continua, usando el método del análisis de mallas y las leyes de corriente de
Kirchhoff.

3. MARCO TEÓRICO.

El proyecto está encaminado bajo el análisis de circuitos eléctricos y las leyes de corriente
de Kirchhoff, Un lazo es una trayectoria cerrada que se inicia en un nodo, pasa por un
conjunto de nodos y retorna al nodo inicial sin pasar por ningún nodo más de una vez. Se
dice que un lazo es independiente si contiene al menos una rama que no forma parte de
ningún otro lazo independiente. Los lazos o trayectorias independientes dan por resultado
conjuntos independientes de ecuaciones. Una red con b ramas, n nodos y l lazos
independientes satisfará el teorema fundamental de la topología de redes.

b=n+l−1

La ley de Ohm no es suficiente en sí misma para analizar circuitos. Pero cuando se le une
con las dos leyes de Kirchhoff, hay un conjunto suficiente y eficaz de herramientas para
analizar gran variedad de circuitos eléctricos. Las leyes de Kirchhoff las introdujo en 1847
el físico alemán Gustav Robert Kirchhoff (1824-1887). Se les conoce formalmente como la
ley de la corriente de Kirchhoff (LCK) y la ley de tensión de Kirchhoff (LTK). La primera ley
de Kirchhoff se basa en la ley de la conservación de la carga, de acuerdo con la cual la
suma algebraica de las cargas dentro de un sistema no puede cambiar.

La ley de corriente de Kirchhoff (LCK) establece que la suma algebraica de las corrientes
que entran a un nodo (o frontera cerrada) es de cero.

Matemáticamente, la LCK implica que


N

∑ in=0
n =1

donde N es el número de ramas conectadas al nodo e in es la enésima corriente que entra


al (o sale del) nodo. Por efecto de esta ley, las corrientes que entran a un nodo pueden
considerarse positivas, mientras que las corrientes que salen del nodo llegan a
considerarse negativas, o viceversa.

4. METODOLOGIA.

Se iniciara el proyecto, con un estudio detallado de los postulados y leyes básicas del
análisis de circuitos electicos, como son la Ley de Ohm, y las leyes de Kirchhoff, también se
dará un repaso de los métodos para resolver sistemas de ecuaciones lineales de hasta tres
incógnitas, luego se limitara la clase de problemas a resolver y se creara el algoritmo y
códigos para estos problemas, se seguirá la teoría que se imparte en los libros de
circuitos: Introducción al análisis de circuitos de Robert L. Boylestad, y el libro
Fundamentos de circuitos eléctricos de Matthew N. O. Sadiku.

5. CROOGRAMA DE ACTIVIDADES.

El proyecto está planeado para tener una duración de un mes y medio, por lo que se
espera terminarlo en noviembre de 2016.

Primera fase: la fase inicial del proyecto (15 al 31 de octubre), se reforzarán los
conocimientos en circuitos eléctricos y se investigarán las formas y/o antecedentes que se
tengan para resolver estos problemas por medio de programación numérica.

Segunda fase: en esta fase (01 al 12 de noviembre), se realizará el algoritmo, se crearán


los códigos en C++, y se ejecutara el programa.

6. DESARROLLO DEL CODIOG EN C++.

6.1 Condiciones para el uso del código.

1. Se resuelven circuitos que impliquen 2 y 3 mallas, por lo cual solo se podrán resolver
circuitos lineales de 2 y 3 ecuaciones.

2. Se resuelven los circuitos por el método de mallas, usando el algoritmo de


aproximación de formato.
3. No se pueden resolver circuitos con fuentes independientes, o aquellos donde sea
necesario aplicar supermalla.

6.2 Algoritmo.

1. Asigne una corriente de lazo a cada lazo independiente en el sentido de las manecillas
del reloj.

2. El número de ecuaciones requeridas es igual al número de lazos independientes


cerrados seleccionados. La columna 1 de cada ecuación se forma sumando los valores de
resistencia de los resistores a través de los cuales pasa la corriente de lazo de interés y
multiplicando el resultado por dicha corriente de lazo.

3. Los términos mutuos se restan de la primera columna. Un término mutuo es aquel por
el cual pasa una corriente de lazo adicional. Un término mutuo es simplemente cualquier
elemento resistivo a través del cual pasa una corriente de lazo adicional. Es posible tener
más de un término mutuo si la corriente de lazo de interés tiene un elemento en común
con otra corriente más de lazo. Cada término es el producto del resistor mutuo por la
corriente de lazo que pasa a través del mismo elemento.

4. La columna a la derecha del signo igual es la suma algebraica de las fuentes de voltaje a
través de las cuales pasa la corriente de interés. Se asignan signos positivos a las fuentes
de voltaje cuya polaridad es tal que la corriente de lazo pasa de la terminal negativa a la
positiva. Se asigna un signo negativo a los potenciales para los cuales lo inverso también
funciona.

5. Resuelva las ecuaciones simultáneas resultantes para las corrientes de lazo deseadas.

6.3 Código en C++.


sentido de las manecillas del reloj. " <<
#include<iostream> endl;
using namespace std;
cout << " 2. El numero de
int R1, R2, R3, R4, RM1, RM2, RM3, R5, ecuaciones requeridas es igual al numero
R6, R7, R8, RM4, RM5, RM6, R9, R10, de lazos independientes cerrados
R11, R12, RM7, RM8, RM9, RM10, RM11, seleccionados. " << endl;
RM12, RM13, RM14, RM15, RM16,
RM17, RM18, v1, v2, v3, v4, v5, v6, c1, cout << " 3. Los terminos mutuos
c2, c3, c4, c5, c6, c7, c8, c9; se restan de la primera colunma. Un
termino mutuo es aquel por el cual pasa
una corriente de lazo adicional. " << endl;
int main() {
cout << " 1. Asigne una corriente cout << " 4. La columna a la
de lazo a cada lazo independiente en el derecha del signo igual es la suma
algebraica de las fuentes de voltaje a cin >> v2;
traves de las cuales pasa la corriente de
interes. se asignan signos positivos a las cout << " ingrese el valor de las
fuentes de voltaje cuya polaridad es tal resistencias de la malla i2. " << endl;
que la corriente de lazo pasa de la
terminal negativa a la positiva. se asigna cin >> R5;
un signo negativo a los potenciales para cin >> R6;
los cuales lo inverso tambien funciona. " cin >> R7;
<< endl; cin >> R8;

cout << " 5. Resuelva las cout << " ingrese el valor de las
ecuaciones simultaneas resultantes para resistencias mutuas entre la malla i2 e i1.
las corrientes de lazo deseadas. " << " << endl;
endl;
cin >> RM7;
cout << " ingrese el valor de las cin >> RM8;
resistencias de la malla i1. " << endl; cin >> RM9;

cin >> R1; cout << " ingrese el valor de las


cin >> R2; resistencias mutuas entre la malla i2 e i3.
cin >> R3; " << endl;
cin >> R4;
cin >> RM10;
cout << " ingrese el valor de las cin >> RM11;
resistencias mutuas entre la malla i1 e i2. cin >> RM12;
" << endl;
cout << " ingrese el valor de las
cin >> RM1; fuentes de voltaje para la malla i2. " <<
cin >> RM2; endl;
cin >> RM3;
cin >> v3;
cout << " ingrese el valor de las cin >> v4;
resistencias mutuas entre la malla i1 e i3.
" << endl; cout << " ingrese el valor de las
resistencias de la malla i3. " << endl;
cin >> RM4;
cin >> RM5; cin >> R9;
cin >> RM6; cin >> R10;
cin >> R11;
cout << " ingrese el valor de las cin >> R12;
fuentes de voltaje para la malla i1. " <<
endl; cout << " ingrese el valor de las
resistencias mutuas entre la malla i3 e i2.
cin >> v1; " << endl;
cout << " la ecuacion para la malla
cin >> RM13; i3 es : " << "-" << c9 << "i1" << "-" << c8
cin >> RM14; << "i2" << "+" << c7 << "i3" "=" << vt3 <<
cin >> RM15; endl;

cout << " ingrese el valor de las double det, Mi1, Mi2, Mi3, i1, i2,
resistencias mutuas entre la malla i3 e i1. i3;
" << endl; int n;

cin >> RM16; cout << " ingrese el numero de


cin >> RM17; ecuaciones " << endl,
cin >> RM18; cin >> n;

cout << " ingrese el valor de las if (n = 3) {


fuentes de voltaje para la malla i3. " <<
endl; det = (c1*c4*c7) +
(c2*c6*c9*(-1)) + (c3*c5*c8*(-1)) -
cin >> v5; ((c9*c4*c3) + (c8*c6*c1) + (c7*c5*c2));
cin >> v6; Mi1 = (vt1*c4*c7) +
(c2*c6*vt3) + (c3*vt2*c8) -
int vt1, vt2, vt3; ((vt3*c4*c3*(-1)) + (c8*c6*vt1) +
(c7*vt2*c2*(-1)));
c1 = R1 + R2 + R3 + R4; Mi2 = (c1*vt2*c7) +
c2 = RM1 + RM2 + RM3; (vt1*c6*c9) + (c3*c5*vt3) - ((c9*vt2*c3)
c3 = RM4 + RM5 + RM6; + (vt3*c6*c1*(-1)) + (c7*c5*vt1*(-1)));
vt1 = v1 + v2; Mi3 = (c1*c4*vt3) +
(c2*vt2*c9) + (vt1*c5*c8) -
c4 = R5 + R6 + R7 + R8; ((c9*c4*vt1*(-1)) + (c8*vt2*c1*(-1)) +
c5 = RM7 + RM8 + RM9; (vt3*c5*c2));
c6 = RM10 + RM11 + RM12;
vt2 = v3 + v4; i1 = Mi1 / det;
i2 = Mi2 / det;
c7 = R9 + R10 + R11 + R12; i3 = Mi3 / det;
c8 = RM13 + RM14 + RM15; }
c9 = RM16 + RM17 + RM18;
vt3 = v5 + v6; if (n = 2) {

cout << " la ecuacion para la malla det = (c1*c4) - (c5*c2);


i1 es : " << c1 << "i1" << "-" << c2 << "i2" Mi1 = (vt1*c4) + (c2*vt2);
<< "-" << c3 << "i3" << "=" << vt1 << endl; Mi2 = (c1*vt2) + (c5*vt1);
cout << " la ecuacion para la malla
i2 es : " << "-" << c5 << "i1" << "+" << c4
<< "i2" << "-" << c6 << "i3" << "=" << vt2 i1 = Mi1 / det;
<< endl; i2 = Mi2 / det;
cout << " la corriente i3 es igual a:
} " << i3 << endl;

cout << " la corriente i1 es igual a: system("pause");


" << i1 << endl; }
cout << " la corriente i2 es igual a:
" << i2 << endl;

7. CONCLUSIONES.

Se realiza un código en C++ que es capaz de resolver circuitos eléctricos por el método de
mallas usando el algoritmo de aproximación de formato, estos problemas deben tener
ciertas condiciones para que puedan ser resueltos por el programa.

El programa por sí solo no podrá dar resultados satisfactorios, es una herramienta para
ahorrar cálculos, pero el usuario final, deberá manejar la temática y tener los conceptos
claros sobre análisis de circuitos, ya que la manera como se abarquen la resolución de los
problemas definirá la efectividad del programa.

8. REFERENCIAS.

[1] C. K. Alexander, M. N. O. Sadiku. Leyes Básicas, Cap 2. Fundamentos de Circuitos


Eléctricos. Tercera Edición. McGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V.

También podría gustarte