Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FI0708 Ejercicios-Matlab PDF
FI0708 Ejercicios-Matlab PDF
Etapa 1 – Familiarización
1. Identificadores
¿Cuáles de estos identificadores son válidos y cuáles no? En el caso de no serlo, ¿por qué?
total
total acumulado
resultado-1
resultado_1
resultado 1
Resultado
resultaDo
1resultado
el_valor_total_de_la_suma_de_los_operandos_es
el_valor_total_de_la_suma_es
el_valor_total_de la_suma_es
resul*1
int8
double
integer1
válido
2. Expresiones
Escribe las siguientes expresiones aritméticas en Matlab. Compruébalas con los valores de prueba de la
columna derecha.
B. Energía relativista e m
E=mc 2 1,8x105 2
5,58x105 6,2
donde la velocidad de la luz c = 300 000
3. Manipulación de matrices
A) Almacena en memoria principal la siguiente matriz, en una variable que se llame M1:
1
3
2 3
−3 −4 4
7 2
B) Calcula la traspuesta de M1 y guárdala en M2
C) Calcula el producto elemento a elemento de M1 y M2
D) Calcula la suma de M1 y M2
E) Calcula la división elemento a elemento de M1 y M2
F) Calcula el producto matricial de M1 y M2 y guárdalo en prodM1M2
G) Calcula el producto matricial de M2 y M1 y guárdalo en prodM2M1
H) Calcula la división matricial de M1 y M2
I) Cambia el valor del elemento central de M1 a 9
J) Guarda en una matriz llamada esquinasM1 de tamaño 2x2 los elementos de las esquinas de M1
K) Guarda en un vector fila v los elementos de la diagonal principal de M1
L) Guarda en un vector columna w los elementos de la diagonal secundaria de M2
M) Calcula el producto escalar de v y w
N) Calcula el producto vectorial de v y w
O) Guarda en fila1 los elementos de la primera fila de la matriz M1
P) Guarda en columna1 los elementos de la primera columna de la matriz M1
Q) convierte fila1 en un vector columna y columna1 e un vector fila.
R) Genera un vector llamado angulos que tenga los ángulos mútiplos de 30 entre 30 y 360
S) Añade el elemento 0 en la primera posición a angulos
T) Extrae de ese vector los elementos con índice par (es decir, el segundo, el cuarto, el sexto, etc) y
guárdalos en angulosPar
U) Extrae de ese vector los elementos con índice impar (es decir, el primero, el tercero, el quinto, etc) y
guárdalos en angulosPar
V) Concatena a angulosPar el vector angulosImpar
4. Matrices multidimensionales
En una urbanización hay 4 bloques de pisos, de 6 plantas cada uno. En cada una de las plantas hay 5 pisos,
con un número diferentes de habitaciones cada uno. Todas las puertas número 1 y 2 son pisos de dos
habitaciones, las puertas 3 y 4 son pisos de tres habitaciones y las puertas 5, tiene cuatro habitaciones. Se
pide:
• Almacenar el número de habitaciones de cada piso en una matriz de forma adecuada
• Imprimir bloque por bloque el número de habitaciones de cada piso.
• Imprimir el número de habitaciones de todos los pisos de la planta 4 del bloque 2.
• Imprimir el número de habitaciones del piso 3 de la planta 2 del bloque 3.
• Calcular e imprimir el número total de habitaciones de cada bloque.
• Calcular e imprimir el número total de habitaciones de la urbanización.
5. Distancia
Define dos vectores de tres elementos (x, y, z), que representan las coordenadas 3D de dos puntos en el
espacio. Calcula la distancia que hay entre ambos puntos.
6. Diferencias
Crea el vector V con los valores 3, 4, 9, 5, 2, 1, 5, 3, 9, 8, 4, 6, 2, 1, 6, 5.
Calcula un nuevo vector D con las diferencias entre los elementos consecutivos, de forma que
D i =V i1−V i
El resultado ha de ser 1, 5, -4, -3, -1, 4, -2, 6, -1, -4, 2, -4, -1, 5, -1.
7. Operaciones en Matlab
A) Sean los vectores a=[2 4 3 3] y b=[5 2 3 4]. Calcula todas las relaciones entre sus elementos
(igualdad, mayor o igual, mayor,...).
B) Con dos de los vectores cualesquiera que te dieron como resultado alguna de las operaciones anteriores,
aplica los operadores AND, OR y NOT.
C) Genera un vector entre 0 y 2*pi con un salto de pi/8. Calcula e imprime todas las magnitudes
trigonométricas disponibles en Matlab.
D) Calcula el máximo y la posición que ocupa dicho elemento del vector b del apartado A.
E) Sea x=5.678. Calcula todos los posibles redondeos de x disponibles en Matlab.
F) Sea el vector c=[5 3 2 7 4 11 25 -4 1]. Calcual el menor y el mayor de los elementos del
vector. Guarda en COrden el vector ordenado de c.
G) Genera una matriz de ceros de tamaño 50x50. Coloca unos en la posición (3,4), (32,25) y
(49,49). Busca a continuación en esta matriz todos los elementos distintos de cero. Convierte esta matriz
en una matriz dispersa.
H) Almacena en memoria principal la siguiente matriz, en una variable que se llame M1:
1
3
2 3
−3 −4 4
7 2
I) Calcua el determinante de la matriz y calcula la matriz inversa guardándola en M1inv.
J) A continuación, guarda en el fichero result.txt la matriz M1inv en formato ascii.
K) Lee este fichero y guarda el contenido en la matriz M1inv2.
L) Haz diferentes pruebas de lectura y escritura de matrices en ficheros binarios.
10. Sumatorio
Escribe una expresión que calcule la suma de todos los números naturales hasta n.
11. Factorial
Escribe una expresión que calcule el factorial de n.
13. DNI
La letra del DNI se obtiene de la siguiente manera: se calcula el resto de dividir el valor numérico del DNI
entre 23. La letra correspondiente a dicho resto en esta tabla es la que corresponde al DNI.
Resto 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Letra T R W A G M Y F P D X B N J Z S Q V H L C K E
15. Chargaff
La ley de Chargaff dice que en el ADN de un organismo la cantidad de Adenina es la misma que la de
Timina, y la de Citosina es la misma que la de Guanina. Dada una secuencia de nucleótidos del estilo de
ATTACCAGTACA... podemos comprobar si cumple dicha ley de la siguiente forma:
Contamos la cantidad de A, T, C y G presentes en la cadena y calculamos los coeficientes
N A −N T N C −N G
a= y c=
N A N T N C N G
donde N X indica la cantidad de nucleótidos del tipo X presentes en la secuencia.
Partiremos de una cadena que contiene una cantidad indeterminada de caracteres, que solo pueden ser A,
T, G o C. Calcula a partir de dicha cadena los coeficientes a y c.
a11 x1a12 x 2 a13 x 3 =b1 a11 a12 a13 x1 b1
a21 x1 a22 x 2 a 23 x3 =b2 a21 a 22 a 23 x2 = b2 AX =B
a31 x1 a32 x 2 a 33 x3 =b3 a31 a 32 a 33 x3 b3
Multiplicando la inversa de A por la izquierda: A−1 AX =A−1 B resulta X =A−1 B , por lo que es
posible relolver sistemas de ecuaciones lineales mediante la última expresión.
Define la matriz A y el vector B que representan el sistema lineal, y calcula la solución X. Hazlo con un
sistema que puedas resolver a mano para corroborar que los resultados son correctos.
sin x 2 y 2
Representa la superficie 3D z= entre -10 y 10 para los valores x e y. Para ello deberás
x 2 y 2
generar los vectores x e y con la precisión que necesites (puedes probar para un salto de 0.5 y de 0.1). A
continuación generar la malla en el plano xy utilizando meshgrid. Posteriormente representa la gráfica con
ayuda de mesh y luego con surf. Prueba también con plot3d. Además, prueba a girar la gráfica y editar sus
propiedades.
z=
∣ ∣ ∣ ∣
∂z
∂q1
q1
∂z
∂q2
q2 ...
∂z
∂qn ∣ ∣
qn
Un fabricante de depósitos cilíndricos desea estimar el error en su volumen V, pero medir éste en cada
depósito es una operación costosa, por lo que únicamente mide su radio r y su altura h. Así, el cálculo será
V= ∣ ∣ ∣ ∣
∂V
∂r
r
∂V
∂h
h
2
Como el volumen de un cilindro se calcula mediante V = r h las derivadas parciales serán
∂V ∂V
= 2 hr y = r2
∂r ∂h
Las medidas experimentales se almacenan en un fichero de texto con dos columnas, la primera registra el
radio y la segunda la altura. A partir de los datos de este fichero se desea estimar el error en el radio r, en la
altura h y en el volumen V. Elabora la secuencia de instrucciones que realizan esta tarea.
24. Distancia
Tenemos un fichero llamado PUNTOS.DAT con la siguiente estructura:
10 3
2.1 4
5 1.7
5 3
Cada una de las líneas contiene las coordenadas de un punto en el plano. En el ejemplo hay 4 coordenadas,
pero el fichero podría contener cualquier cantidad de ellas.
Elabórese un script que lee los datos del fichero y presenta en pantalla la distancia entre cada punto y el
siguiente. Finalmente presenta la distancia total.
Con los datos del ejemplo, el resultado sería:
Distancias entre puntos consecutivos:
7.96
3.70
1.30
Distancia total: 12.96
Para complicarlo un poco más: presentar también la distancia máxima y mínima entre puntos consecutivos.
• Calcularemos la concentración del compuesto. En lugar de calcular el área bajo el pico, supondremos
que la concentración viene dada por la altura del pico en el máximo. Ofreceremos las concentraciones en
unidades arbitrarias.
Elabora un script que:
• Lee un fichero que contiene la lista de movilidades de los compuestos. Almacena esta información en un
vector.
• Lee un fichero que contiene la lista de nombres de los compuestos. Almacena esta información en un
vector.
• Lee un fichero que contiene los datos de un cromatograma (lista de números reales que representan la
concentración a lo largo del tiempo). Suponemos que la movilidad es el número de orden de cada dato.
Almacena el cromatograma en un vector.
• Busca los picos del cromatograma. Para cada pico detectado calcula y presenta lo siguiente:
• Movilidad del pico
• Identificación del compuesto
• Concentración del compuesto
28. Frases
El programa pide una frase. Se imprimirá una frase en la que el primer carácter de la frase original cambia
de sitio, apareciendo al final. Se imprimirá otra frase en la que el último carácter de la frase original cambiará
de lugar, apareciendo en la primera posición.
29. Comparaciones
Escribe un programa que lea dos números y devuelva como resultado si los números son iguales. Si no lo
son, devolverá como resultado el mayor de los dos. Escribe dos versiones, una utilizará la función max y la
otra no.
35. Crédito
Un banco, antes de conceder un préstamo a 20 años comprueba los ingresos del solicitante. Si los ingresos
son superiores a 12000 € anuales el crédito se concede. Si los ingresos son inferiores a 12000 € anuales
pero superiores a 8000 € y está soltero el crédito se concede. También se le concede si tiene ingresos entre
12000 € y 10000 € y esta casado sin hijos. Realizar un programa que pida los ingresos anuales, el estado
civil del solicitante y si tiene hijos, y diga si se le da el crédito o no.
1 x2
y B = y 0x B tan −g B2 1tan 2
2 v0
Resolviendo esta ecuación para tan(α), encontramos dos ángulos de disparo que alcanzan el blanco.
Se pide hacer un script en Matlab que pida al usuario las coordenadas del blanco y la velocidad de disparo
del cañón y que calcule:
• Los dos ángulos que dan en el blanco.
• El tiempo de vuelo del proyectil para cada ángulo hasta que impacta en el blanco.
• Una gráfica en la que se muestren en diferente color las dos posibles trayectorias del proyectil desde que
sale del cañón hasta que impacta en el blanco (ver Figura). Esta gráfica deberá estar formateada
adecuadamente, con las leyendas y los títulos de los ejes correspondientes y contener una malla o grid.
Se supondrá que el cañón está situado en el origen de coordenadas. Tómese el valor g=9.81m/s2.
Comprobar los resultados utilizando los siguientes datos de entrada: xB=492,4; yB=145,5; v0 =92,8
los cuales habrán de reproducir la gráfica siguiente:
Gráfica obtenida para los datos de entrada especificados en el enunciado del ejercicio
donde {xi, yi} son datos experimentales, N es el número total de datos objtenidos y f(x) es la función
incógnita. La función χ2 calcula la diferencia entre el valor experimental yi y el valor obtenido por la función
f(xi) para un xi dado. Normalmente no se cumple que yi = f(xi), por lo que χ2 nunca es cero. La forma de
determinar f es hacer que χ2 sea lo más próximo a cero posible, lo que se consigue minimizando su valor. Al
hacer esto, se obtiene una función que describe, sólo de forma aproximada, el comportamiento global de los
puntos experimentales. Por lo tanto, el problema de encontrar f es el problema de minimizar la función
objetivo χ2. No existe una expresión general de esta minimización, aunque para casos particulares sencillos
sí puede obtenerse una solución analítica. Uno de los casos más sencillos para aplicar el método de los
mínimos cuadrados es el de una distribución de pares ordenados {xi, yi} que se pretende ajustar a una línea
recta. Es decir la función incógnita tiene la forma: f(x)=a + bx. En tal caso existe solución analítica.
Consideremos que:
N
a ,b=∑ y i−ab xi 2
2
i =1
Los valores más eficaces para a y b se obtienen cuando se minimiza la función objetivo. El mínimo de una
función se caracteriza por que su primera derivada es cero, es decir:
∂2 ∂2
=0 y =0
∂a ∂b
De donde se obtienen las soluciones para a y b:
N N N
N ∑ xi y i−∑ x i ∑ y i N N
b= i=1 i =1 i =1 ∑ y i−b ∑ x i
N
2
N
2 a= i=1 i =1
N ∑ x −∑ x i i N
i =1 i =1
Se pide hacer un programa que dados un conjunto de datos experimentales {xi, yi}:
• Calcule la recta que mejor se ajusta a ese conjunto de datos utilizando las expresiones para a y b de este
enunciado.
• Represente gráficamente los datos junto con una gráfica de la recta calculada (ver figura)
Comprobar los resultados utilizando los siguientes datos de entrada:
x=[1 1.2 1.5 1.7 2];
y=[5 5.8 6.5 7.5 8.4];
los cuales han de reproducir la siguiente gráfica.
Gráfica de ajuste lineal obtenida para los datos de entrada especificados en el enunciado
Etapa 4 – Bucles
38. Cuadrados
Hacer un script que imprima los 20 primeros numeros y sus cuadrados. Hacer otro script que imprima los
numeros impares y sus cuadrados que hay entre 1 y 20.
40. Vocales
Escribe un script en Matlab que pida al usuario una cadena de caracteres y que imprima la misma cadena,
pero sustituyendo las vocales por asteriscos.
41. Triángulo
Escribir un script que lea un entero y un carácter. La salida debe ser un triángulo dibujado con el carácter
dado y de anchura máxima dada por el entero leido. Por ejemplo su el entero es 7 y el carácter es ‘O’, el
triángulo debe ser:
O
OOO
OOOOO
OOOOOOO
42. Rombo
Escribir un script que amplíe el programa anterior para dibujar un rombo:
O
OOO
OOOOO
OOOOOOO
OOOOO
OOO
O
44. Factorial
Escribe un programa que lea un número n y calcule su factorial (n!).
Elaborar dos versiones. Una de ellas utilizando la instrucción FOR y la otra utilizando la instrucción WHILE.
49. Serie
i n i
El programa solicita x y n, y calcula la suma de la serie
x
i!
hasta el término n, es decir ∑ xi!
i=0
No es ningún secreto que esa serie sirve para calcular la función exponencial e x . Utilícese la función de
biblioteca exp para comparar su resultado con el de la suma de la serie.
La media: S
M=
n
La varianza: Sc
V= −M 2
n
La desviación típica: s= V
El mayor de los datos max x i i =1...n
El menor de los datos min x i i =1...n
55. Fibonacci
La sucesión de Fibonacci es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21, 34,...
Es decir, f 1=1 , f 2=1 , y cada uno de los siguientes términos de la sucesión se calculan sumando
los dos anteriores: f i = f i−1 f i −2
Escribe un programa que genera dicha sucesión, presentando en pantalla cada uno de los términos. El
programa terminará después de presentar un término mayor que un cierto límite (1000000, por ejemplo).
59. Espacios
El programa solicita una frase. La frase podrá contener palabras que estén separadas por más de un
espacio. El programa normaliza la frase dejando un único espacio entre las palabras, y presenta el resultado.
61. Sensores
En una planta química disponemos de un sensor de temperatura y otro de presión. Una biblioteca nos
proporciona dos funciones, temperatura() y presion(). Llamando a esas funciones desde un programa,
podemos obtener respectivamente la temperatura y la presión existentes en la planta en ese instante.
Haz un programa que utilice ambas funciones para realizar las siguientes operaciones en un bucle sin fin:
• Presenta en pantalla la temperatura y presión actuales
• Calcula el récord de temperatura y presión alcanzadas hasta el momento actual
• Cuando la temperatura o la presión superan su respectivo récord, presenta un mensaje de alarma en
pantalla
f(x)
(f(x)+f(x+ancho))/2
f(x+ancho)
x
a x x+ancho b
Elabórese un programa que pida al usuario los límites de integración (a y b) y el número de subdivisiones
(N), y que devuelva la aproximación mediante la suma de trapecios del valor de la integral de la función:
b
∫ x senx x dx
a xe
Los límites de integración a y b serán introducidos por el usuario.
Ejecútese el programa para a = 0º y b = 90º, comprobando que:
• para 10 subdivisiones (N = 10) el valor de la integral es: 0.264258, y
• para 100 subdivisiones (N = 100) el valor de la integral es: 0.264766.
Nótese que esta variación en el número de subdivisiones sólo afecta a partir de la cuarta cifra decimal.
Etapa 5 – Funciones
65. Potencia
Suponga que no existe el operador potencia en Matlab. Escriba una función denominada potencia que
acepte dos valores enteros, llamados base y exponente y devuelva base elevado a la potencia exponente.
Elaborar dos versiones. Una de ellas utilizando la instrucción FOR y la otra utilizando la instrucción WHILE.
70. Factorización
Elabora una función que recibe un número entero y que devuelve dos vectores: el primero contiene los
números primos en los que se descompone, y el segundo contiene las potencias de dichos números.
Elabora un programa que solicita al usuario un número entero y calcula su factorización en números primos.
Seguidamente comprueba si es correcta, realizando el cálculo inverso. Finalmente presenta el resultado en
pantalla. Por ejemplo, para el caso de 180 (22 * 32 * 51), el programa presentaría:
Num Pot
2 2
3 2
5 1
Será necesario utilizar la función desarrollada en el ejercicio “más primos”. Se comprobará si el número a
factorizar es divisible por los sucesivos números primos, y cuántas veces es divisible por cada uno de ellos.
Desafío entre compañeros: Busca dos números primos tan grandes como puedas encontrar, multiplícalos y
proporciona el producto resultante a un compañero. Éste deberá utilizar su programa de factorización para
encontrar los dos números primos originales.
Este tipo de desafío es uno de los juegos favoritos entre los actuales expertos en matemática discreta, ya
que los sistemas modernos de cifrado se basan en la utilización de pares de primos muy grandes y, por
tanto, muy difíciles de factorizar.
Elaboraremos un programa que realiza exactamente las mismas operaciones que el ejercicio sobre
Estadígrafos básicos, con la salvedad de que realizará los cálculos llamando a las funciones.
De este modo, sólo es necesario cambiar el contenido de esta función para resolver distintos problemas.
80. Termostato
La temperatura de un recinto varía según la energía térmica (calor) que gana o pierde, según la expresión
T = Q /C [1]
donde C es la capacidad calorífica del recinto, ΔQ es la variación de energía térmica del recinto y ΔT es la
correspondiente variación de temperatura de éste.
El recinto pierde calor por sus paredes porque el exterior se encuentra más frío, según
Q=−k T t , donde ΔQ es la pérdida de energía, ΔT es la diferencia de temperatura entre el
interior y el exterior del recinto, k es la conductividad térmica de las paredes de éste y Δt es el intervalo de
tiempo considerado.
Para calentar el recinto utilizamos un calefactor. Cuando éste se encuentra conectado, aporta energía al
recinto según Q=W t , donde ΔQ es el calor aportado, W es la potencia del calefactor y Δt es el
intevalo de tiempo en que ha estado funcionando.
Para regular la temperatura utilizamos un termostato simple que conecta el calefactor cuando la temperatura
del recinto es menor que la deseada, y lo desconecta cuando es mayor. Por lo tanto, mientras el calefactor
está desconectado, en un intervalo de tiempo Δt el recinto pierde
Q=−k T t [2]
en tanto que cuando el calefactor está conectado, gana
Q=W t−k T t [3]
Deseamos mantener un recinto a una temperatura constante Tobjetivo = 22 ºC, mientras que el exterior se
encuentra a Te = 5ºC. El recinto también se encuentra inicialmente a Ti = 5ºC. Para ello utilizamos un
sistema de calefacción con una potencia W = 300 kcal/s. El recinto tiene una capacidad calorífica
C = 2000 kcal/ºC, y sus paredes tienen una conductividad térmica k = 10 kcal/(sºC)
Calcularemos la ganancia o pérdida de calor, ΔQ, en cada intervalos discretos de tiempo Δt usando [2] y [3],
tras lo cual calcularemos la correspondiente variación de temperatura usando [1]. en función de la
temperatura resultante, conectaremos o desconectaremos el calefactor, y repetiremos el ciclo.
Representaremos gráficamente la evolución de la temperatura a lo largo del tiempo (1000 s en intervalos de
5). Obsérvese la estabilidad de la temperatura una vez alcanzada la temperatura objetivo. Ensáyese con
otros valores de potencia, temperatura exterior, etc.
82. Gravitación
m m'
La fuerza de atracción gravitatoria entre dos cuerpos de masas m y m' es F =G [1], donde
d2
F es la fuerza en Newtons
G = 6,67259 * 10-11 N m2 Kg-2 (constante de gravitación universal)
m y m' son las masas de los cuerpos en Kg
d es la distancia entre los centros de masas de los cuerpos en m.
Simularemos el movimiento de cinco cuerpos somentidos a la atracción gravitatoria. Dichos cuerpos se
denominan Sol, Mercurio, Venus, Tierra y Marte, cuyas coordenadas y velocidad del día 1 de enero de 2000
a las 0h pueden ser obtenidas en http://www.astro.gla.ac.uk/honours/labs/solar_system/JPL%20coordinates/
Podemos encontrar sus masas y otros parámetros necesarios en http://ssd.jpl.nasa.gov/?constants
Definiremos un vector de posición del conjunto de las partículas en cada dimensión:
x = vector de posiciones en x
y = vector de posiciones en y
z = vector de posiciones en z
También definiremos los vectores de velocidad en cada dimensión:
vx = vector de velocidades en x
vy = vector de velocidades en y
vz = vector de velocidades en z
Tendremos un vector de masas m.
A partir de sus coordenadas y masas, calcularemos vectorialmente la fuerza que actúa sobre cada cuerpo.
Para ello podemos aplicar la fórmula [1] en cada dimensión del espacio entre cada par de cuerpos.
Seguidamente, sumaremos vectorialmente las fuerzas que actúan sobre cada cuerpo. Calcularemos la
aceleración del cuerpo teniendo en cuenta que F = m a, y aplicaremos el método de Euler para estimar la
nueva velocidad y posición de cada partícula en un intervalo de de tiempo Δt.
Δv = a Δt [variación de la velocidad]
Δp = v Δt [variación de la posición]
Cada vez que se calcule una nueva posición, ésta se reflejará en una gráfica que mostrará los planetas
orbitando en torno al sol.