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:
Numero-6+2
: CORRECTA - Es una operación válida si 'Numero' está definida.8num=3*2
: INCORRECTA - Los nombres de variables no pueden comenzar con números.Num valores=3+2
: INCORRECTA - Los nombres de variables no pueden contener espacios.A234_7899000=3
: CORRECTA - Comienza con letra y solo usa caracteres válidos (letras, números y guiones bajos).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:
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:
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\%\].
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\):
- El vector cuyas componentes son \(n,\,2n,3n,...,10n\)
- El vector cuyas componentes son \(n - 1,\,n - 3,n - 5,...,n - 41\)
- El vector cuyas componentes son \({n^2} + 1,\,{n^2} + 3,{n^2} + 5,...,{n^2} + 2n - 1\)
- 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:
- \(y - k\,;\,\,ky\,\,;\,\,\frac{x}{k}\,\,\,;2x - y\)
- \({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