SlideShare a Scribd company logo
1 of 24
Download to read offline
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
Ejercicios de Matlab. Entrega 1. 
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. 
A. Área de un triángulo 
area= 
base⋅altura 
2 
área base altura 
2,5 1 3 
4,65 6,2 1,5 
B. Energía relativista 
E=mc2 
donde la velocidad de la luz c = 300 000 
e m 
1,8x105 2 
5,58x105 6,2 
C. Ecuación de segundo grado 
x=−b±b2−4 ac 
2a 
x a b c 
1 1 0 -1 
0,22 13,95 6,2 1,5 
? 1 -3 2 
? 1 0 -1 
? 1 -2 1 
? 1 -10 25 
? 1 1 1 
? 1 0 0 
? 2 1 2 
D. Polinomio y=x55x4−4x32x2−9x15 
E. ¿Y qué nombre pongo a ésta? z= 5x−4y 
3x2−−28 
3x26y4123−y 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 1
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
3. Manipulación de matrices 
A) Almacena en memoria principal la siguiente matriz, en una variable que se llame M1: 
1 2 3 
−3 −4 4 
3 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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 2
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
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 
Di=Vi1−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 2 3 
−3 −4 4 
3 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. 
8. Tabla de conversión de temperaturas 
La relación de diversas escalas de temperatura con la escala Celsius (C) es la siguiente: 
Fahrenheit: F = 
9 
5 
C−32 
Kelvin: K = C273,15 
Reamur: R = 
8 
10 
C 
Construye una tabla de cuatro columnas. La primera contendrá temperaturas Celsius desde 0 hasta 100, de 
medio en medio grado, a segunda contendrá la temperatura Fahrenheit, la siguiente será Kelvin y, por 
ultimo, Reamur. La tabla tendrá el siguiente aspecto: 
0.0000 32.0000 0.0000 273.1500 
0.5000 32.9000 0.4000 273.6500 
1.0000 33.8000 0.8000 274.1500 
1.5000 34.7000 1.2000 274.6500 
2.0000 35.6000 1.6000 275.1500 
... ... ... ... 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 3
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
9. Ecuación de una recta en el plano 
Escribe dos vectores que representan dos puntos en el plano, x1, y1 , x2, y2 y calcula el vector de 
coeficientes (a, b, c) de la ecuación general de la recta a xb yc=0 que los une. El cálculo de los 
coeficientes se realiza mediante las expresiones: a=y2−y1 b=x1−x2 c=y1 x2−y2 x1 
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. 
12. Detección de palíndromos 
Una secuencia es palindrómica o capicúa si leerla de principio a final es equivalente a leerla de final a 
principio. Escribe una expresión que calcula si una cadena c es una secuencia palindrómica. 
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 
Elabórese una expresión que calcula la letra a partir de un número de DNI. 
14. Área y perímetro de polígonos arbitrarios 
El área de un polígono cualquiera formado por n puntos Pi= xi , yi  puede calcularse mediante: 
A= 
n 
xi yi−1−xi−1 yi  
1 
2Σi 
=1 
Para simplificar la anterior expresión, y el correspondiente algoritmo de cálculo, hemos asumido que el 
primer punto del perímetro es el mismo que el último, es decir, P0=Pn 
Elabórese un programa que solicita una lista de puntos (pares de coordenadas) y calcula el área y el 
perímetro del polígono correspondiente. Compruébese el resultado con figuras conocidas. 
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 
a= 
N A−NT 
N ANT 
y c= 
NC−NG 
NCNG 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 4
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
16. Derivación de polinomios 
Es posible representar un polinomio cn xncn−1 xn−1...c2 x2c1 xc0 mediante un vector que 
contiene los coeficientes de éste, de mayor a menor orden: cn , cn−1 , ... , c2 , c1 , c0  . 
La derivada del monomio ci xi es ici xi−1 , 
y la del polinomio cn xncn−1 xn−1...c2 x2c1 xc0 
es ncn xn−1n−1 cn−1 xn−2...3 c3 x22c2 xc1 , 
o en forma de vector de coeficientes ncn , n−1cn−1 , ... , 2c2 , c1  . 
Escribiremos una expresión en la que partiremos de un vector de coeficientes que representa a un 
polinomio, y calcularemos el vector de coeficientes de la derivada de dicho polinomio. 
17. Solución de sistemas de ecuaciones lineales 
Un sistema de ecuaciones lineales puede representarse mediante una expresión matricial: 
a11 x1a12 x2a13 x3=b1 
a21 x1a22 x2a23 x3=b2 
a31 x1a32 x2a33 x3=b3 
 a11 a12 a13 
a21 a22 a23 
a31 a32 a33x1 
x2 
x3=b1 
b2 
b3  AX=B 
Multiplicando la inversa de A por la izquierda: A−1 AX=A−1B resulta X=A−1B , 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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 5
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
Ejercicios de Matlab. Entrega 2. 
Etapa 2 – Ficheros y Gráficos 
18. Gráfica del coseno 
Representa gráficamente el coseno de un ángulo α de 0 a 2π con un salto de π/8. Titula adecuadamente 
cada uno de los ejes así como la gráfica resultante. A continuación añade a esa gráfica la del seno de α. 
Coloca leyendas para distinguir ambas gráficas. Añade un mallado. Edita interactivamente las propiedades 
de las líneas para cambiar los colores, grosores y estilos de punto de las gráficas que has generado. 
19. Superficie 3D: 
Representa la superficie 3D z= 
sin  x2y2 
 x2 y2 entre -10 y 10 para los valores x e y. Para ello deberás 
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. 
20. Movimiento browniano 
El botánico Robert Brown, durante sus observaciones microscópicas, encontró que las partículas pequeñas 
se encontraban en continuo movimiento de tipo aleatorio. Cada pequeño salto de una partícula pueden tener 
lugar en cualquier dirección con la misma probabilidad, mientras que la magnitud del salto sigue una 
distribución normal. 
Si representamos cada salto de una partícula en coordenadas polares planas (ángulo θ y magnitud ρ), el 
ángulo θ tiene una distribución uniforme en el intervalo [0, 2π), mientras que la magnitud ρ tiene una 
dristribución normal de media μ y de desviación típica σ. 
Crearemos un vector theta de ángulos de salto y un vector rho de magnitudes de cada salto utilizando los 
correspondientes generadores de números aleatorios. Supondremos que la partícula se encuentra 
inicialmente en las coordenadas (0,0) y calcularemos su secuencia de posiciones tras cada salto. 
Representaremos gráficamente el camino de la partícula. Comprobaremos el resultado obtenido con 
distintos valores de μ y de σ. 
Una vez conseguido que funcione con una partícula, realizaremos el cálculo con n partículas 
simultaneamente. 
21. Tratamiento de errores 
Dada una variable T de la que se obtienen n medidas experimentales, se define la estimación del error de la 
medida como T= 
3s 
n 
Partiendo de un conjunto de medidas de una variable que se encuentra almacenado en un fichero de texto, 
calcular la media de las medidas y la estimación de su error. 
22. Los últimos serán los primeros 
Escribe un programa que lee una lista de números reales a partir de un fichero. El programa los almacena 
en un vector, y presenta la lista en pantalla en orden inverso al que tienen en el fichero. Define el formato 
que tendrá el fichero y pon un ejemplo de cuál sería su aspecto al abrirlo con un editor. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 6
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
23. Tratamiento de errores derivados 
Dada una variable z que depende de otras variables q1, q2, ..., qn , la estimación del error Dz a partir de los 
errores medidos Dq1, Dq2, ..., Dqn se calcula mediante z=Σi 
∣∂ z 
∂qi∣qi , es decir 
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 
Como el volumen de un cilindro se calcula mediante V = r2 h las derivadas parciales serán 
∂V 
2 hr ∂V 
r = y 
= r2 
∂∂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. 
25. Análisis de cromatogramas 
La cromatografía es una poderosa técnica analítica utilizada para detectar, cuantificar y separar distintos 
compuestos químicos en función de algunas de sus propiedades físico-químicas. Los gráficos resultantes 
(cromatogramas) expresan en el eje x la movilidad del compuesto químico (medida en tiempo o distancia), y 
en el eje y la cantidad detectada en cada instante o posición. 
El análisis habitual de los cromatogramas consiste en detectar sus picos, cuya movilidad se asocia a un 
compuesto determinado, y calcular el área bajo cada pico, que indica la concentración del compuesto. 
En este ejercicio realizaremos un análisis muy simplificado de algunos cromatogramas: 
• Detectaremos los picos del cromatograma. Cada máximo en el gráfico será considerado un pico. 
• Detectaremos los compuestos asociados a los picos. Dispondremos de una tabla de movilidades 
conocidas de distintos compuestos. Para cada pico, buscaremos el compuesto con movilidad más 
parecida y asumiremos que el pico corresponde a dicho compuesto. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 7
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
• 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 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 8
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
Ejercicios de Matlab. Entrega 3. 
Etapa 3 – Programación secuencial 
26. Número de monedas 
Disponiendo de las monedas fraccionarias del euro (50, 20, 10, 5, 2 y 1 cent), calcular el mínimo número de 
monedas que se han de entregar para pagar cualquier importe entre 1 céntimo y 99 céntimos. El programa 
solicita el importe y presenta la cantidad a entregar de cada tipo de moneda. 
27. Unidades de tiempo 
Partiendo de una cantidad de tiempo medida en segundos, calcular el número de semanas, días, horas, 
minutos y segundos a los que corresponde. 
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. 
30. Ley de Ohm 
La ley de Ohm establece una relación entre la intensidad de corriente (I) que circula por un circuito, la 
diferencia de potencial (V) y la resistencia del mismo (R): I= 
V 
R 
Escribe un programa que ofrezca al usuario la opción de calcular I, V o R. El programa solicitará los otros 
dos datos necesarios y claculará la magnitud elegida. 
31. Ecuación de segundo grado. Versión 2 
Se procede como en la versión 1 del problema, pero en este caso se estudia previamente el número de 
soluciones, y si son reales o complejas, calculándolas y presentándolas. 
Considérese que si a = 0, la ecuación no es de segundo grado, por lo que se resolverá como una ecuación 
lineal. Si, además, b = 0, la ecuación no depende de la variable x. Entonces, si c = 0, se trata de una 
ecuación degenerada, mientras que si c ≠ 0, la ecuación es contradictoria. 
Descartados los anteriores casos, es necesario calcular el discriminante b2−4ac , el cual determina el 
número de soluciones, y si son reales o complejas. 
32. Conversor de temperatura. Versión 2 
El programa solicita: 
• Escala de origen: C para Celsius, F para Fahrenheit , R para Reamur, K para Kelvin. 
• Escala de destino: como antes 
• Temperatura en la escala de origen 
El programa presenta la temperatura en la escala de destino y termina. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 9
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
33. Tiro parabólico 
Construir una función que calcula los resultados más relevantes en el tiro parabólico. Para ello, la función 
necesita como parámetros de entrada la velocidad inicial y el ángulo de salida. Se pide: 
• Calcular la altura máxima alcanzada por el proyectil 
• Calcular el alcance máximo 
• Representar gráficamente la trayectoria descrita por el proyectil. Se supondrá que el punto de partida es 
el origen de coordenadas. 
Indicaciones para la práctica: 
Supongamos un lanzamiento de un proyectil con velocidad de salida es v0 y ángulo α. Tendremos que 
las componentes de la velocidad inicial son: 
v0x=v0 cos v0y=v0sin 
y las propiedades cinemáticas del cuerpo en cualquier instante (t) de su movimiento son: 
Magnitud Componente x Componente y 
Aceleración a x=0 a y=−g 
Velocidad v x=v0x v y=v0y−g t 
Posición x=v0x t y=v0y t− 
1 
2 
g t2 
La aceleración es constante, pero la velocidad y la posición del móvil sí que dependen del tiempo. La altura 
máxima se alcanza cuando la componente vertical v y de la velocidad se hace cero. Como 
v y=v0y−g t , se alcanzará la altura máxima cuando t= 
v0y 
g 
. Por lo tanto, la altura máxima es 
ymax = 
v2 
0y 
2 g 
= 
v0 2 
2 g 
sin2 
El móvil avanzará horizontalmente a la velocidad constante v0x durante el tiempo de vuelo, que será 2t 
(siendo t el tiempo en alcanzar la altura máxima) ya que el móvil tarda lo mismo en subir que en bajar, por lo 
tanto el alcance es 
xmax=v0x 2t es decir, alcance = xmax = 
v0 2 
g 
sin 2 
34. Calendario gregoriano 
El calendario actual obedece a la reforma que ordenó el Papa Gregorio XIII en el año 1582. Se decidió que, 
en lo sucesivo, fuesen bisiestos los años múltiplos de cuatro, con la excepción de que los años seculares 
(los acabados en dos ceros) sólo fueran bisiestos los múltiplos de cuatrocientos. 
Escriba un programa que pida al usuario una fecha (día, mes y año como números), y que diga si es o no 
válida (si el mes está comprendido entre 1 y 12, si el número del día es compatible con el mes, y si el año es 
mayor que 1582.) 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 10
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
36. Tiro al blanco 
Tenemos un cañón que lanza proyectiles con una velocidad inicial de disparo v0, y que nuestro objetivo es 
acertar en un blanco que se encuentra localizado en las coordenadas (xB, yB). Para acertar, tendremos que 
ajustar el ángulo de tiro. Sabemos que las componentes de la velocidad inicial se calculan así: 
v0x=v0cos  v0y=v0 sin 
Dado que en la coordenada x el movimiento es uniforme, en la coordenada y es uniformemente acelerado, y 
utilizando las ecuaciones correspondientes a esos movimientos, obtenemos el siguiente sistema de dos 
ecuaciones con dos incógnitas, t y a (xB e yB son las coordenadas conocidas del blanco): 
x B=v0 cos t yB=y0v0 sint 
1 
2 −g t2 
De aquí podemos eliminar t, obteniendo una única ecuación en tan(α), empleando la relación trigonométrica: 
1 
cos2 
=1tan2 
resultando la ecuación de segundo grado en tan(α): 
yB=y0x B tan  
12 
−g 
xB 2 
v0 2 
1tan2 
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 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 11
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
37. Ajuste por mínimos cuadrados 
El trabajo de laboratorio tiene como fruto una serie de datos experimentales representados, normalmente, 
por un conjunto discreto de pares de datos {xi, yi}, siendo i un índice natural que varía de 1 a N. La 
manipulación de los datos tiene normalmente uno de estos objetivos: 
• Determinar una ley experimental 
• Comprobar una ley experimental previamente supuesta 
Si los datos están relacionados entre sí, se puede encontrar una función que se ajuste a los datos a través 
del método de ajuste por mínimos cuadrados. El método se basa en minimizar la siguiente función objetivo: 
N 
 yi− f  xi 2 
2=Σi 
=1 
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 
 yi−ab xi 2 
2a ,b=Σi 
=1 
Desarrollando el cuadrado se obtiene: 
N 
yiΣi 
2a ,b=Σi 
=1 
N 
Na2b2Σi 
=1 
N 
xi 
=1 
N 
yi−2 bΣi 
2−2 aΣi 
=1 
N 
xi yi2 a bΣi 
=1 
N 
xi 
=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 
∂a =0 y ∂2 
∂b =0 
De donde se obtienen las soluciones para a y b: 
b= 
N 
xi yi−Σi 
NΣi 
=1 
N 
xiΣi=1 
=1 
N 
yi 
N 
xi 
NΣi 
=1 
N 
xi 2 
2−Σi 
=1 
a= 
N 
yi−bΣi 
Σi 
=1 
N 
xi 
=1 
N 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 12
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
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. 
39. Mayor y menor 
Realizar un script que pida n números e imprima el número mayor y el número menor. 
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 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 13
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
42. Rombo 
Escribir un script que amplíe el programa anterior para dibujar un rombo: 
O 
OOO 
OOOOO 
OOOOOOO 
OOOOO 
OOO 
O 
43. Más sumatorio 
Escribe un programa que solicite un número n y calcule la suma de todos los números naturales hasta n. 
Haz la prueba con valores grandes de n. 
Cuando Gauss tenía 10 años, su profesor quiso un rato de tranquilidad, y pidió a sus alumnos que sumaran 
todos los números naturales del 1 al 100. En unos instantes, Gaus obtuvo la solución. Se dio cuenta de que 
haciendo parejas de números (primero con último, segundo con penúltimo,...) se obtiene siempre la misma 
suma, 101, y como son 50 parejas, el resultado es 101 x 50 = 5050. 
En efecto, S= 
a1an 
2 
n donde a1 es el primer término y an es el enésimo término a sumar. Utiliza esta 
expresión para comprobar el resultado del programa. 
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. 
45. Enteros al cuadrado 
Escribe un programa que lea números enteros procedentes del teclado y que cada vez que el número sea 
par lo eleve al cuadrado. El programa terminará cuando el usuario introduzca 0. 
46. Primera vocal 
Realizar un script que solicite al usuario una cadena, en la cual busca y escribe la primera vocal que 
aparezca. 
47. Más monedas 
Disponiendo de todos los billetes y monedas fraccionarias del euro, calcular el mínimo número de billetes y 
monedas que se han de entregar para pagar cualquier importe. 
48. Conversor de temperatura. Versión 3 
Igual que el “Conversor de temperatura 2”, pero, en este caso, el programa repite la operación hasta que el 
usuario indica una escala inexistente. Entonces termina. 
49. Serie 
El programa solicita x y n, y calcula la suma de la serie xi 
i! 
n xi 
i! 
hasta el término n, es decir Σi 
=0 
¿Hasta qué valor de n es factible hacer el cálculo? 
Pista para optimizar el cálculo: evita realizar el cálculo de xi y de i! en cada iteración. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 14
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
50. ¿Soy un primo? 
El programa solicita un número entero, comprueba si es primo y lo indica. 
Para comprobar la divisibilidad de un número por otro se utilizará la función mod. 
51. Más serie: exponencial 
Dado que la serie del anterior ejercicio es convergente, escribe un programa que solicite el valor de x, y un 
grado de precisión (por ejemplo, 0.0001 para indicar precisión de una diezmilésima). El programa sumará 
tantos términos de la serie como necesite, hasta que el término a añadir sea menor que la precisión 
establecida. 
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. 
52. Estadígrafos básicos 
El programa solicita un número n que indicará la cantidad de datos que se leerán a continuación. Solicitará 
cada uno de los datos xi, y con ellos calculará: 
La suma de todos ellos: 
n 
xi 
S=Σi 
=1 
La suma de los cuadrados: 
n 
xi 
Sc=Σi 
=1 
2 
La media: 
M= 
S 
n 
La varianza: 
V = 
Sc 
n −M2 
La desviación típica: s=V 
El mayor de los datos max  xi i=1...n 
El menor de los datos min  xi i=1...n 
53. Estadígrafos flotantes 
Como en el anterior problema, pero se imprimirá el resultado después de introducir cada dato, utilizando 
todos los disponibles hasta el momento. 
54. Criba de Eratóstenes 
Este conspicuo señor griego se dio cuenta de que si en una lista de números tachaba todos los múltiplos de 
cada primo, en la lista sólo le quedaban primos. Utilizaremos este método para calcular los primos existentes 
hasta 1000 sin hacer una sola división. 
Comenzaremos creando una matriz que contenga los número del 1 al 1000. Aprovechando que sabemos 
que el 2 es primo, nos ubicamos en el 2 y saltamos por la matriz de 2 en 2, poniendo un cero en cada casilla 
donde aterricemos. Con esto hemos eliminado los múltiplos de 2. Desde el 2, avanzamos por la matriz hasta 
encontrar el siguiente número no cero. En este caso será el 3, así que saltaremos por la matriz de 3 en 3, 
poniendo un cero en cada lugar donde aterricemos. Repetimos el proceso hasta que terminamos con la 
tabla. Entonces quedarán en ella únicamente los primos, junto con todos los ceros que han sustituido a los 
no primos. Imprimiremos exclusivamente los números primos. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 15
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
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). 
56. Raíz cuadrada 
El cálculo de  x puede realizarse de forma aproximada mediante un método iterativo. Se estima 
inicialmente la solución como si= 
x 
2 lo cual sólo es cierto en el caso de x = 4. Seguidamente calculamos 
una nueva aproximación si1=si− 
2−x 
2 si 
si 
. Si la diferencia en valor absoluto entre las dos aproximaciones 
es inferior a un cierto umbral e , ∣si1−si∣e , damos por buena la última aproximación. Si no, 
realizamos una nueva aproximación. 
Elabora un programa que solicita al usuario el umbral e y el valor de x. Calcula iterativamente la raíz 
cuadrada de x y la presenta junto con el valor proporcionado por la función sqrt. 
57. Contador de palabras 
El programa solicita una línea de texto y calcula el número de palabras presentes en ella (separadas 
mediante espacios). 
58. Contador de palabras en múltiples líneas 
Igual que antes, pero en este caso, después de dar el resultado se vuelve a solicitar una nueva línea. El 
proceso se repite hasta que el usuario teclea “fin”. Entonces el programa presenta el número de líneas y la 
suma de palabras en todas ellas. 
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. 
60. Búsqueda y contaje de subcadenas 
Dado un fichero de texto, se trata de contar el número de veces que aparece una cadena de caracteres. 
El programa solicitará el nombre de un fichero de texto y una cadena de caracteres. Seguidamente, abrirá el 
fichero y buscará todas las apariciones de la cadena. Finalmente, presentará el número de apariciones de 
ésta y terminará. 
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 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 16
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
62. Cálculo de combinaciones, permutaciones y variaciones 
El programa solicita el tipo de cálculo a realizar, combinaciones, permutaciones o variaciones, tanto con 
repetición como sin repetición. También solicita los parámetros necesarios para el cálculo. El programa 
aplica la fórmula pertinente y presenta el resultado. 
Permutaciones de m elementos: m! Combinaciones de m elementos 
tomados de n en n: 
m! 
Variaciones con repetición de m n!m−n ! 
elementos tomados de n en n: mn 
Combinaciones con repetición de m 
elementos tomados de n en n: 
mn−1! 
n!m−1! 
Variaciones sin repetición de m 
elementos tomados de n en n: 
m! 
n! 
Es interesante observar los límites prácticos para los cálculos producidos por el desbordamiento. Estúdiense 
distintas posibilidades para evitarlo. 
i 
a 
63. Integración numérica 
El Σ∫método de integración mediante la suma de trapecios consiste en aproximar el valor de la integral de una 
función en el intervalo [a,b] a la suma de las áreas de los rectángulos que resultan al subdividir dicho 
b 
N 
intervalo en un número N de subdivisiones: f  x  dx ≃ ei 
=1 
donde el área de cada elemento ei vale 
f  xi  f  xi1 
ei =  xi1−xi ⋅ 
2 = ancho⋅ 
f  xi  f  xiancho 
2 
siendo ancho = 
b−a 
N = xi1−xi 
x 
a x x+ancho b 
f(x) 
(f(x)+f(x+ancho))/2 
f(x+ancho) 
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 sen x 
∫a 
xe x dx 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 17
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
64. Traducción del código genético 
Dada una secuencia de ARN, representada por los caracteres A, G, C, U, obtendremos la secuencia de 
aminoácidos de la proteína resultante de la traducción. Sabemos que el código genético es el siguiente: 
Aminoácido Codones Aminoácido Codones 
Alanina Ala A GC(A,C,G,U) Leucina Leu L CU(A,C,G,U) o UU(A,G) 
Arginina Arg R CG(A,C,G,U) o AG(A,G) Lisina Lys K AA(A,G) 
Asparragina Asn N AA(C,U) Metionina Met M AUG (inicio de la síntesis) 
Aspartato Asp D GA(C,U) Fenilalanina Phe F UU(C,U) 
Cisteína Cys C UG(C,U) Prolina Pro P CC(A,C,G,U) 
Glutamato Glu E GA(A,G) Serina Ser S UC(A,C,G,U) o AG(C,U) 
Glutamina Gln Q CA(A,G) Treonina Thr T AC(A,C,G,U) 
Glicina Gly G GG(A,C,G,U) Triptófano Trp W UGG 
Histidina His H CA(C,U) Tirosina Tyr Y UA(C,U) 
Isoleucina Ile I AU(A,C,U) Valina Val V GU(A,C,G,U) 
Terminación de la síntesis UA(A,G) o UGA 
Nota: A modo de ejemplo, GC(A,C,G,U), significa GCA, GCC, GCG o GCU 
Se leerá desde teclado (o desde fichero) una secuencia de ARN, formada por nucleótidos representados 
mendiante los caracteres A, G, C, U. Podrá existir también espacio blanco (espacios, tabulaciones y saltos 
de línea), pero no tendrá significado alguno para la secuencia. 
Se recorrerá la secuencia de nucleótidos hasta detectar el codón AUG, que inicia la traducción y, además, 
codifica el aminoácido metionina. Desde ese punto se recorrerán los codones sucesivos (grupos de 3 
nucleótidos), traduciendo cada uno de ellos al correspondiente aminoácido. El proceso termina al encontrar 
cualquiera de los codones de terminación (UAA, UAG o UGA) o al terminar la secuencia. 
Por ejemplo, la secuencia de ARN: UGUAAGAGGUAUGCACUCAAAAGACUGACACCUG 
codifica el polipéptido: Met-His-Ser-Lys-Asp 
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. 
66. Cantidad de cifras 
Realizar una función en Matlab que reciba un número entero y devuelva la cantidad de cifras que tiene el 
número (ejemplo: 123 tiene 3 cifras). 
Realiza otra función que devuelva la suma de las cifras del número (ejemplo: 123 -> 1+2+3 = 6). 
67. Más 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 una función entera que recibe como argumento un número entero i, y devuelve el valor de f i 
Realiza una implementación iterativa y otra recursiva. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 18
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
68. Más derivación de polinomios 
Utilizando el mismo planteamiento que en el ejercicio sobre “derivación de polinomios” elaboraremos dos 
funciones: 
derivapol recibe un vector que representa el polinomio p, calcula su derivada p' y la devuelve en forma de 
otro vector. 
evalpol recibe un vector que representa un polinomio p, y un valor real x. Calcula el valor del polinomio 
en x, es decir, p(x). 
Elaboraremos un programa que solicita un polinomio, llama a derivapol para obtener su derivada y pide dos 
valores de x al usuario, x1 y x2. Se evaluará el polinomio y su derivada en sun conjunto de valores entre x1 y 
x2 y se presentará el resultado gráficamente. 
69. Más primos 
Escribe una función lógica que recibe un número entero e indica si el número es primo. 
Trata de optimizar la función, reduciendo el número total de cálculos aritméticos. 
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. 
71. Números perfectos 
Un número perfecto es el que es igual a la suma de sus divisores, excluido él mismo. 
Ejemplo de número perfecto: 6 = 1+2+3 Contraejemplo: 12 ≠ 1+2+3+4+6 
Se pide: 
• Escribir una función que reciba un número y devuelva si es o no perfecto. 
• Escribir un script que, utilizando la función anterior, muestre por pantalla los números perfectos que hay 
desde el 1 al 200. 
72. Más combinatoria 
Elaboraremos cinco funciones, una por cada uno de los cálculos del ejercicio sobre Cálculo de 
combinaciones, permutaciones y variaciones. Obsérvese que alguna de las funciones del módulo puede 
hacer uso de otras funciones del mismo módulo. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 19
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
73. Más estadígrafos 
Elaboraremos siete funciones, una por cada estadígrafo de los utilizados en el ejercicio sobre Estadígrafos 
básicos. Las funciones recibirán como argumento de entrada un vector con los datos a analizar, y 
devolverán como resultado un valor real. La declaración de cada una de ellas podrá seguir el siguiente 
esquema: 
function r = estadigrafo(v) 
... % Aquí se calcula el estadígrafo 
r = ... % y se asigna el resultado 
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. 
74. Química del carbono 
Realice un programa que pida al usuario una fórmula química en una cadena de caracteres. Esta fórmula 
podrá tener los siguientes caracteres: 
• ‘C’, ‘H’, ‘O’, ‘N’ como identificadores de los elementos básicos de la química del carbono 
• ’2’, ’3’, ’4’, ‘5’ y ‘6’ como índices posibles de estos elementos 
Se pide analizar esta fórmula para: 
• Decidir si contiene algún carácter no válido, en cuyo caso se deberá volver a pedir una nueva fórmula al 
usuario 
• En el caso de que todos los caracteres sean válidos mostrar por pantalla el número de átomos de cada 
tipo que contiene la fórmula 
• Por último, mostrar por pantalla el peso molecular 
Se recomienda dividir el problema en subproblemas más sencillos para que sea más fácil la resolución del 
problema final. Notar que el número de átomos de un elemento es función del carácter situado a 
continuación de él en la fórmula 
NOTA: Para que el programa considere que una fórmula es correcta es suficiente con comprobar que sólo 
coniene caracteres válidos. Es decir, no es necesario que el programa decida si la fórmula es químicamente 
correcta o no. Son ejemplos de fórmulas consideradas válidas: CH3CH3, H3CCH3, C2H6. 
75. Solución de ecuaciones – Método de bipartición 
Según el teorema de Bolzano, si una función continua en el 
intervalo [a, b] toma valores de distinto signo en a y en b, 
entonces existe al menos un valor entre ambos extremos del 
intervalo en el que la función se hace nula. 
Esto nos permite diseñar un método para encontrar 
soluciones a una función continua en un intervalo. El usuario 
puede tantear hasta encontrar un valor a y otro b, tales que 
en uno la función es positiva, y en el otro negativa. 
Ahora, el programa puede calcular un punto intermedio c = (a 
+b)/2 y calcular el valor de la función. El programa sustituirá 
uno de los extremos del intervalo por c: concretamente aquel 
que tenga el mismo signo que c. Ahora tenemos el mismo 
caso que al principio, pero con un intervalo la mitad de 
amplio. 
Realizaremos el anterior proceso de bipartición tantas veces 
como sea necesario, hasta que la anchura del intervalo sea inferior a una tolerancia determinada también 
por el usuario. 
Elabórese un programa que realiza las siguientes operaciones: 
• Solicita al usuario dos valores de la variable independiente x: a y b, y el programa calcula f(a) y f(b). 
• Si f(a) y f(b) son del mismo signo, indica que no es posible encontrar una solución entre ambos (aunque 
no estamos seguros de que no la haya, sino que el método no se puede aplicar). 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 20
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
• Si son de distinto signo: 
• Solicita al usuario una tolerancia para la solución (máximo error admisible). 
• Aplica el método de bipartición descrito y se presenta la solución. 
La ecuación de la que se busca solución ha de estar escrita por separado. Para ello, escribiremos una 
función declarada de la siguiente manera: 
function r = f(x) % x es un valor real 
r = ... % Aquí va la función que queremos resolver 
De este modo, sólo es necesario cambiar el contenido de esta función para resolver distintos problemas. 
76. Solución de ecuaciones – Método de Newton 
El método de Newton para resolver ecuaciones se basa en el conocimiento de la función y de su derivada. 
Partiendo de una aproximación xi de la solución se 
calcula en ese punto el valor de la función f  xi  y el de la 
derivada f '  xi . Con esos datos se calcula una nueva 
aproximación xi1=xi− 
f  xi  
f '  xi  
. Se repite el proceso, 
refinando iterativamente la solución hasta que la diferencia 
entre dos valores sucesivos en el cálculo ∣xi1−xi∣ es 
inferior a un valor de tolerancia establecido por el usuario. 
Para no tener que codificar una función y su derivada, nos 
centraremos en un caso más simple, elaborando un 
programa que calcula soluciones de ecuaciones polinómicas. 
Aprovecharemos la función derivapol y la función evalpol que 
fueron desarrolladas en el ejercicio sobre más derivación de 
polinomios. 
El programa solicitará al usuario: 
• El orden de la función polinómica a resolver (la máxima potencia de la variable x en el polinomio). Se 
ubicará un vector para contener el polinomio problema y otro para contener su derivada. 
• Los coeficientes del polinomio que define la función a resolver. 
• El valor de la tolerancia o precisión deseada en el cálculo de la solución. 
• Un valor inicial xi de la variable x, que se utilizará como primera aproximación del resultado. 
Se utilizará la función derivapol para calcular la derivada del polinomio problema introducido por el usuario. 
Después, utilizará la función evalpol para evaluar la función y su derivada en xi y calculará la siguiente 
aproximación xi1 según se ha descrito. Esto se repetirá tantas veces como sea necesario hasta que la 
solución sea tan precisa como establece la tolerancia. Será ilustrativo presentar en cada iteración los valores 
de xi , f  xi  y f '  xi . 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 21
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
77. Ordenación – Método de la burbuja 
En muchas ocasiones es necesario ordenar los valores que contiene una matriz. Para ello es necesario 
intercambiar los contenidos de los elementos siguiendo algún método que los ordene. 
En este ejercicio vamos a utilizar el método de la burbuja: 
• Compararemos el primer elemento de la matriz con el que le sigue. Si están ordenados, se dejan como 
están, y si no, se intercambian. Avanzaremos una posición y repetiremos la operación, y así 
sucesivamente hasta llegar al final de la matriz. A este recorrido por la matriz, denominaremos pasada. 
• Si durante la pasada no hemos realizado algún intercambio, entonces la matriz está ordenada. 
• Por eso, repetiremos la pasada descrita tantas veces como sea necesario, hasta que en una de ellas no 
hayamos realizado ningún intercambio. En ese momento, la matriz estará ordenada. 
Escribiremos la función burbuja, que recibe un único argumento, el vector a ordenar, y devuelve un vector 
con los valores ordenados, tras emplear el método descrito. 
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El 
programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la 
función burbuja, que devolverá el vector ordenado, y presentaremos éste en pantalla. 
Fíjate en los detalles del procedimiento de ordenación y busca posibles formas de optimizarlo. 
78. Ordenación – Método de selección 
Este método de ordenación consta de los siguientes pasos (suponiendo ordenación de menor a mayor): 
• Buscamos el menor elemento del vector. Lo intercambiamos por el primero en la lista. 
• Buscamos el menor elemento comenzando en el segundo. Lo intercambiamos por el segundo. 
• Y así sucesivamente... 
Escribiremos la función ordselec, que recibe un único argumento, el vector a ordenar, y devuelve el vector 
ordenado, tras emplear el método descrito. 
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El 
programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la 
función ordselec, que devolverá el vector ordenado, y presentaremos éste en pantalla. 
79. Ordenación – Método de inserción 
Este método de ordenación consta de los siguientes pasos (suponiendo ordenación de menor a mayor): 
• Partimos de un vector con datos desordenados, y de otro que habrá de recibir los datos ordenados. 
• Copiamos el primer elemento del vector a ordenar en la primera posición del segundo vector. 
• Tomamos el segundo elemento del vector a ordenar y lo comparamos con el último elemento del 
segundo vector. Si el nuevo es menor, desplazamos el elemento una posición. 
• En general, por cada elemento que se inserta en el nuevo vector: 
• Se compara con los elementos del vector ordenado empezando por el final. 
• Si el elemento a insertar es menor que el ya existente, se desplaza el existente una posición. 
• Si no, se inserta en la posición que dejó libre el anterior desplazamiento. 
Escribiremos la función ordinsert, que recibe un único argumento, el vector a ordenar, y devuelve el vector 
ordenado, tras emplear el método descrito. 
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El 
programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la 
función ordinsert, que devolverá el vector ordenado, y presentaremos éste en pantalla. 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 22
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
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. 
81. Termostato PID 
Existen sistemas de control con mejor comportamiento que el termostato simple, como es el PID 
(Proporcional Integral Derivativo). En lugar de conectar y desconectar el calefactor, se aplican valores 
graduales de potencia según lo cerca o lejos que nos encontremos del objetivo, considerando el “error” 
e = Tobjetivo - T: 
Término proporcional: P=K p e (la potencia aplicada es proporcional al error) 
Término integral: I=KiΣet (la potencia aplicada es proporcional al error acumulado) 
Término derivativo: D=Kd 
e 
t 
(la potencia aplicada es proporcional a la variación del error) 
Repetiremos el ejercicio sobre el termostato utilizando este sistema de control. Para cada intervalo de 
tiempo se calculará el error, e, su integral discreta, Σ e Δt, y su derivada discreta Δe/Δt. La potencia 
aplicada será 
W=Wmax PID , es decir, W=Wmax K p eKiΣetKd 
e 
t 
 
donde Wmax es la potencia del calefactor. Cuando W sea menor que cero, aplicaremos 0, porque un 
calefactor no refrigera. Del mismo modo, cuando W sea mayor que la potencia máxima del calefactor, se 
aplicará la potencia máxima. 
Ensáyese en las mismas condiciones que el ejercicio sobre el termostato, utilizando los valores: 
Kp = 0,1 Ki = 0 Kd = 0 Control proporcional (P) ¿Dónde se estabiliza al temperatura? 
Kp = 0,1 Ki = 0,001 Kd = 0 Control PI. ¿Qué ocurre con la temperatura antes de estabilizarse? 
Kp = 0,1 Ki = 0,001 Kd = 10 Control PID. ¿Cómo es ahora el comportamiento? 
Kp = 0,1 Ki = 0,001 Kd = 100 ¿Qué efecto tiene un Kd tan grande? 
¿Cuál es la potencia aplicada cuando la temperatura se estabiliza? 
Ensaya el comportamiento del sistema con otros valores de los tres parámetros PID. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 23
Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 
82. Gravitación 
La fuerza de atracción gravitatoria entre dos cuerpos de masas m y m' es F=G mm' 
d 2 [1], donde 
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. 
José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 24

More Related Content

What's hot

Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices Igonmrod
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Emerson Garay
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacionJLAntonio
 
Funciones Internas y Operación de Asignación
Funciones Internas y Operación de AsignaciónFunciones Internas y Operación de Asignación
Funciones Internas y Operación de AsignaciónGerson Cabezas
 
Fundamentos de matlab
Fundamentos de matlabFundamentos de matlab
Fundamentos de matlabMarc Llanos
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012gerardoarbito
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices Iguestaf8aa5
 
Informe de proyecto final
Informe de proyecto finalInforme de proyecto final
Informe de proyecto finalAldrin Eduardo
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilabGabriel Romero
 
Actividad 2 programacion orientada a objetos jaren gonzalez
Actividad 2 programacion orientada a objetos  jaren gonzalezActividad 2 programacion orientada a objetos  jaren gonzalez
Actividad 2 programacion orientada a objetos jaren gonzalezCristian J Malambo M
 
Operaciones matemáticas con arrays y aplicaciones
Operaciones matemáticas con arrays y aplicacionesOperaciones matemáticas con arrays y aplicaciones
Operaciones matemáticas con arrays y aplicacionesmelman00007
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con javadiegocastro1234
 
10. subalgoritmos parte i
10. subalgoritmos parte i10. subalgoritmos parte i
10. subalgoritmos parte ircarrerah
 

What's hot (20)

Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices I
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Funciones Internas y Operación de Asignación
Funciones Internas y Operación de AsignaciónFunciones Internas y Operación de Asignación
Funciones Internas y Operación de Asignación
 
Fundamentos de matlab
Fundamentos de matlabFundamentos de matlab
Fundamentos de matlab
 
Mat lab01
Mat lab01Mat lab01
Mat lab01
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices I
 
Funciones Internas
Funciones Internas Funciones Internas
Funciones Internas
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Ejercicios de vectores o arrays
Ejercicios de vectores o arraysEjercicios de vectores o arrays
Ejercicios de vectores o arrays
 
Informe de proyecto final
Informe de proyecto finalInforme de proyecto final
Informe de proyecto final
 
Ejercicios de arreglo
Ejercicios de arregloEjercicios de arreglo
Ejercicios de arreglo
 
Tutorial descilab
Tutorial descilabTutorial descilab
Tutorial descilab
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Actividad 2 programacion orientada a objetos jaren gonzalez
Actividad 2 programacion orientada a objetos  jaren gonzalezActividad 2 programacion orientada a objetos  jaren gonzalez
Actividad 2 programacion orientada a objetos jaren gonzalez
 
Operaciones matemáticas con arrays y aplicaciones
Operaciones matemáticas con arrays y aplicacionesOperaciones matemáticas con arrays y aplicaciones
Operaciones matemáticas con arrays y aplicaciones
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
10. subalgoritmos parte i
10. subalgoritmos parte i10. subalgoritmos parte i
10. subalgoritmos parte i
 

Viewers also liked

I examen parcial 2012 a (solucionario)
I examen parcial 2012  a (solucionario)I examen parcial 2012  a (solucionario)
I examen parcial 2012 a (solucionario)victor ore
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesmarigelcontreras
 
Matlab 2 Capitulo 5
Matlab 2 Capitulo 5Matlab 2 Capitulo 5
Matlab 2 Capitulo 5guest4f4d78d
 
GRAFICA DE LA DERIVADA EN MATLAB
GRAFICA DE LA DERIVADA EN MATLABGRAFICA DE LA DERIVADA EN MATLAB
GRAFICA DE LA DERIVADA EN MATLABandresbob
 
Ejercicios de energía cinética y potencia
Ejercicios de energía cinética y potenciaEjercicios de energía cinética y potencia
Ejercicios de energía cinética y potenciaRosa Puga
 
Tipo de dato DOUBLE
Tipo de dato DOUBLETipo de dato DOUBLE
Tipo de dato DOUBLEkenixxx
 
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICA
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICATRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICA
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICATorimat Cordova
 
Manejo Vectores Matlab
Manejo Vectores MatlabManejo Vectores Matlab
Manejo Vectores MatlabPaul Arevalo
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de javaFaral TF
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltosfermodcor
 
Ejercicios leyes de gases
Ejercicios leyes de gasesEjercicios leyes de gases
Ejercicios leyes de gasesOscar Lucas
 
Problemas resueltos-cap-28-fisica-serway
Problemas resueltos-cap-28-fisica-serwayProblemas resueltos-cap-28-fisica-serway
Problemas resueltos-cap-28-fisica-serwayEsteban Esteb
 
02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujoTete Alar
 

Viewers also liked (17)

I examen parcial 2012 a (solucionario)
I examen parcial 2012  a (solucionario)I examen parcial 2012  a (solucionario)
I examen parcial 2012 a (solucionario)
 
Aplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionalesAplicación de arreglos bidimensionales
Aplicación de arreglos bidimensionales
 
Matlab 2 Capitulo 5
Matlab 2 Capitulo 5Matlab 2 Capitulo 5
Matlab 2 Capitulo 5
 
GRAFICA DE LA DERIVADA EN MATLAB
GRAFICA DE LA DERIVADA EN MATLABGRAFICA DE LA DERIVADA EN MATLAB
GRAFICA DE LA DERIVADA EN MATLAB
 
Ejercicios de energía cinética y potencia
Ejercicios de energía cinética y potenciaEjercicios de energía cinética y potencia
Ejercicios de energía cinética y potencia
 
Tipo de dato DOUBLE
Tipo de dato DOUBLETipo de dato DOUBLE
Tipo de dato DOUBLE
 
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICA
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICATRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICA
TRANSFORMACION DE LA ENERGIA ELECTRICA EN ENERGIA TERMICA
 
17 arreglos bidimensionales java
17 arreglos bidimensionales java17 arreglos bidimensionales java
17 arreglos bidimensionales java
 
Manejo Vectores Matlab
Manejo Vectores MatlabManejo Vectores Matlab
Manejo Vectores Matlab
 
Metodos numericos con matlab
Metodos numericos con matlabMetodos numericos con matlab
Metodos numericos con matlab
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de java
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltos
 
La energía y sus transformaciones
La energía y sus transformacionesLa energía y sus transformaciones
La energía y sus transformaciones
 
Ejercicios leyes de gases
Ejercicios leyes de gasesEjercicios leyes de gases
Ejercicios leyes de gases
 
Problemas de fisica
Problemas de fisicaProblemas de fisica
Problemas de fisica
 
Problemas resueltos-cap-28-fisica-serway
Problemas resueltos-cap-28-fisica-serwayProblemas resueltos-cap-28-fisica-serway
Problemas resueltos-cap-28-fisica-serway
 
02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo02 Ejercicios Resueltos diagramas de flujo
02 Ejercicios Resueltos diagramas de flujo
 

Similar to Fi0708 ejercicios

Métodos Directos
Métodos DirectosMétodos Directos
Métodos DirectosKike Prieto
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfmargothingrithllanca
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfmargothingrithllanca
 
Banco de preguntas 2 do quimestre
Banco de preguntas  2 do quimestreBanco de preguntas  2 do quimestre
Banco de preguntas 2 do quimestreAlberto Pazmiño
 
Material de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentroMaterial de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentrorodalopresentaciones
 
Actividades de verano 2016 17
Actividades de verano        2016 17Actividades de verano        2016 17
Actividades de verano 2016 17ydiazp
 
Cm tarea departamental # 2 enero 2011
Cm tarea departamental # 2 enero 2011Cm tarea departamental # 2 enero 2011
Cm tarea departamental # 2 enero 2011Josue Avila
 
Oper.2305.m01.lectura.v1
Oper.2305.m01.lectura.v1Oper.2305.m01.lectura.v1
Oper.2305.m01.lectura.v1LUIS COAQUIRA
 
Matrices en excel1
Matrices en excel1Matrices en excel1
Matrices en excel1Astarte Moon
 
“Refuerzo de comando básicos matlab
“Refuerzo de comando básicos matlab“Refuerzo de comando básicos matlab
“Refuerzo de comando básicos matlabDiego Erazo
 
Modulo nuevo fisica 5 to año de secundaria
Modulo nuevo fisica 5 to  año de secundariaModulo nuevo fisica 5 to  año de secundaria
Modulo nuevo fisica 5 to año de secundariaJhoel Calderón Vidal
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoSANTIAGO PABLO ALBERTO
 

Similar to Fi0708 ejercicios (20)

Banco de preguntas
Banco de preguntasBanco de preguntas
Banco de preguntas
 
Ejercicios matenaticos
Ejercicios matenaticosEjercicios matenaticos
Ejercicios matenaticos
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos Directos
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdf
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdf
 
matlab
matlabmatlab
matlab
 
Trabajo verano 2015
Trabajo verano 2015Trabajo verano 2015
Trabajo verano 2015
 
Soljul14gen
Soljul14genSoljul14gen
Soljul14gen
 
Banco de preguntas 2 do quimestre
Banco de preguntas  2 do quimestreBanco de preguntas  2 do quimestre
Banco de preguntas 2 do quimestre
 
Material de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentroMaterial de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentro
 
Actividades de verano 2016 17
Actividades de verano        2016 17Actividades de verano        2016 17
Actividades de verano 2016 17
 
Cm tarea departamental # 2 enero 2011
Cm tarea departamental # 2 enero 2011Cm tarea departamental # 2 enero 2011
Cm tarea departamental # 2 enero 2011
 
Oper.2305.m01.lectura.v1
Oper.2305.m01.lectura.v1Oper.2305.m01.lectura.v1
Oper.2305.m01.lectura.v1
 
Cuaderno Matemática 11º Semestre
Cuaderno Matemática 11º SemestreCuaderno Matemática 11º Semestre
Cuaderno Matemática 11º Semestre
 
Matriices
MatriicesMatriices
Matriices
 
Matrices en excel1
Matrices en excel1Matrices en excel1
Matrices en excel1
 
“Refuerzo de comando básicos matlab
“Refuerzo de comando básicos matlab“Refuerzo de comando básicos matlab
“Refuerzo de comando básicos matlab
 
E02 tratamiento de_datos_experimentales
E02 tratamiento de_datos_experimentalesE02 tratamiento de_datos_experimentales
E02 tratamiento de_datos_experimentales
 
Modulo nuevo fisica 5 to año de secundaria
Modulo nuevo fisica 5 to  año de secundariaModulo nuevo fisica 5 to  año de secundaria
Modulo nuevo fisica 5 to año de secundaria
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 

More from ford81

Matlab
MatlabMatlab
Matlabford81
 
Matlab basico
Matlab basicoMatlab basico
Matlab basicoford81
 
Matlab aplicacione s
Matlab aplicacione sMatlab aplicacione s
Matlab aplicacione sford81
 
Lab view
Lab viewLab view
Lab viewford81
 
Curso matlab
Curso matlabCurso matlab
Curso matlabford81
 
Curso de lab view seis horas
Curso de lab view seis horas Curso de lab view seis horas
Curso de lab view seis horas ford81
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlabford81
 
Tipos de sensores
Tipos de sensoresTipos de sensores
Tipos de sensoresford81
 
Teroria de sensores
Teroria de sensoresTeroria de sensores
Teroria de sensoresford81
 
Sensores
SensoresSensores
Sensoresford81
 
Robotica
RoboticaRobotica
Roboticaford81
 
Presentacion
PresentacionPresentacion
Presentacionford81
 
Practica5elcaanalogica
Practica5elcaanalogicaPractica5elcaanalogica
Practica5elcaanalogicaford81
 
Manejo de sensores
Manejo de sensoresManejo de sensores
Manejo de sensoresford81
 
Inst indus-circuitos_elect
Inst  indus-circuitos_electInst  indus-circuitos_elect
Inst indus-circuitos_electford81
 
Contactores y actuadores
Contactores y actuadoresContactores y actuadores
Contactores y actuadoresford81
 
Carrocería del carro electico
Carrocería del carro electicoCarrocería del carro electico
Carrocería del carro electicoford81
 

More from ford81 (17)

Matlab
MatlabMatlab
Matlab
 
Matlab basico
Matlab basicoMatlab basico
Matlab basico
 
Matlab aplicacione s
Matlab aplicacione sMatlab aplicacione s
Matlab aplicacione s
 
Lab view
Lab viewLab view
Lab view
 
Curso matlab
Curso matlabCurso matlab
Curso matlab
 
Curso de lab view seis horas
Curso de lab view seis horas Curso de lab view seis horas
Curso de lab view seis horas
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Tipos de sensores
Tipos de sensoresTipos de sensores
Tipos de sensores
 
Teroria de sensores
Teroria de sensoresTeroria de sensores
Teroria de sensores
 
Sensores
SensoresSensores
Sensores
 
Robotica
RoboticaRobotica
Robotica
 
Presentacion
PresentacionPresentacion
Presentacion
 
Practica5elcaanalogica
Practica5elcaanalogicaPractica5elcaanalogica
Practica5elcaanalogica
 
Manejo de sensores
Manejo de sensoresManejo de sensores
Manejo de sensores
 
Inst indus-circuitos_elect
Inst  indus-circuitos_electInst  indus-circuitos_elect
Inst indus-circuitos_elect
 
Contactores y actuadores
Contactores y actuadoresContactores y actuadores
Contactores y actuadores
 
Carrocería del carro electico
Carrocería del carro electicoCarrocería del carro electico
Carrocería del carro electico
 

Fi0708 ejercicios

  • 1. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC Ejercicios de Matlab. Entrega 1. 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. A. Área de un triángulo area= base⋅altura 2 área base altura 2,5 1 3 4,65 6,2 1,5 B. Energía relativista E=mc2 donde la velocidad de la luz c = 300 000 e m 1,8x105 2 5,58x105 6,2 C. Ecuación de segundo grado x=−b±b2−4 ac 2a x a b c 1 1 0 -1 0,22 13,95 6,2 1,5 ? 1 -3 2 ? 1 0 -1 ? 1 -2 1 ? 1 -10 25 ? 1 1 1 ? 1 0 0 ? 2 1 2 D. Polinomio y=x55x4−4x32x2−9x15 E. ¿Y qué nombre pongo a ésta? z= 5x−4y 3x2−−28 3x26y4123−y José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 1
  • 2. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 3. Manipulación de matrices A) Almacena en memoria principal la siguiente matriz, en una variable que se llame M1: 1 2 3 −3 −4 4 3 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 2
  • 3. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 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 Di=Vi1−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 2 3 −3 −4 4 3 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. 8. Tabla de conversión de temperaturas La relación de diversas escalas de temperatura con la escala Celsius (C) es la siguiente: Fahrenheit: F = 9 5 C−32 Kelvin: K = C273,15 Reamur: R = 8 10 C Construye una tabla de cuatro columnas. La primera contendrá temperaturas Celsius desde 0 hasta 100, de medio en medio grado, a segunda contendrá la temperatura Fahrenheit, la siguiente será Kelvin y, por ultimo, Reamur. La tabla tendrá el siguiente aspecto: 0.0000 32.0000 0.0000 273.1500 0.5000 32.9000 0.4000 273.6500 1.0000 33.8000 0.8000 274.1500 1.5000 34.7000 1.2000 274.6500 2.0000 35.6000 1.6000 275.1500 ... ... ... ... José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 3
  • 4. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 9. Ecuación de una recta en el plano Escribe dos vectores que representan dos puntos en el plano, x1, y1 , x2, y2 y calcula el vector de coeficientes (a, b, c) de la ecuación general de la recta a xb yc=0 que los une. El cálculo de los coeficientes se realiza mediante las expresiones: a=y2−y1 b=x1−x2 c=y1 x2−y2 x1 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. 12. Detección de palíndromos Una secuencia es palindrómica o capicúa si leerla de principio a final es equivalente a leerla de final a principio. Escribe una expresión que calcula si una cadena c es una secuencia palindrómica. 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 Elabórese una expresión que calcula la letra a partir de un número de DNI. 14. Área y perímetro de polígonos arbitrarios El área de un polígono cualquiera formado por n puntos Pi= xi , yi  puede calcularse mediante: A= n xi yi−1−xi−1 yi  1 2Σi =1 Para simplificar la anterior expresión, y el correspondiente algoritmo de cálculo, hemos asumido que el primer punto del perímetro es el mismo que el último, es decir, P0=Pn Elabórese un programa que solicita una lista de puntos (pares de coordenadas) y calcula el área y el perímetro del polígono correspondiente. Compruébese el resultado con figuras conocidas. 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 a= N A−NT N ANT y c= NC−NG NCNG 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 4
  • 5. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 16. Derivación de polinomios Es posible representar un polinomio cn xncn−1 xn−1...c2 x2c1 xc0 mediante un vector que contiene los coeficientes de éste, de mayor a menor orden: cn , cn−1 , ... , c2 , c1 , c0  . La derivada del monomio ci xi es ici xi−1 , y la del polinomio cn xncn−1 xn−1...c2 x2c1 xc0 es ncn xn−1n−1 cn−1 xn−2...3 c3 x22c2 xc1 , o en forma de vector de coeficientes ncn , n−1cn−1 , ... , 2c2 , c1  . Escribiremos una expresión en la que partiremos de un vector de coeficientes que representa a un polinomio, y calcularemos el vector de coeficientes de la derivada de dicho polinomio. 17. Solución de sistemas de ecuaciones lineales Un sistema de ecuaciones lineales puede representarse mediante una expresión matricial: a11 x1a12 x2a13 x3=b1 a21 x1a22 x2a23 x3=b2 a31 x1a32 x2a33 x3=b3  a11 a12 a13 a21 a22 a23 a31 a32 a33x1 x2 x3=b1 b2 b3  AX=B Multiplicando la inversa de A por la izquierda: A−1 AX=A−1B resulta X=A−1B , 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 5
  • 6. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC Ejercicios de Matlab. Entrega 2. Etapa 2 – Ficheros y Gráficos 18. Gráfica del coseno Representa gráficamente el coseno de un ángulo α de 0 a 2π con un salto de π/8. Titula adecuadamente cada uno de los ejes así como la gráfica resultante. A continuación añade a esa gráfica la del seno de α. Coloca leyendas para distinguir ambas gráficas. Añade un mallado. Edita interactivamente las propiedades de las líneas para cambiar los colores, grosores y estilos de punto de las gráficas que has generado. 19. Superficie 3D: Representa la superficie 3D z= sin  x2y2  x2 y2 entre -10 y 10 para los valores x e y. Para ello deberás 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. 20. Movimiento browniano El botánico Robert Brown, durante sus observaciones microscópicas, encontró que las partículas pequeñas se encontraban en continuo movimiento de tipo aleatorio. Cada pequeño salto de una partícula pueden tener lugar en cualquier dirección con la misma probabilidad, mientras que la magnitud del salto sigue una distribución normal. Si representamos cada salto de una partícula en coordenadas polares planas (ángulo θ y magnitud ρ), el ángulo θ tiene una distribución uniforme en el intervalo [0, 2π), mientras que la magnitud ρ tiene una dristribución normal de media μ y de desviación típica σ. Crearemos un vector theta de ángulos de salto y un vector rho de magnitudes de cada salto utilizando los correspondientes generadores de números aleatorios. Supondremos que la partícula se encuentra inicialmente en las coordenadas (0,0) y calcularemos su secuencia de posiciones tras cada salto. Representaremos gráficamente el camino de la partícula. Comprobaremos el resultado obtenido con distintos valores de μ y de σ. Una vez conseguido que funcione con una partícula, realizaremos el cálculo con n partículas simultaneamente. 21. Tratamiento de errores Dada una variable T de la que se obtienen n medidas experimentales, se define la estimación del error de la medida como T= 3s n Partiendo de un conjunto de medidas de una variable que se encuentra almacenado en un fichero de texto, calcular la media de las medidas y la estimación de su error. 22. Los últimos serán los primeros Escribe un programa que lee una lista de números reales a partir de un fichero. El programa los almacena en un vector, y presenta la lista en pantalla en orden inverso al que tienen en el fichero. Define el formato que tendrá el fichero y pon un ejemplo de cuál sería su aspecto al abrirlo con un editor. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 6
  • 7. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 23. Tratamiento de errores derivados Dada una variable z que depende de otras variables q1, q2, ..., qn , la estimación del error Dz a partir de los errores medidos Dq1, Dq2, ..., Dqn se calcula mediante z=Σi ∣∂ z ∂qi∣qi , es decir 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 Como el volumen de un cilindro se calcula mediante V = r2 h las derivadas parciales serán ∂V 2 hr ∂V r = y = r2 ∂∂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. 25. Análisis de cromatogramas La cromatografía es una poderosa técnica analítica utilizada para detectar, cuantificar y separar distintos compuestos químicos en función de algunas de sus propiedades físico-químicas. Los gráficos resultantes (cromatogramas) expresan en el eje x la movilidad del compuesto químico (medida en tiempo o distancia), y en el eje y la cantidad detectada en cada instante o posición. El análisis habitual de los cromatogramas consiste en detectar sus picos, cuya movilidad se asocia a un compuesto determinado, y calcular el área bajo cada pico, que indica la concentración del compuesto. En este ejercicio realizaremos un análisis muy simplificado de algunos cromatogramas: • Detectaremos los picos del cromatograma. Cada máximo en el gráfico será considerado un pico. • Detectaremos los compuestos asociados a los picos. Dispondremos de una tabla de movilidades conocidas de distintos compuestos. Para cada pico, buscaremos el compuesto con movilidad más parecida y asumiremos que el pico corresponde a dicho compuesto. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 7
  • 8. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC • 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 José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 8
  • 9. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC Ejercicios de Matlab. Entrega 3. Etapa 3 – Programación secuencial 26. Número de monedas Disponiendo de las monedas fraccionarias del euro (50, 20, 10, 5, 2 y 1 cent), calcular el mínimo número de monedas que se han de entregar para pagar cualquier importe entre 1 céntimo y 99 céntimos. El programa solicita el importe y presenta la cantidad a entregar de cada tipo de moneda. 27. Unidades de tiempo Partiendo de una cantidad de tiempo medida en segundos, calcular el número de semanas, días, horas, minutos y segundos a los que corresponde. 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. 30. Ley de Ohm La ley de Ohm establece una relación entre la intensidad de corriente (I) que circula por un circuito, la diferencia de potencial (V) y la resistencia del mismo (R): I= V R Escribe un programa que ofrezca al usuario la opción de calcular I, V o R. El programa solicitará los otros dos datos necesarios y claculará la magnitud elegida. 31. Ecuación de segundo grado. Versión 2 Se procede como en la versión 1 del problema, pero en este caso se estudia previamente el número de soluciones, y si son reales o complejas, calculándolas y presentándolas. Considérese que si a = 0, la ecuación no es de segundo grado, por lo que se resolverá como una ecuación lineal. Si, además, b = 0, la ecuación no depende de la variable x. Entonces, si c = 0, se trata de una ecuación degenerada, mientras que si c ≠ 0, la ecuación es contradictoria. Descartados los anteriores casos, es necesario calcular el discriminante b2−4ac , el cual determina el número de soluciones, y si son reales o complejas. 32. Conversor de temperatura. Versión 2 El programa solicita: • Escala de origen: C para Celsius, F para Fahrenheit , R para Reamur, K para Kelvin. • Escala de destino: como antes • Temperatura en la escala de origen El programa presenta la temperatura en la escala de destino y termina. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 9
  • 10. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 33. Tiro parabólico Construir una función que calcula los resultados más relevantes en el tiro parabólico. Para ello, la función necesita como parámetros de entrada la velocidad inicial y el ángulo de salida. Se pide: • Calcular la altura máxima alcanzada por el proyectil • Calcular el alcance máximo • Representar gráficamente la trayectoria descrita por el proyectil. Se supondrá que el punto de partida es el origen de coordenadas. Indicaciones para la práctica: Supongamos un lanzamiento de un proyectil con velocidad de salida es v0 y ángulo α. Tendremos que las componentes de la velocidad inicial son: v0x=v0 cos v0y=v0sin y las propiedades cinemáticas del cuerpo en cualquier instante (t) de su movimiento son: Magnitud Componente x Componente y Aceleración a x=0 a y=−g Velocidad v x=v0x v y=v0y−g t Posición x=v0x t y=v0y t− 1 2 g t2 La aceleración es constante, pero la velocidad y la posición del móvil sí que dependen del tiempo. La altura máxima se alcanza cuando la componente vertical v y de la velocidad se hace cero. Como v y=v0y−g t , se alcanzará la altura máxima cuando t= v0y g . Por lo tanto, la altura máxima es ymax = v2 0y 2 g = v0 2 2 g sin2 El móvil avanzará horizontalmente a la velocidad constante v0x durante el tiempo de vuelo, que será 2t (siendo t el tiempo en alcanzar la altura máxima) ya que el móvil tarda lo mismo en subir que en bajar, por lo tanto el alcance es xmax=v0x 2t es decir, alcance = xmax = v0 2 g sin 2 34. Calendario gregoriano El calendario actual obedece a la reforma que ordenó el Papa Gregorio XIII en el año 1582. Se decidió que, en lo sucesivo, fuesen bisiestos los años múltiplos de cuatro, con la excepción de que los años seculares (los acabados en dos ceros) sólo fueran bisiestos los múltiplos de cuatrocientos. Escriba un programa que pida al usuario una fecha (día, mes y año como números), y que diga si es o no válida (si el mes está comprendido entre 1 y 12, si el número del día es compatible con el mes, y si el año es mayor que 1582.) 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 10
  • 11. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 36. Tiro al blanco Tenemos un cañón que lanza proyectiles con una velocidad inicial de disparo v0, y que nuestro objetivo es acertar en un blanco que se encuentra localizado en las coordenadas (xB, yB). Para acertar, tendremos que ajustar el ángulo de tiro. Sabemos que las componentes de la velocidad inicial se calculan así: v0x=v0cos  v0y=v0 sin Dado que en la coordenada x el movimiento es uniforme, en la coordenada y es uniformemente acelerado, y utilizando las ecuaciones correspondientes a esos movimientos, obtenemos el siguiente sistema de dos ecuaciones con dos incógnitas, t y a (xB e yB son las coordenadas conocidas del blanco): x B=v0 cos t yB=y0v0 sint 1 2 −g t2 De aquí podemos eliminar t, obteniendo una única ecuación en tan(α), empleando la relación trigonométrica: 1 cos2 =1tan2 resultando la ecuación de segundo grado en tan(α): yB=y0x B tan  12 −g xB 2 v0 2 1tan2 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 José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 11
  • 12. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 37. Ajuste por mínimos cuadrados El trabajo de laboratorio tiene como fruto una serie de datos experimentales representados, normalmente, por un conjunto discreto de pares de datos {xi, yi}, siendo i un índice natural que varía de 1 a N. La manipulación de los datos tiene normalmente uno de estos objetivos: • Determinar una ley experimental • Comprobar una ley experimental previamente supuesta Si los datos están relacionados entre sí, se puede encontrar una función que se ajuste a los datos a través del método de ajuste por mínimos cuadrados. El método se basa en minimizar la siguiente función objetivo: N  yi− f  xi 2 2=Σi =1 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  yi−ab xi 2 2a ,b=Σi =1 Desarrollando el cuadrado se obtiene: N yiΣi 2a ,b=Σi =1 N Na2b2Σi =1 N xi =1 N yi−2 bΣi 2−2 aΣi =1 N xi yi2 a bΣi =1 N xi =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 ∂a =0 y ∂2 ∂b =0 De donde se obtienen las soluciones para a y b: b= N xi yi−Σi NΣi =1 N xiΣi=1 =1 N yi N xi NΣi =1 N xi 2 2−Σi =1 a= N yi−bΣi Σi =1 N xi =1 N 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 12
  • 13. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 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. 39. Mayor y menor Realizar un script que pida n números e imprima el número mayor y el número menor. 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 José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 13
  • 14. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 42. Rombo Escribir un script que amplíe el programa anterior para dibujar un rombo: O OOO OOOOO OOOOOOO OOOOO OOO O 43. Más sumatorio Escribe un programa que solicite un número n y calcule la suma de todos los números naturales hasta n. Haz la prueba con valores grandes de n. Cuando Gauss tenía 10 años, su profesor quiso un rato de tranquilidad, y pidió a sus alumnos que sumaran todos los números naturales del 1 al 100. En unos instantes, Gaus obtuvo la solución. Se dio cuenta de que haciendo parejas de números (primero con último, segundo con penúltimo,...) se obtiene siempre la misma suma, 101, y como son 50 parejas, el resultado es 101 x 50 = 5050. En efecto, S= a1an 2 n donde a1 es el primer término y an es el enésimo término a sumar. Utiliza esta expresión para comprobar el resultado del programa. 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. 45. Enteros al cuadrado Escribe un programa que lea números enteros procedentes del teclado y que cada vez que el número sea par lo eleve al cuadrado. El programa terminará cuando el usuario introduzca 0. 46. Primera vocal Realizar un script que solicite al usuario una cadena, en la cual busca y escribe la primera vocal que aparezca. 47. Más monedas Disponiendo de todos los billetes y monedas fraccionarias del euro, calcular el mínimo número de billetes y monedas que se han de entregar para pagar cualquier importe. 48. Conversor de temperatura. Versión 3 Igual que el “Conversor de temperatura 2”, pero, en este caso, el programa repite la operación hasta que el usuario indica una escala inexistente. Entonces termina. 49. Serie El programa solicita x y n, y calcula la suma de la serie xi i! n xi i! hasta el término n, es decir Σi =0 ¿Hasta qué valor de n es factible hacer el cálculo? Pista para optimizar el cálculo: evita realizar el cálculo de xi y de i! en cada iteración. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 14
  • 15. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 50. ¿Soy un primo? El programa solicita un número entero, comprueba si es primo y lo indica. Para comprobar la divisibilidad de un número por otro se utilizará la función mod. 51. Más serie: exponencial Dado que la serie del anterior ejercicio es convergente, escribe un programa que solicite el valor de x, y un grado de precisión (por ejemplo, 0.0001 para indicar precisión de una diezmilésima). El programa sumará tantos términos de la serie como necesite, hasta que el término a añadir sea menor que la precisión establecida. 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. 52. Estadígrafos básicos El programa solicita un número n que indicará la cantidad de datos que se leerán a continuación. Solicitará cada uno de los datos xi, y con ellos calculará: La suma de todos ellos: n xi S=Σi =1 La suma de los cuadrados: n xi Sc=Σi =1 2 La media: M= S n La varianza: V = Sc n −M2 La desviación típica: s=V El mayor de los datos max  xi i=1...n El menor de los datos min  xi i=1...n 53. Estadígrafos flotantes Como en el anterior problema, pero se imprimirá el resultado después de introducir cada dato, utilizando todos los disponibles hasta el momento. 54. Criba de Eratóstenes Este conspicuo señor griego se dio cuenta de que si en una lista de números tachaba todos los múltiplos de cada primo, en la lista sólo le quedaban primos. Utilizaremos este método para calcular los primos existentes hasta 1000 sin hacer una sola división. Comenzaremos creando una matriz que contenga los número del 1 al 1000. Aprovechando que sabemos que el 2 es primo, nos ubicamos en el 2 y saltamos por la matriz de 2 en 2, poniendo un cero en cada casilla donde aterricemos. Con esto hemos eliminado los múltiplos de 2. Desde el 2, avanzamos por la matriz hasta encontrar el siguiente número no cero. En este caso será el 3, así que saltaremos por la matriz de 3 en 3, poniendo un cero en cada lugar donde aterricemos. Repetimos el proceso hasta que terminamos con la tabla. Entonces quedarán en ella únicamente los primos, junto con todos los ceros que han sustituido a los no primos. Imprimiremos exclusivamente los números primos. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 15
  • 16. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 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). 56. Raíz cuadrada El cálculo de  x puede realizarse de forma aproximada mediante un método iterativo. Se estima inicialmente la solución como si= x 2 lo cual sólo es cierto en el caso de x = 4. Seguidamente calculamos una nueva aproximación si1=si− 2−x 2 si si . Si la diferencia en valor absoluto entre las dos aproximaciones es inferior a un cierto umbral e , ∣si1−si∣e , damos por buena la última aproximación. Si no, realizamos una nueva aproximación. Elabora un programa que solicita al usuario el umbral e y el valor de x. Calcula iterativamente la raíz cuadrada de x y la presenta junto con el valor proporcionado por la función sqrt. 57. Contador de palabras El programa solicita una línea de texto y calcula el número de palabras presentes en ella (separadas mediante espacios). 58. Contador de palabras en múltiples líneas Igual que antes, pero en este caso, después de dar el resultado se vuelve a solicitar una nueva línea. El proceso se repite hasta que el usuario teclea “fin”. Entonces el programa presenta el número de líneas y la suma de palabras en todas ellas. 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. 60. Búsqueda y contaje de subcadenas Dado un fichero de texto, se trata de contar el número de veces que aparece una cadena de caracteres. El programa solicitará el nombre de un fichero de texto y una cadena de caracteres. Seguidamente, abrirá el fichero y buscará todas las apariciones de la cadena. Finalmente, presentará el número de apariciones de ésta y terminará. 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 José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 16
  • 17. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 62. Cálculo de combinaciones, permutaciones y variaciones El programa solicita el tipo de cálculo a realizar, combinaciones, permutaciones o variaciones, tanto con repetición como sin repetición. También solicita los parámetros necesarios para el cálculo. El programa aplica la fórmula pertinente y presenta el resultado. Permutaciones de m elementos: m! Combinaciones de m elementos tomados de n en n: m! Variaciones con repetición de m n!m−n ! elementos tomados de n en n: mn Combinaciones con repetición de m elementos tomados de n en n: mn−1! n!m−1! Variaciones sin repetición de m elementos tomados de n en n: m! n! Es interesante observar los límites prácticos para los cálculos producidos por el desbordamiento. Estúdiense distintas posibilidades para evitarlo. i a 63. Integración numérica El Σ∫método de integración mediante la suma de trapecios consiste en aproximar el valor de la integral de una función en el intervalo [a,b] a la suma de las áreas de los rectángulos que resultan al subdividir dicho b N intervalo en un número N de subdivisiones: f  x  dx ≃ ei =1 donde el área de cada elemento ei vale f  xi  f  xi1 ei =  xi1−xi ⋅ 2 = ancho⋅ f  xi  f  xiancho 2 siendo ancho = b−a N = xi1−xi x a x x+ancho b f(x) (f(x)+f(x+ancho))/2 f(x+ancho) 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 sen x ∫a xe x dx 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 17
  • 18. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 64. Traducción del código genético Dada una secuencia de ARN, representada por los caracteres A, G, C, U, obtendremos la secuencia de aminoácidos de la proteína resultante de la traducción. Sabemos que el código genético es el siguiente: Aminoácido Codones Aminoácido Codones Alanina Ala A GC(A,C,G,U) Leucina Leu L CU(A,C,G,U) o UU(A,G) Arginina Arg R CG(A,C,G,U) o AG(A,G) Lisina Lys K AA(A,G) Asparragina Asn N AA(C,U) Metionina Met M AUG (inicio de la síntesis) Aspartato Asp D GA(C,U) Fenilalanina Phe F UU(C,U) Cisteína Cys C UG(C,U) Prolina Pro P CC(A,C,G,U) Glutamato Glu E GA(A,G) Serina Ser S UC(A,C,G,U) o AG(C,U) Glutamina Gln Q CA(A,G) Treonina Thr T AC(A,C,G,U) Glicina Gly G GG(A,C,G,U) Triptófano Trp W UGG Histidina His H CA(C,U) Tirosina Tyr Y UA(C,U) Isoleucina Ile I AU(A,C,U) Valina Val V GU(A,C,G,U) Terminación de la síntesis UA(A,G) o UGA Nota: A modo de ejemplo, GC(A,C,G,U), significa GCA, GCC, GCG o GCU Se leerá desde teclado (o desde fichero) una secuencia de ARN, formada por nucleótidos representados mendiante los caracteres A, G, C, U. Podrá existir también espacio blanco (espacios, tabulaciones y saltos de línea), pero no tendrá significado alguno para la secuencia. Se recorrerá la secuencia de nucleótidos hasta detectar el codón AUG, que inicia la traducción y, además, codifica el aminoácido metionina. Desde ese punto se recorrerán los codones sucesivos (grupos de 3 nucleótidos), traduciendo cada uno de ellos al correspondiente aminoácido. El proceso termina al encontrar cualquiera de los codones de terminación (UAA, UAG o UGA) o al terminar la secuencia. Por ejemplo, la secuencia de ARN: UGUAAGAGGUAUGCACUCAAAAGACUGACACCUG codifica el polipéptido: Met-His-Ser-Lys-Asp 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. 66. Cantidad de cifras Realizar una función en Matlab que reciba un número entero y devuelva la cantidad de cifras que tiene el número (ejemplo: 123 tiene 3 cifras). Realiza otra función que devuelva la suma de las cifras del número (ejemplo: 123 -> 1+2+3 = 6). 67. Más 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 una función entera que recibe como argumento un número entero i, y devuelve el valor de f i Realiza una implementación iterativa y otra recursiva. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 18
  • 19. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 68. Más derivación de polinomios Utilizando el mismo planteamiento que en el ejercicio sobre “derivación de polinomios” elaboraremos dos funciones: derivapol recibe un vector que representa el polinomio p, calcula su derivada p' y la devuelve en forma de otro vector. evalpol recibe un vector que representa un polinomio p, y un valor real x. Calcula el valor del polinomio en x, es decir, p(x). Elaboraremos un programa que solicita un polinomio, llama a derivapol para obtener su derivada y pide dos valores de x al usuario, x1 y x2. Se evaluará el polinomio y su derivada en sun conjunto de valores entre x1 y x2 y se presentará el resultado gráficamente. 69. Más primos Escribe una función lógica que recibe un número entero e indica si el número es primo. Trata de optimizar la función, reduciendo el número total de cálculos aritméticos. 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. 71. Números perfectos Un número perfecto es el que es igual a la suma de sus divisores, excluido él mismo. Ejemplo de número perfecto: 6 = 1+2+3 Contraejemplo: 12 ≠ 1+2+3+4+6 Se pide: • Escribir una función que reciba un número y devuelva si es o no perfecto. • Escribir un script que, utilizando la función anterior, muestre por pantalla los números perfectos que hay desde el 1 al 200. 72. Más combinatoria Elaboraremos cinco funciones, una por cada uno de los cálculos del ejercicio sobre Cálculo de combinaciones, permutaciones y variaciones. Obsérvese que alguna de las funciones del módulo puede hacer uso de otras funciones del mismo módulo. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 19
  • 20. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 73. Más estadígrafos Elaboraremos siete funciones, una por cada estadígrafo de los utilizados en el ejercicio sobre Estadígrafos básicos. Las funciones recibirán como argumento de entrada un vector con los datos a analizar, y devolverán como resultado un valor real. La declaración de cada una de ellas podrá seguir el siguiente esquema: function r = estadigrafo(v) ... % Aquí se calcula el estadígrafo r = ... % y se asigna el resultado 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. 74. Química del carbono Realice un programa que pida al usuario una fórmula química en una cadena de caracteres. Esta fórmula podrá tener los siguientes caracteres: • ‘C’, ‘H’, ‘O’, ‘N’ como identificadores de los elementos básicos de la química del carbono • ’2’, ’3’, ’4’, ‘5’ y ‘6’ como índices posibles de estos elementos Se pide analizar esta fórmula para: • Decidir si contiene algún carácter no válido, en cuyo caso se deberá volver a pedir una nueva fórmula al usuario • En el caso de que todos los caracteres sean válidos mostrar por pantalla el número de átomos de cada tipo que contiene la fórmula • Por último, mostrar por pantalla el peso molecular Se recomienda dividir el problema en subproblemas más sencillos para que sea más fácil la resolución del problema final. Notar que el número de átomos de un elemento es función del carácter situado a continuación de él en la fórmula NOTA: Para que el programa considere que una fórmula es correcta es suficiente con comprobar que sólo coniene caracteres válidos. Es decir, no es necesario que el programa decida si la fórmula es químicamente correcta o no. Son ejemplos de fórmulas consideradas válidas: CH3CH3, H3CCH3, C2H6. 75. Solución de ecuaciones – Método de bipartición Según el teorema de Bolzano, si una función continua en el intervalo [a, b] toma valores de distinto signo en a y en b, entonces existe al menos un valor entre ambos extremos del intervalo en el que la función se hace nula. Esto nos permite diseñar un método para encontrar soluciones a una función continua en un intervalo. El usuario puede tantear hasta encontrar un valor a y otro b, tales que en uno la función es positiva, y en el otro negativa. Ahora, el programa puede calcular un punto intermedio c = (a +b)/2 y calcular el valor de la función. El programa sustituirá uno de los extremos del intervalo por c: concretamente aquel que tenga el mismo signo que c. Ahora tenemos el mismo caso que al principio, pero con un intervalo la mitad de amplio. Realizaremos el anterior proceso de bipartición tantas veces como sea necesario, hasta que la anchura del intervalo sea inferior a una tolerancia determinada también por el usuario. Elabórese un programa que realiza las siguientes operaciones: • Solicita al usuario dos valores de la variable independiente x: a y b, y el programa calcula f(a) y f(b). • Si f(a) y f(b) son del mismo signo, indica que no es posible encontrar una solución entre ambos (aunque no estamos seguros de que no la haya, sino que el método no se puede aplicar). José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 20
  • 21. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC • Si son de distinto signo: • Solicita al usuario una tolerancia para la solución (máximo error admisible). • Aplica el método de bipartición descrito y se presenta la solución. La ecuación de la que se busca solución ha de estar escrita por separado. Para ello, escribiremos una función declarada de la siguiente manera: function r = f(x) % x es un valor real r = ... % Aquí va la función que queremos resolver De este modo, sólo es necesario cambiar el contenido de esta función para resolver distintos problemas. 76. Solución de ecuaciones – Método de Newton El método de Newton para resolver ecuaciones se basa en el conocimiento de la función y de su derivada. Partiendo de una aproximación xi de la solución se calcula en ese punto el valor de la función f  xi  y el de la derivada f '  xi . Con esos datos se calcula una nueva aproximación xi1=xi− f  xi  f '  xi  . Se repite el proceso, refinando iterativamente la solución hasta que la diferencia entre dos valores sucesivos en el cálculo ∣xi1−xi∣ es inferior a un valor de tolerancia establecido por el usuario. Para no tener que codificar una función y su derivada, nos centraremos en un caso más simple, elaborando un programa que calcula soluciones de ecuaciones polinómicas. Aprovecharemos la función derivapol y la función evalpol que fueron desarrolladas en el ejercicio sobre más derivación de polinomios. El programa solicitará al usuario: • El orden de la función polinómica a resolver (la máxima potencia de la variable x en el polinomio). Se ubicará un vector para contener el polinomio problema y otro para contener su derivada. • Los coeficientes del polinomio que define la función a resolver. • El valor de la tolerancia o precisión deseada en el cálculo de la solución. • Un valor inicial xi de la variable x, que se utilizará como primera aproximación del resultado. Se utilizará la función derivapol para calcular la derivada del polinomio problema introducido por el usuario. Después, utilizará la función evalpol para evaluar la función y su derivada en xi y calculará la siguiente aproximación xi1 según se ha descrito. Esto se repetirá tantas veces como sea necesario hasta que la solución sea tan precisa como establece la tolerancia. Será ilustrativo presentar en cada iteración los valores de xi , f  xi  y f '  xi . José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 21
  • 22. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 77. Ordenación – Método de la burbuja En muchas ocasiones es necesario ordenar los valores que contiene una matriz. Para ello es necesario intercambiar los contenidos de los elementos siguiendo algún método que los ordene. En este ejercicio vamos a utilizar el método de la burbuja: • Compararemos el primer elemento de la matriz con el que le sigue. Si están ordenados, se dejan como están, y si no, se intercambian. Avanzaremos una posición y repetiremos la operación, y así sucesivamente hasta llegar al final de la matriz. A este recorrido por la matriz, denominaremos pasada. • Si durante la pasada no hemos realizado algún intercambio, entonces la matriz está ordenada. • Por eso, repetiremos la pasada descrita tantas veces como sea necesario, hasta que en una de ellas no hayamos realizado ningún intercambio. En ese momento, la matriz estará ordenada. Escribiremos la función burbuja, que recibe un único argumento, el vector a ordenar, y devuelve un vector con los valores ordenados, tras emplear el método descrito. Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la función burbuja, que devolverá el vector ordenado, y presentaremos éste en pantalla. Fíjate en los detalles del procedimiento de ordenación y busca posibles formas de optimizarlo. 78. Ordenación – Método de selección Este método de ordenación consta de los siguientes pasos (suponiendo ordenación de menor a mayor): • Buscamos el menor elemento del vector. Lo intercambiamos por el primero en la lista. • Buscamos el menor elemento comenzando en el segundo. Lo intercambiamos por el segundo. • Y así sucesivamente... Escribiremos la función ordselec, que recibe un único argumento, el vector a ordenar, y devuelve el vector ordenado, tras emplear el método descrito. Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la función ordselec, que devolverá el vector ordenado, y presentaremos éste en pantalla. 79. Ordenación – Método de inserción Este método de ordenación consta de los siguientes pasos (suponiendo ordenación de menor a mayor): • Partimos de un vector con datos desordenados, y de otro que habrá de recibir los datos ordenados. • Copiamos el primer elemento del vector a ordenar en la primera posición del segundo vector. • Tomamos el segundo elemento del vector a ordenar y lo comparamos con el último elemento del segundo vector. Si el nuevo es menor, desplazamos el elemento una posición. • En general, por cada elemento que se inserta en el nuevo vector: • Se compara con los elementos del vector ordenado empezando por el final. • Si el elemento a insertar es menor que el ya existente, se desplaza el existente una posición. • Si no, se inserta en la posición que dejó libre el anterior desplazamiento. Escribiremos la función ordinsert, que recibe un único argumento, el vector a ordenar, y devuelve el vector ordenado, tras emplear el método descrito. Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numéricos. El programa abrirá el fichero y leerá los valores, cargándolos en un vector. Seguidamente, llamaremos a la función ordinsert, que devolverá el vector ordenado, y presentaremos éste en pantalla. 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 22
  • 23. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 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. 81. Termostato PID Existen sistemas de control con mejor comportamiento que el termostato simple, como es el PID (Proporcional Integral Derivativo). En lugar de conectar y desconectar el calefactor, se aplican valores graduales de potencia según lo cerca o lejos que nos encontremos del objetivo, considerando el “error” e = Tobjetivo - T: Término proporcional: P=K p e (la potencia aplicada es proporcional al error) Término integral: I=KiΣet (la potencia aplicada es proporcional al error acumulado) Término derivativo: D=Kd e t (la potencia aplicada es proporcional a la variación del error) Repetiremos el ejercicio sobre el termostato utilizando este sistema de control. Para cada intervalo de tiempo se calculará el error, e, su integral discreta, Σ e Δt, y su derivada discreta Δe/Δt. La potencia aplicada será W=Wmax PID , es decir, W=Wmax K p eKiΣetKd e t  donde Wmax es la potencia del calefactor. Cuando W sea menor que cero, aplicaremos 0, porque un calefactor no refrigera. Del mismo modo, cuando W sea mayor que la potencia máxima del calefactor, se aplicará la potencia máxima. Ensáyese en las mismas condiciones que el ejercicio sobre el termostato, utilizando los valores: Kp = 0,1 Ki = 0 Kd = 0 Control proporcional (P) ¿Dónde se estabiliza al temperatura? Kp = 0,1 Ki = 0,001 Kd = 0 Control PI. ¿Qué ocurre con la temperatura antes de estabilizarse? Kp = 0,1 Ki = 0,001 Kd = 10 Control PID. ¿Cómo es ahora el comportamiento? Kp = 0,1 Ki = 0,001 Kd = 100 ¿Qué efecto tiene un Kd tan grande? ¿Cuál es la potencia aplicada cuando la temperatura se estabiliza? Ensaya el comportamiento del sistema con otros valores de los tres parámetros PID. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 23
  • 24. Fundamentos de Informática, curso 2007-2008 Ingeniería Técnica Industrial (Química) – ESCET – URJC 82. Gravitación La fuerza de atracción gravitatoria entre dos cuerpos de masas m y m' es F=G mm' d 2 [1], donde 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. José Luis Esteban Ejercicios de Matlab – V1.169 Pág. 24