Ejemplos MATLAB

Colección de ejercicios prácticos para aprender MATLAB

Ejemplo 1.1: Ejecución Secuencial

Problema:

¿Qué resultado esperarías del siguiente código?

>> x=5;  2*x;  y=x^2;   x=y/x;
            

Solución:

% Analicemos paso a paso:
x = 5;          % Asigna 5 a x
2*x;            % Calcula 2*5=10 pero no lo guarda
y = x^2;        % y = 5^2 = 25
x = y/x;        % x = 25/5 = 5

% Resultado final:
% x = 5
% y = 25
% La expresión 2*x se calculó pero no se guardó
            

Resultado:

Al finalizar la ejecución:

  • La variable x tendrá el valor 5
  • La variable y tendrá el valor 25
  • La expresión 2*x se evaluó pero su resultado no se guardó

Ejemplo 1.2: Nombres de Variables

Problema:

Indica cuáles de las siguientes expresiones son incorrectas y por qué:

Numero-6+2
8num=3*2
Num valores=3+2
A234_7899000=3
B-32=0
            

Solución:

Análisis de cada expresión:

  1. Numero-6+2: CORRECTA - Es una operación válida si 'Numero' está definida.
  2. 8num=3*2: INCORRECTA - Los nombres de variables no pueden comenzar con números.
  3. Num valores=3+2: INCORRECTA - Los nombres de variables no pueden contener espacios.
  4. A234_7899000=3: CORRECTA - Comienza con letra y solo usa caracteres válidos (letras, números y guiones bajos).
  5. B-32=0: INCORRECTA - El guion medio no está permitido en nombres de variables (MATLAB lo interpretaría como una resta).

Reglas para nombres de variables en MATLAB:

  • Deben comenzar con una letra
  • Pueden contener letras, números y guiones bajos
  • No pueden contener espacios ni caracteres especiales
  • Son sensibles a mayúsculas y minúsculas

Ejemplo 1.3: MATLAB como Calculadora

Problema:

Utilizar Matlab/Octave como calculadora para calcular:

\[\frac{{\left( {\frac{\pi }{2} + 4} \right){2^{3 + {2^2}}}}}{{1 + {3^2}}}\]

Solución:

% Desglosemos la operación
num = (pi/2 + 4) * 2^(3 + 2^2);  % Numerador
den = 1 + 3^2;                    % Denominador
resultado = num/den;

% En una sola línea sería:
resultado = ((pi/2 + 4) * 2^(3 + 2^2))/(1 + 3^2)
            

Resultado:

El resultado es aproximadamente 170.9025

Ejemplo 1.4: Raíces y Operaciones

Problema:

Calcular:

\[\sqrt[3]{{3\frac{{27}}{{91}}}} + \frac{2}{4}\sqrt[4]{{3\frac{{27}}{{91}}}} - \frac{1}{2}\sqrt[5]{{3\frac{{27}}{{91}}}}\]

Solución:

% Primero calculamos el valor base
base = 3*27/91;

% Luego cada término
term1 = nthroot(base, 3);
term2 = (2/4) * nthroot(base, 4);
term3 = (1/2) * nthroot(base, 5);

% Resultado final
resultado = term1 + term2 - term3
            

Resultado:

El resultado se puede obtener directamente como:

resultado = nthroot(3*27/91, 3) + 0.5*nthroot(3*27/91, 4) - 0.5*nthroot(3*27/91, 5)
              

Ejemplo 1.5: ROI de un Proyecto

Problema:

Un proyecto cuesta \(C_{\text{inst}} = 10,000\) euros y genera un beneficio anual neto de \(B_{\text{anual}} = 2,000\) euros durante \(N = 5\) años. Calcular el retorno de inversión (\(ROI\)) con una tasa de descuento de \(r = 4\%\].

\[ B_{\text{total}} = \sum_{t=1}^{N} \frac{B_{\text{anual}}}{(1 + r)^t} \] \[ ROI = \frac{B_{\text{total}} - C_{\text{inst}}}{C_{\text{inst}}} \cdot 100 \]

Solución:

% Definir parámetros
C_inst = 10000;
B_anual = 2000;
N = 5;
r = 0.04;

% Calcular beneficios totales
B_total = 0;
for t = 1:N
    B_total = B_total + B_anual/(1 + r)^t;
end

% Calcular ROI
ROI = (B_total - C_inst)/C_inst * 100;

fprintf('Beneficios totales: %.2f €\n', B_total);
fprintf('ROI: %.2f%%\n', ROI);
            

Resultado:

El ROI del proyecto será aproximadamente -13.46%, lo que indica que el proyecto no es rentable bajo estas condiciones.

Ejemplo 1.6: Conversión de Temperatura

Problema:

Escribe una función que permita pasar de grados Celsius a grados Fahrenheit.

Solución:

function fahrenheit = celsius2fahrenheit(celsius)
    % Convierte grados Celsius a Fahrenheit
    fahrenheit = (celsius * 9/5) + 32;
end

% Ejemplo de uso:
celsius = 25;
fahrenheit = celsius2fahrenheit(celsius);
fprintf('%.1f°C = %.1f°F\n', celsius, fahrenheit);

% Probamos con varios valores
temps_c = [-40 0 21 37 100];
temps_f = celsius2fahrenheit(temps_c);
            

Resultado:

La función convierte correctamente las temperaturas. Algunos valores de referencia:

  • -40°C = -40°F
  • 0°C = 32°F
  • 21°C = 69.8°F
  • 37°C = 98.6°F
  • 100°C = 212°F

Ejemplo 1.7: Generación de Vectores

Problema:

Genera los siguientes vectores eligiendo un valor cualquiera para \(n\):

  1. El vector cuyas componentes son \(n,\,2n,3n,...,10n\)
  2. El vector cuyas componentes son \(n - 1,\,n - 3,n - 5,...,n - 41\)
  3. El vector cuyas componentes son \({n^2} + 1,\,{n^2} + 3,{n^2} + 5,...,{n^2} + 2n - 1\)
  4. Un vector con \(10+n\) componentes regularmente espaciadas entre 0 y \(\pi\)

Solución:

% Elegimos n = 5 como ejemplo
n = 5;

% Vector 1: n, 2n, 3n, ..., 10n
v1 = n * (1:10);

% Vector 2: n-1, n-3, n-5, ..., n-41
v2 = n:-2:(n-41);

% Vector 3: n^2+1, n^2+3, ..., n^2+2n-1
v3 = (n^2+1):2:(n^2+2*n-1);

% Vector 4: 10+n componentes entre 0 y pi
v4 = linspace(0, pi, 10+n);

% Mostrar resultados
disp('Vector 1:'), disp(v1)
disp('Vector 2:'), disp(v2)
disp('Vector 3:'), disp(v3)
disp('Vector 4:'), disp(v4)
            

Ejemplo 1.8: Operaciones con Vectores

Problema:

Dados los vectores fila \(x = (4,6,2)\), \(y = (3,-2,4)\) y el número \(k=3\), calcular:

  1. \(y - k\,;\,\,ky\,\,;\,\,\frac{x}{k}\,\,\,;2x - y\)
  2. \({x^2} + {y^2}\,\,;\,\,\frac{3}{{\sqrt[3]{x}}}\,\,\,;\,\,\frac{{1 + x}}{{{y^4}}}\)

Solución:

% Definir los vectores y k
x = [4 6 2];
y = [3 -2 4];
k = 3;

% Primera parte
y_menos_k = y - k
k_por_y = k*y
x_entre_k = x/k
dos_x_menos_y = 2*x - y

% Segunda parte
x_cuad_mas_y_cuad = x.^2 + y.^2
tres_entre_raiz_x = 3./(x.^(1/3))
uno_mas_x_entre_y4 = (1 + x)./(y.^4)
            

Ejemplo 1.9: Elementos de una Matriz

Problema:

Define la matriz A y obtén los dos primeros elementos de la fila tercera.

Solución:

% Definir una matriz A de ejemplo
A = [1 2 3 4;
     5 6 7 8;
     9 10 11 12;
     13 14 15 16];

% Obtener los dos primeros elementos de la tercera fila
elementos = A(3, 1:2)

% Alternativa usando indexación individual
primer_elemento = A(3,1)
segundo_elemento = A(3,2)
            

Ejemplo 1.10: Vectores Complementarios

Problema:

Crea un vector que va desde 1 a 22 con salto de 5 puntos. Crea otro vector t con el mismo número de elementos que el anterior de forma que la suma de los dos vectores tenga todos sus componentes iguales.

Solución:

% Crear el primer vector
v = 1:5:22

% Calcular el valor objetivo para la suma (elegimos el máximo)
valor_suma = max(v) + min(v)

% Crear el vector complementario
t = valor_suma - v

% Verificar que la suma es constante
suma = v + t
            

Ejemplo 1.11: Submatriz

Problema:

Genera una matriz de números aleatorios de 8x6 elementos. Selecciona la submatriz con las filas pares y las columnas impares.

Solución:

% Generar matriz aleatoria
M = rand(8,6)

% Seleccionar filas pares (2,4,6,8) y columnas impares (1,3,5)
filas_pares = 2:2:8;
columnas_impares = 1:2:5;

% Extraer submatriz
subM = M(filas_pares, columnas_impares)
            

Ejemplo 1.12: Tarifa Eléctrica

Problema:

Una compañía eléctrica tiene la siguiente tarifa:

  • Los primeros 100Kwh se pagarán a 2€ el Kwh
  • Para los siguientes 200 Kwh costará 3€
  • 6€ de allí en adelante

Expresa el valor de la factura como una función de la cantidad de Kwh consumida al mes y représenta la función.

Solución:

function factura = calcular_factura(kwh)
    if kwh <= 100
        factura = kwh * 2;
    elseif kwh <= 300
        factura = 100*2 + (kwh-100)*3;
    else
        factura = 100*2 + 200*3 + (kwh-300)*6;
    end
end

% Crear gráfica
kwh = 0:10:500;
factura = zeros(size(kwh));
for i = 1:length(kwh)
    factura(i) = calcular_factura(kwh(i));
end

plot(kwh, factura, 'b-', 'LineWidth', 2)
grid on
xlabel('Consumo (kWh)')
ylabel('Factura (€)')
title('Tarifa Eléctrica')
            

Resultado:

La función muestra tres tramos diferentes de tarificación:

  • Tramo 1 (0-100 kWh): Pendiente de 2€/kWh
  • Tramo 2 (100-300 kWh): Pendiente de 3€/kWh
  • Tramo 3 (>300 kWh): Pendiente de 6€/kWh