1 UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE TECNOLOGÍA PROGRAMA DE TECNOLOGÍA ELÉCTRICA MATERIA: PROGRAMACIÓN MATLAB TALLER No.4 Taller de Sentencias, Circuitos y Ecuaciones simultáneas Sentencias 1. Programación con MATLAB Un programa escrito en MATLAB admite la mayoría de las estructuras de programación al uso y su sintaxis es bastante estándar. En los siguientes apartados se muestra la sintaxis de algunas de estas estructuras (if, for, while,...). 1.1 La condición “if else” Una de las operaciones más habituales en programación es la ejecución de unos determinados comandos si se cumple una determinada condición lógica, es lo que se conoce como bifurcaciones. Para ello se emplea la orden “if...end” de la siguiente forma: Solución a la raíz cuadrática: clc disp('determine las raíces del polinomio ax^2+bx+c = 0,') disp('ingrese los coeficientes de: ') a=input('el coeficiente de x^2: '); b=input('el coeficiente de x: '); c=input('el termino independiente: '); Delta = b^2-4*a*c; if Delta<0 Delta*-1; [x1]=[(-b+sqrt(Delta))/2*a]; [x2]=[(-b-sqrt(Delta))/2*a]; disp('son rices complejas conjugadas ') disp(x1) disp(x2) elseif Delta>0 [x1]=[(-b+sqrt(Delta))/2*a]; [x2]=[(-b-sqrt(Delta))/2*a]; disp('son radices reales ') disp(x1) disp(x2) else x=-b/(2*a); disp('son raíces dobles x1=x2') disp(x) end 2 Tarea 1: NOTA DEFINITIVA DE PROGRAMACIÓN Primer parcial 25% Segundo parcial 25% Tercer parcial 25% Exámen final 25% Promedio de nota ? Si promedio de nota ≥ 3 ⇒ Ganó la materia, nota = ? 2.5 < promedio de nota < 3 ⇒ Perdió la materia, nota =? Promedio de nota ≤ 2.5 ⇒ Quedó en transición, nota =? Nota: debe mostrar notas parciales, promedio y como queda el estudiante 1.2 La condición “switch case” La sentencia switch realiza una función análoga a un conjunto de if...else if concatenados. Su forma general es la siguiente: Las cuatro operaciones básicas (+,*,‐,/) clc disp('operaciones básicas ') disp(' ') disp('1. suma ') disp('2. multiplicación ') disp('3. resta ') disp('4. división ') opcion_deseada=input('ingrese la opción deseada: ') switch opcion_deseada case {1} b=input('ingrese le primer numero: '); c=input('ingrese le segundo numero: '); d=b+c; disp('el resultado de la suma es: ') disp(d) case {2} b=input('ingrese le primer numero: '); c=input('ingrese le segundo numero: '); d=b.*c; disp('el resultado de la multiplicación es: '); disp(d) case {3} b=input('ingrese le primer numero: '); c=input('ingrese le segundo numero: '); d=b-c; disp('el resultado de la resta es: '); disp(d) case {4} b=input('ingrese le primer numero: '); c=input('ingrese le segundo numero: '); d=b/c; disp('el resultado de la división es: '); disp(d) end 3 Tarea 2: Determinar el salario neto de un empleado de una compañía con base en el salario básico, bonificación, descuento y categoría. Considere la siguiente tabla: categoría 1 2 3 4 bonificación 15% 13% 12% 9.5% descuento 4% 3% 2% 0% 1.3 Las condiciones “for y while” FOR...END Cuando queremos ejecutar un conjunto de comandos un número predeterminado de veces utilizamos la función “for...end”, cuya forma general es: for contador = [vector de valores] comandos end A modo de ejemplo si queremos sumar los cuadrados de los números enteros impares del 1 al 11 podemos escribir: Ejercicio: suma = 0 for k = 1:2:11 suma = suma + k^2; end suma salida: suma = 0 suma =286 WHILE...END A diferencia del comando for, el comando while se utiliza cuando el número de veces que se ejecuta un determinado conjunto de sentencias depende de una determinada condición lógica. Su utilización genérica es la que sigue: while condicion comandos end Por ejemplo si queremos sumar el cuadrado de números pares mientras no se supere un determinado valor, por ejemplo, 500, entonces: Ejercicio: 4 suma = 0; num = 2; while suma < 500 suma = suma + num^2; num = num + 2; end suma salida: suma = 560 Una instrucción muy útil es el comando “break” que se utiliza para salir de un bucle. Por ejemplo, si desea salir del bucle en el caso de que alguna suma parcial sea exactamente igual a 100, entonces: Ejercicio: suma = 0; num = 2; while suma < 500 suma = suma + num^2; num = num + 2; if suma == 100 break end end suma salida: suma = 560 Tarea 3 y 4: ESTRUCTURAS FOR-WHILE 3) Calcular la suma de los múltiplos de tres comprendidos entre 1 y n. El valor de n entra por teclado. 4) Calcular la suma de los cuadrados y la suma de los cubos de los 20 primeros enteros positivos. 2. Circuitos Aplicación a circuitos eléctricos Las leyes básicas de la Teoría de Circuitos son la ley de Ohm y las leyes de Kirchhoff , en la figura se plantea el circuito y se resuelve, aplicando el método de mallas, con Matlab. V=ZI 5 Las ecuaciones planteadas de las tres mallas indicadas en la figura son: v = (z1 + z4 + z2)i1 ‐ z2i2 ‐ z4i3 0 = ‐ z2i1 + (z2 + z5 + z3)i2 ‐ z5i3 0 = ‐ z4i1 ‐ z5i2 + (z4 + z6 + z5)i3 O, en forma matricial, Es decir: V=ZI La solución del problema consiste en hallar i1, i2 y i3. La solución numérica consiste en despejar el vector i de intensidades, una vez que se han dado los valores numéricos (complejos o resistivos) a las impedancias z1 …. z6 y al voltaje V. Al tratarse de un circuito con mallas cerradas y con impedancias no nulas, la matriz Z de impedancias es siempre no singular y, por tanto, existe la inversa Z-1. Por tanto, I = Z-1 V Para hacer estos cálculos con Matlab, escribiremos en un fichero‐m los valores dados al voltaje y a las impedancias. Por ejemplo, podríamos poner lo siguiente: % Ejemplo de circuito % Datos: clc disp('solución de un sistema por ecuaciones simultáneas') disp('aplicado a un circuito eléctrico de 3 mallas') Vef=100; R1=5; z1=R1 R2=3; z2=R2 R3=8; z3=R3 R4=4; z4=R4 R5=10; z5=R5 6 R6=6; z6=R6 V = [Vef 0 0]' %vector de voltajes Z = [ z1+z2+z4 -z2 -z4;-z2 z2+z5+z3 -z5;-z4 -z5 z4+z5+z6];%matriz z I = inv(Z)*V %valor de las corrientes en amperios Respuesta: solución de un sistema por ecuaciones simultáneas aplicado a un circuito eléctrico de 3 mallas z1 = 5 z2 = 3 z3 = 8 z4 = 4 z5 = 10 z6 = 6 V= 100 0 0 I= 10.3761 3.2425 3.6965 Tarea 5: Calcular las corrientes en las mallas y voltajes en cada impedancia para el siguiente circuito: 7 3. Ecuaciones lineales Para resolver un sistema de ecuaciones lineales o simultáneas AX = B de n ecuaciones con m (n puede ser igual a m) incógnitas, se introduce la matriz A del sistema y el vector columna B de los términos independientes, no es preciso considerar el vector columna X de las incógnitas (x1, x2, x3). Consideremos el siguiente sistema: Tarea 6: Encuentre la solución para x: