IPAN - Comisión G3 - 2025
Práctica 2 - Programación
Ejercicio 1: feliz estreno
a) Ejecute las siguientes sentencias de forma secuencial en la ventana de comandos de Octave/Matlab y
analice, lı́nea por lı́nea, qué valores toman las variables a, b, c, d y ans.
a = 5
b = a + 1
a*2 + b
ans/2
ans/4
c = ans/2
d = a + b + c
d = d^2/pi
b) Utilice la sentencia help clear para estudiar qué acción realiza el comando clear. De igual manera,
utilice la sentencia help clc para estudiar qué acción realiza el comando clc. Finalmente, ejecute la sentencia clear, clc y verifique que hayan funcionado correctamente.
Ejercicio 2: con V de vectores
a) Estudie cómo funcionan las siguientes definiciones y operaciones con vectores.
v1 = [-15 -10 -5 0 5 10 15]
v2 = -15:5:15
v3 = v1 - v2
alpha = v1(3)
v4 = alpha*v1
v2 = v2.’
v5 = v1*v2
v6 = v1.*v1
v7 = v1.^2
b) Defina un vector fila con intervalo [0; 2π] y paso π/2. Luego, evalúe dicho vector en las funciones sin(x)
y cos(x), y almacene los resultados en variables nuevas. Por último, utilice la potencia elemento-a-elemento
para verificar la relación trigonométrica sin(x)2 + cos(x)2 = 1 para cada par ordenado de los resultados.
Ejercicio 3: matrix
a) Estudie cómo funcionan las siguientes definiciones y operaciones con matrices.
A = [1 2 3; 4 5 6; 7 8 9]
a32 = A(3,2)
fila1 = A(1,:)
columna3 = A(:,3)
I = eye(3)
B = A*I
C = A.*I
det(C)
inv(C)
D1 = [fila1; fila1+3; fila1+6]
D2 = [columna3-2 columna3-1 columna3]
b) Defina un vector columna con intervalo [0; 2π] y paso π/2. Luego, evalúe dicho vector en las funciones
sin(x) y cos(x), y almacene los resultados en variables nuevas. Por último, arme una matriz con los resultados obtenidos ordenados por columnas.
1
Ejercicio 4: ilusión óptica
a) Defina un vector t con intervalo [0; 2π] y paso π/50, y calcule su largo utilizando la función length(t).
Luego, obtenga dos vectores, x e y, que almacenen los resultados de evaluar el vector t en las funciones
2cos(t) y 5sin(t), respectivamente. Para observar los resultados obtenidos, estudie los comandos figure,
plot, hold on y subplot y grafique como se indica a continuación:
a1) Cree la figura 1 con ambas funciones x(t) e y(t) graficadas de forma superpuesta
a2) Cree la figura 2 con dos subfiguras con las funciones x(t) e y(t) graficadas por separado.
b) En una nueva figura 3, grafique la curva de la elipse descripta en forma paramétrica r(t) = (x(t), y(t))
y agregue una grilla con la sentencia grid on. ¿Cuál parece ser el eje mayor de la elipse y cuál el menor?
Mejore la representación de la elipse utilizando la sentencia axis equal.
Ejercicio 5: animación
a) Grafique la curva paramétrica r(t) = (x(t), y(t)) para el vector t definido en el ejercicio anterior considerando las siguientes funciones x(t) e y(t):
x(t) = cos(t)(ecos(t) − 2cos(4t) − (sin(t/12))5 )
y(t) = sin(t)(ecos(t) − 2cos(4t) − (sin(t/12))5 )
b) Analice cómo cambia el gráfico al variar el paso del vector t y su lı́mite superior a otros múltiplos de 2π.
c) Muchas veces puede resultar interesante observar cómo se va formando la curva a medida que aumenta
el parámetro. Para ello, implemente una animación ejecutando el siguiente código:
figure;
% Abro una nueva ventana de figura
axis([-3 4 -4 4])
% Fijo los lı́mites de los ejes (x,y)
hold on, grid on
% Mantengo los gráficos y agrego una grilla
for i=1:length(t)-1
% Comienzo un bucle desde 1 hasta el largo de t-1
plot(x(i:i+1),y(i:i+1))
% Grafico la recta entre dos puntos consecutivos
pause(1/10)
% Espero 1/10 segundos para volver a empezar (10 FPS)
endfor
% Termino el bucle
Ejercicio 6: convergiendo paso a paso
a) Siguiendo P
los pasos siguientes, arme un script en Octave/Matlab para verificar
convergencia de la serie
Pla
∞
1
k = a para valores de |r| < 1) con el ejemplo particular
ar
geométrica ( ∞
k=0
k=1 2n .
1−r
a1) Inicialice una variable N en 10, 100 o 1000, y luego defina un vector x de largo N cuyos elementos
sean x(n) = (1/2)n para n = 1, 2, ..., N.
a2) Grafique los elementos del vector x en función de su ı́ndice, y observe su comportamiento al incrementar N.
a3) Defina un vector y, también de largo N, donde cada elemento y(n) contenga el resultado de la suma
de los elementos del vector x desde 1 hasta n, lo que resulta en: y(1) = x(1), y(2) = x(1) + x(2), y ası́
siguiendo hasta y(N ) = x(1) + x(2) + ... + x(N − 1) + x(N ).
a4) Grafique los elementos del vector y en función de su ı́ndice, y observe su comportamiento al incrementar N.
a5) Presente los gráficos de x e y en dos subfiguras utilizando el comando subplot y verifique la convergencia de la serie.
b) Reutilice el código del inciso anterior para verificar los resultados de las convergencias de las siguientes
series geométricas
para los distintos valores de N.
P∞
k
b1) Pk=1 0.9
k
b2) ∞
k=1 0.99
Ejercicio 7: estructuras de control
2
a) Dados los siguientes scripts de Octave/Matlab, realice diagramas de flujo que representen gráficamente
los algoritmos, comente los código con el funcionamiento de cada sentencia y verifique el resultado final cada
variable.
a1) Nivel I - Principiante
clc, clear, close all
a = zeros(1,99);
n = length(a);
for i = 1:n
if (i<((n+1)/2))
a(i) = i;
else
a(i) = (n+1)-i;
endif
endfor
a2) Nivel II - Intermedio
clc, clear, close all
A = zeros(20,20);
[n,m] = size(A);
for i = 1:n
for j = 1:m
if (i==n/2 && j==n/2)
A(i,j) = 1;
A(i+1,j+1) = 1;
A(i+1,j-1) = 1;
A(i-1,j-1) = 1;
A(i-1,j+1) = 1;
elseif (i==n/4 && (j==n/4 || j==3*n/4))
A(i-1:i+1,j-1:j+1) = 1;
elseif (i==3*n/4 && (j>=n/4 && j<=3*n/4))
A(i:i+1,j) = 1;
endif
endfor
endfor
a3) Nivel III - Avanzado
clc, clear, close all
n = 8;
numeros = zeros(n,2^n);
numeros(1,1:2) = [0 1];
for i=2:n
numeros(1:(i-1),(2^(i-1)+1):(2^i)) = numeros(1:(i-1),1:(2^(i-1)));
numeros(i,(2^(i-1)+1):(2^i)) = 1;
endfor
numeros = numeros.’;
k = 1;
while (k<=n/2)
aux = numeros(:,k);
numeros(:,k) = numeros(:,n-(k-1));
numeros(:,n-(k-1)) = aux;
k = k+1;
endwhile
3
Ejercicio 8: funciones!
a) Implemente una función con una variable de entrada a y una variable de salida b que genere un vector
con todos los números enteros positivos menores a a, y que sean múltiplos de 2, 7 y 13. Desde un script,
pruebe la función para distintos valores de a y verifique que se cumplan las condiciones.
b) Realice el diagrama de flujo de un programa que lea tres números por teclado, x, y y z, y devuelva el
resultado de sumar, restar, multiplicar o dividir x con y para z = 1, 2, 3 o 4, respectivamente. Implemente
el algoritmo con una función y verifique su funcionamiento llamándola desde un script.
Ejercicio 9: a pedazos...
a) Defina las siguientes funciones a trozos y llámelas desde un script para verificar su funcionamiento con
distintos valoresde x.
2 si x < −2
a1) f1 (x) =
0 en
cc
2
si
x < −2
2
x si −2 ≤ x < 3
a2) f2 (x) =
1
si 3 ≤ x ≤ 10
x
0 en
cc
2
si
x < −2
2
x
si
−2
≤x<3
1
si 3 ≤ x ≤ 10
x
a3) f3 (x) =
x
si 15 < x < 20
3
−
x
si
x = 22
0
en
cc
b) Defina un vector de abscisas en el intervalo [−5; 25] con un paso suficientemente chico para evaluar y
graficar las funciones definidas en el inciso anterior.
Bibliografı́a
[1] H. Moore, Matlab para Ingenieros, 2007, Pearson-Prentice Hall.
[2] A. Gilat, Matlab: una introducción con ejemplos prácticos, 2006, Reverté.
[3] D. M. Etter, Solución de Problemas de Ingenierı́a con Matlab, 2a. Ed., 1998, Prentice-Hall.
4