Sie sind auf Seite 1von 24

Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC

Ejercicios de Matlab. Entrega 1.


Etapa 1 Familiarizacin
1. Identificadores
Cules de estos identificadores son vlidos y cules 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
vlido
2. Expresiones
Escribe las siguientes expresiones aritmticas en Matlab. Comprubalas con los valores de prueba de la
columna derecha.
A. rea de un tringulo
area=
basealtura
2
rea base altura
2,5 1 3
4,65 6,2 1,5
B. Energa relativista
E=mc
2
donde la velocidad de la luz c = 300 000
e m
1,8x10
5
2
5,58x10
5
6,2
C. Ecuacin de segundo grado
x=
b!
.
b
2
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=x
5
+5x
4
4x
3
+2x
2
9x+15
E. Y qu nombre pongo a sta?
z=
5x4y
3x
2
+6y
4

.
3x
2
28
123y
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 1
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
3. Manipulacin 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 gurdala en M2
C) Calcula el producto elemento a elemento de M1 y M2
D) Calcula la suma de M1 y M2
E) Calcula la divisin elemento a elemento de M1 y M2
F) Calcula el producto matricial de M1 y M2 y gurdalo en prodM1M2
G) Calcula el producto matricial de M2 y M1 y gurdalo en prodM2M1
H) Calcula la divisin matricial de M1 y M2
I) Cambia el valor del elemento central de M1 a 9
J) Guarda en una matriz llamada esquinasM1 de tamao 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 mtiplos de 30 entre 30 y 360
S) Aade el elemento 0 en la primera posicin a angulos
T) Extrae de ese vector los elementos con ndice par (es decir, el segundo, el cuarto, el sexto, etc) y
gurdalos en angulosPar
U) Extrae de ese vector los elementos con ndice impar (es decir, el primero, el tercero, el quinto, etc) y
gurdalos en angulosPar
V) Concatena a angulosPar el vector angulosImpar
4. Matrices multidimensionales
En una urbanizacin hay 4 bloques de pisos, de 6 plantas cada uno. En cada una de las plantas hay 5 pisos,
con un nmero diferentes de habitaciones cada uno. Todas las puertas nmero 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 nmero de habitaciones de cada piso en una matriz de forma adecuada
Imprimir bloque por bloque el nmero de habitaciones de cada piso.
Imprimir el nmero de habitaciones de todos los pisos de la planta 4 del bloque 2.
Imprimir el nmero de habitaciones del piso 3 de la planta 2 del bloque 3.
Calcular e imprimir el nmero total de habitaciones de cada bloque.
Calcular e imprimir el nmero total de habitaciones de la urbanizacin.
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 Pg. 2
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) 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
D
i
=V
i+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
trigonomtricas disponibles en Matlab.
D) Calcula el mximo y la posicin 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 tamao 50x50. Coloca unos en la posicin (3,4), (32,25) y
(49,49). Busca a continuacin 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 guardndola en M1inv.
J) A continuacin, 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 conversin de temperaturas
La relacin de diversas escalas de temperatura con la escala Celsius (C) es la siguiente:
Fahrenheit: F =
9
5
C32
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 Pg. 3
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
9. Ecuacin de una recta en el plano
Escribe dos vectores que representan dos puntos en el plano, (x
1,
y
1
) , (x
2,
y
2
) y calcula el vector de
coeficientes (a, b, c) de la ecuacin general de la recta ax+b y+c=0 que los une. El clculo de los
coeficientes se realiza mediante las expresiones:
a=y
2
y
1
b=x
1
x
2
c=y
1
x
2
y
2
x
1
10. Sumatorio
Escribe una expresin que calcule la suma de todos los nmeros naturales hasta n.
11. Factorial
Escribe una expresin que calcule el factorial de n.
12. Deteccin de palndromos
Una secuencia es palindrmica o capica si leerla de principio a final es equivalente a leerla de final a
principio. Escribe una expresin que calcula si una cadena c es una secuencia palindrmica.
13. DNI
La letra del DNI se obtiene de la siguiente manera: se calcula el resto de dividir el valor numrico 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
Elabrese una expresin que calcula la letra a partir de un nmero de DNI.
14. rea y permetro de polgonos arbitrarios
El rea de un polgono cualquiera formado por n puntos P
i
=( x
i
, y
i
) puede calcularse mediante:
A=
1
2

i=1
n
(x
i
y
i1
x
i1
y
i
)
Para simplificar la anterior expresin, y el correspondiente algoritmo de clculo, hemos asumido que el
primer punto del permetro es el mismo que el ltimo, es decir, P
0
=P
n
Elabrese un programa que solicita una lista de puntos (pares de coordenadas) y calcula el rea y el
permetro del polgono correspondiente. Comprubese 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 nucletidos 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
N
T
N
A
+N
T
y c=
N
C
N
G
N
C
+N
G
donde N
X
indica la cantidad de nucletidos 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 Pg. 4
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
16. Derivacin de polinomios
Es posible representar un polinomio c
n
x
n
+c
n1
x
n1
+...+c
2
x
2
+c
1
x+c
0
mediante un vector que
contiene los coeficientes de ste, de mayor a menor orden: (c
n
, c
n1
, ... , c
2
, c
1
, c
0
) .
La derivada del monomio c
i
x
i
es ic
i
x
i1
,
y la del polinomio c
n
x
n
+c
n1
x
n1
+...+c
2
x
2
+c
1
x+c
0
es nc
n
x
n1
+( n1)c
n1
x
n2
+...+3 c
3
x
2
+2c
2
x+c
1
,
o en forma de vector de coeficientes (nc
n
, (n1)c
n1
, ... , 2c
2
, c
1
) .
Escribiremos una expresin 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. Solucin de sistemas de ecuaciones lineales
Un sistema de ecuaciones lineales puede representarse mediante una expresin matricial:
a
11
x
1
+a
12
x
2
+a
13
x
3
=b
1
a
21
x
1
+a
22
x
2
+a
23
x
3
=b
2
a
31
x
1
+a
32
x
2
+a
33
x
3
=b
3
-
(
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
)(
x
1
x
2
x
3
)
=
(
b
1
b
2
b
3
)
- AX=B
Multiplicando la inversa de A por la izquierda:
A
1
AX=A
1
B
resulta
X=A
1
B
, por lo que es
posible relolver sistemas de ecuaciones lineales mediante la ltima expresin.
Define la matriz A y el vector B que representan el sistema lineal, y calcula la solucin 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 Pg. 5
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
Ejercicios de Matlab. Entrega 2.
Etapa 2 Ficheros y Grficos
18. Grfica del coseno
Representa grficamente el coseno de un ngulo de 0 a 2 con un salto de /8. Titula adecuadamente
cada uno de los ejes as como la grfica resultante. A continuacin aade a esa grfica la del seno de .
Coloca leyendas para distinguir ambas grficas. Aade un mallado. Edita interactivamente las propiedades
de las lneas para cambiar los colores, grosores y estilos de punto de las grficas que has generado.
19. Superficie 3D:
Representa la superficie 3D z=
sin(. x
2
+y
2
)
. x
2
+y
2
entre -10 y 10 para los valores x e y. Para ello debers
generar los vectores x e y con la precisin que necesites (puedes probar para un salto de 0.5 y de 0.1). A
continuacin generar la malla en el plano xy utilizando meshgrid. Posteriormente representa la grfica con
ayuda de mesh y luego con surf. Prueba tambin con plot3d. Adems, prueba a girar la grfica y editar sus
propiedades.
20. Movimiento browniano
El botnico Robert Brown, durante sus observaciones microscpicas, encontr que las partculas pequeas
se encontraban en continuo movimiento de tipo aleatorio. Cada pequeo salto de una partcula pueden tener
lugar en cualquier direccin con la misma probabilidad, mientras que la magnitud del salto sigue una
distribucin normal.
Si representamos cada salto de una partcula en coordenadas polares planas (ngulo y magnitud ), el
ngulo tiene una distribucin uniforme en el intervalo [0, 2), mientras que la magnitud tiene una
dristribucin normal de media y de desviacin tpica .
Crearemos un vector theta de ngulos de salto y un vector rho de magnitudes de cada salto utilizando los
correspondientes generadores de nmeros aleatorios. Supondremos que la partcula se encuentra
inicialmente en las coordenadas (0,0) y calcularemos su secuencia de posiciones tras cada salto.
Representaremos grficamente el camino de la partcula. Comprobaremos el resultado obtenido con
distintos valores de y de .
Una vez conseguido que funcione con una partcula, realizaremos el clculo con n partculas
simultaneamente.
21. Tratamiento de errores
Dada una variable T de la que se obtienen n medidas experimentales, se define la estimacin del error de la
medida como AT=
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 estimacin de su error.
22. Los ltimos sern los primeros
Escribe un programa que lee una lista de nmeros 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 cul sera su aspecto al abrirlo con un editor.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 6
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
23. Tratamiento de errores derivados
Dada una variable z que depende de otras variables q1, q2, ..., qn , la estimacin del error z a partir de los
errores medidos q1, q2, ..., qn se calcula mediante
Az=

i

z
q
i

Aq
i
, es decir
Az=

z
q
1

Aq
1
+

z
q
2

Aq
2
+...+

z
q
n

Aq
n
Un fabricante de depsitos cilndricos desea estimar el error en su volumen V, pero medir ste en cada
depsito es una operacin costosa, por lo que nicamente mide su radio r y su altura h. As, el clculo ser
AV=

V
r

Ar+

V
h

Ah
Como el volumen de un cilindro se calcula mediante
V = nr
2
h
las derivadas parciales sern
V
r
= 2 nhr y
V
h
= nr
2

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 lneas contiene las coordenadas de un punto en el plano. En el ejemplo hay 4 coordenadas,
pero el fichero podra contener cualquier cantidad de ellas.
Elabrese 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 sera:
Distancias entre puntos consecutivos:
7.96
3.70
1.30
Distancia total: 12.96
Para complicarlo un poco ms: presentar tambin la distancia mxima y mnima entre puntos consecutivos.
25. Anlisis de cromatogramas
La cromatografa es una poderosa tcnica analtica utilizada para detectar, cuantificar y separar distintos
compuestos qumicos en funcin de algunas de sus propiedades fsico-qumicas. Los grficos resultantes
(cromatogramas) expresan en el eje x la movilidad del compuesto qumico (medida en tiempo o distancia), y
en el eje y la cantidad detectada en cada instante o posicin.
El anlisis 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 concentracin del compuesto.
En este ejercicio realizaremos un anlisis muy simplificado de algunos cromatogramas:
Detectaremos los picos del cromatograma. Cada mximo en el grfico 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 ms
parecida y asumiremos que el pico corresponde a dicho compuesto.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 7
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
Calcularemos la concentracin del compuesto. En lugar de calcular el rea bajo el pico, supondremos
que la concentracin viene dada por la altura del pico en el mximo. Ofreceremos las concentraciones en
unidades arbitrarias.
Elabora un script que:
Lee un fichero que contiene la lista de movilidades de los compuestos. Almacena esta informacin en un
vector.
Lee un fichero que contiene la lista de nombres de los compuestos. Almacena esta informacin en un
vector.
Lee un fichero que contiene los datos de un cromatograma (lista de nmeros reales que representan la
concentracin a lo largo del tiempo). Suponemos que la movilidad es el nmero 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
Identificacin del compuesto
Concentracin del compuesto
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 8
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
Ejercicios de Matlab. Entrega 3.
Etapa 3 Programacin secuencial
26. Nmero de monedas
Disponiendo de las monedas fraccionarias del euro (50, 20, 10, 5, 2 y 1 cent), calcular el mnimo nmero de
monedas que se han de entregar para pagar cualquier importe entre 1 cntimo y 99 cntimos. 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 nmero de semanas, das, horas,
minutos y segundos a los que corresponde.
28. Frases
El programa pide una frase. Se imprimir una frase en la que el primer carcter de la frase original cambia
de sitio, apareciendo al final. Se imprimir otra frase en la que el ltimo carcter de la frase original cambiar
de lugar, apareciendo en la primera posicin.
29. Comparaciones
Escribe un programa que lea dos nmeros y devuelva como resultado si los nmeros son iguales. Si no lo
son, devolver como resultado el mayor de los dos. Escribe dos versiones, una utilizar la funcin max y la
otra no.
30. Ley de Ohm
La ley de Ohm establece una relacin 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 opcin de calcular I, V o R. El programa solicitar los otros
dos datos necesarios y clacular la magnitud elegida.
31. Ecuacin de segundo grado. Versin 2
Se procede como en la versin 1 del problema, pero en este caso se estudia previamente el nmero de
soluciones, y si son reales o complejas, calculndolas y presentndolas.
Considrese que si a = 0, la ecuacin no es de segundo grado, por lo que se resolver como una ecuacin
lineal. Si, adems, b = 0, la ecuacin no depende de la variable x. Entonces, si c = 0, se trata de una
ecuacin degenerada, mientras que si c 0, la ecuacin es contradictoria.
Descartados los anteriores casos, es necesario calcular el discriminante
b
2
4ac
, el cual determina el
nmero de soluciones, y si son reales o complejas.
32. Conversor de temperatura. Versin 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 Pg. 9
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
33. Tiro parablico
Construir una funcin que calcula los resultados ms relevantes en el tiro parablico. Para ello, la funcin
necesita como parmetros de entrada la velocidad inicial y el ngulo de salida. Se pide:
Calcular la altura mxima alcanzada por el proyectil
Calcular el alcance mximo
Representar grficamente la trayectoria descrita por el proyectil. Se supondr que el punto de partida es
el origen de coordenadas.
Indicaciones para la prctica:
Supongamos un lanzamiento de un proyectil con velocidad de salida es v
0
y ngulo . Tendremos que
las componentes de la velocidad inicial son:
v
0x
=v
0
coso v
0y
=v
0
sino
y las propiedades cinemticas del cuerpo en cualquier instante (t) de su movimiento son:
Magnitud Componente x Componente y
Aceleracin a
x
=0 a
y
=g
Velocidad v
x
=v
0x
v
y
=v
0y
g t
Posicin x=v
0x
t y=v
0y
t
1
2
g t
2
La aceleracin es constante, pero la velocidad y la posicin del mvil s que dependen del tiempo. La altura
mxima se alcanza cuando la componente vertical v
y
de la velocidad se hace cero. Como
v
y
=v
0y
g t , se alcanzar la altura mxima cuando t =
v
0y
g
. Por lo tanto, la altura mxima es
y
max
=
v
0y
2
2 g
=
v
0
2
2 g
sin
2
o
El mvil avanzar horizontalmente a la velocidad constante v
0x
durante el tiempo de vuelo, que ser 2t
(siendo t el tiempo en alcanzar la altura mxima) ya que el mvil tarda lo mismo en subir que en bajar, por lo
tanto el alcance es
x
max
=v
0x
2t es decir,
alcance = x
max
=
v
0
2
g
sin 2o
34. Calendario gregoriano
El calendario actual obedece a la reforma que orden el Papa Gregorio XIII en el ao 1582. Se decidi que,
en lo sucesivo, fuesen bisiestos los aos mltiplos de cuatro, con la excepcin de que los aos seculares
(los acabados en dos ceros) slo fueran bisiestos los mltiplos de cuatrocientos.
Escriba un programa que pida al usuario una fecha (da, mes y ao como nmeros), y que diga si es o no
vlida (si el mes est comprendido entre 1 y 12, si el nmero del da es compatible con el mes, y si el ao es
mayor que 1582.)
35. Crdito
Un banco, antes de conceder un prstamo a 20 aos comprueba los ingresos del solicitante. Si los ingresos
son superiores a 12000 anuales el crdito se concede. Si los ingresos son inferiores a 12000 anuales
pero superiores a 8000 y est soltero el crdito se concede. Tambin 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 crdito o no.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 10
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
36. Tiro al blanco
Tenemos un can que lanza proyectiles con una velocidad inicial de disparo v
0
, y que nuestro objetivo es
acertar en un blanco que se encuentra localizado en las coordenadas (x
B
, y
B
). Para acertar, tendremos que
ajustar el ngulo de tiro. Sabemos que las componentes de la velocidad inicial se calculan as:
v
0x
=v
0
cos o v
0y
=v
0
sino
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 incgnitas, t y a (x
B
e y
B
son las coordenadas conocidas del blanco):
x
B
=v
0
cos(o) t y
B
=y
0
+v
0
sin(o)t +
1
2
(g)t
2
De aqu podemos eliminar t, obteniendo una nica ecuacin en tan(), empleando la relacin trigonomtrica:
1
cos
2
o
=1+tan
2
o
resultando la ecuacin de segundo grado en tan():
y
B
=y
0
+x
B
tan o+
1
2
(g)
x
B
2
v
0
2
(1+tan
2
o)
Resolviendo esta ecuacin 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 can 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 grfica en la que se muestren en diferente color las dos posibles trayectorias del proyectil desde que
sale del can hasta que impacta en el blanco (ver Figura). Esta grfica deber estar formateada
adecuadamente, con las leyendas y los ttulos de los ejes correspondientes y contener una malla o grid.
Se supondr que el can est situado en el origen de coordenadas. Tmese 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 habrn de reproducir la grfica siguiente:
Grfica obtenida para los datos de entrada especificados en el enunciado del ejercicio
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 11
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
37. Ajuste por mnimos 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 vara de 1 a N. La
manipulacin de los datos tiene normalmente uno de estos objetivos:
Determinar una ley experimental
Comprobar una ley experimental previamente supuesta
Si los datos estn relacionados entre s, se puede encontrar una funcin que se ajuste a los datos a travs
del mtodo de ajuste por mnimos cuadrados. El mtodo se basa en minimizar la siguiente funcin objetivo:
X
2
=

i=1
N
( y
i
f ( x
i
))
2
donde {x
i
, y
i
} son datos experimentales, N es el nmero total de datos objtenidos y f(x) es la funcin
incgnita. La funcin
2
calcula la diferencia entre el valor experimental y
i
y el valor obtenido por la funcin
f(x
i
) para un x
i
dado. Normalmente no se cumple que y
i
= f(x
i
), por lo que
2
nunca es cero. La forma de
determinar f es hacer que
2
sea lo ms prximo a cero posible, lo que se consigue minimizando su valor. Al
hacer esto, se obtiene una funcin que describe, slo de forma aproximada, el comportamiento global de los
puntos experimentales. Por lo tanto, el problema de encontrar f es el problema de minimizar la funcin
objetivo
2
. No existe una expresin general de esta minimizacin, aunque para casos particulares sencillos
s puede obtenerse una solucin analtica. Uno de los casos ms sencillos para aplicar el mtodo de los
mnimos cuadrados es el de una distribucin de pares ordenados {x
i
, y
i
} que se pretende ajustar a una lnea
recta. Es decir la funcin incgnita tiene la forma: f(x)=a + bx. En tal caso existe solucin analtica.
Consideremos que:
X
2
(a ,b)=

i =1
N
( y
i
(a+b x
i
))
2
Desarrollando el cuadrado se obtiene:
X
2
(a ,b)=

i =1
N
y
i
+

i=1
N
Na
2
+b
2

i=1
N
x
i
2
2a

i=1
N
y
i
2b

i =1
N
x
i
y
i
+2a b

i=1
N
x
i
Los valores ms eficaces para a y b se obtienen cuando se minimiza la funcin objetivo. El mnimo de una
funcin se caracteriza por que su primera derivada es cero, es decir:
X
2
a
=0 y
X
2
b
=0
De donde se obtienen las soluciones para a y b:
b=
N

i=1
N
x
i
y
i

i =1
N
x
i

i =1
N
y
i
N

i =1
N
x
i
2
(

i =1
N
x
i
)
2

a=

i=1
N
y
i
b

i =1
N
x
i
N
Se pide hacer un programa que dados un conjunto de datos experimentales {x
i
, y
i
}:
Calcule la recta que mejor se ajusta a ese conjunto de datos utilizando las expresiones para a y b de este
enunciado.
Represente grficamente los datos junto con una grfica 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 grfica.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 12
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
Grfica 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 nmeros e imprima el nmero mayor y el nmero 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. Tringulo
Escribir un script que lea un entero y un carcter. La salida debe ser un tringulo dibujado con el carcter
dado y de anchura mxima dada por el entero leido. Por ejemplo su el entero es 7 y el carcter es O, el
tringulo debe ser:
O
OOO
OOOOO
OOOOOOO
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 13
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
42. Rombo
Escribir un script que ample el programa anterior para dibujar un rombo:
O
OOO
OOOOO
OOOOOOO
OOOOO
OOO
O
43. Ms sumatorio
Escribe un programa que solicite un nmero n y calcule la suma de todos los nmeros naturales hasta n.
Haz la prueba con valores grandes de n.
Cuando Gauss tena 10 aos, su profesor quiso un rato de tranquilidad, y pidi a sus alumnos que sumaran
todos los nmeros naturales del 1 al 100. En unos instantes, Gaus obtuvo la solucin. Se dio cuenta de que
haciendo parejas de nmeros (primero con ltimo, segundo con penltimo,...) se obtiene siempre la misma
suma, 101, y como son 50 parejas, el resultado es 101 x 50 = 5050.
En efecto, S=
a
1
+a
n
2
n donde a1 es el primer trmino y a
n
es el ensimo trmino a sumar. Utiliza esta
expresin para comprobar el resultado del programa.
44. Factorial
Escribe un programa que lea un nmero n y calcule su factorial (n!).
Elaborar dos versiones. Una de ellas utilizando la instruccin FOR y la otra utilizando la instruccin WHILE.
45. Enteros al cuadrado
Escribe un programa que lea nmeros enteros procedentes del teclado y que cada vez que el nmero 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. Ms monedas
Disponiendo de todos los billetes y monedas fraccionarias del euro, calcular el mnimo nmero de billetes y
monedas que se han de entregar para pagar cualquier importe.
48. Conversor de temperatura. Versin 3
Igual que el Conversor de temperatura 2, pero, en este caso, el programa repite la operacin 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
x
i
i!
hasta el trmino n, es decir

i=0
n
x
i
i !
Hasta qu valor de n es factible hacer el clculo?
Pista para optimizar el clculo: evita realizar el clculo de
x
i
y de i! en cada iteracin.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 14
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
50. Soy un primo?
El programa solicita un nmero entero, comprueba si es primo y lo indica.
Para comprobar la divisibilidad de un nmero por otro se utilizar la funcin mod.
51. Ms serie: exponencial
Dado que la serie del anterior ejercicio es convergente, escribe un programa que solicite el valor de x, y un
grado de precisin (por ejemplo, 0.0001 para indicar precisin de una diezmilsima). El programa sumar
tantos trminos de la serie como necesite, hasta que el trmino a aadir sea menor que la precisin
establecida.
No es ningn secreto que esa serie sirve para calcular la funcin exponencial
e
x
. Utilcese la funcin de
biblioteca exp para comparar su resultado con el de la suma de la serie.
52. Estadgrafos bsicos
El programa solicita un nmero n que indicar la cantidad de datos que se leern a continuacin. Solicitar
cada uno de los datos xi, y con ellos calcular:
La suma de todos ellos:
S=

i =1
n
x
i
La suma de los cuadrados:
S
c
=

i=1
n
x
i
2
La media:
M=
S
n
La varianza:
V =
S
c
n
M
2
La desviacin tpica:
s=.V
El mayor de los datos
max ( x
i
)
i =1...n
El menor de los datos
min( x
i
)
i =1...n
53. Estadgrafos flotantes
Como en el anterior problema, pero se imprimir el resultado despus de introducir cada dato, utilizando
todos los disponibles hasta el momento.
54. Criba de Eratstenes
Este conspicuo seor griego se dio cuenta de que si en una lista de nmeros tachaba todos los mltiplos de
cada primo, en la lista slo le quedaban primos. Utilizaremos este mtodo para calcular los primos existentes
hasta 1000 sin hacer una sola divisin.
Comenzaremos creando una matriz que contenga los nmero 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 mltiplos de 2. Desde el 2, avanzamos por la matriz hasta
encontrar el siguiente nmero 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 quedarn en ella nicamente los primos, junto con todos los ceros que han sustituido a los
no primos. Imprimiremos exclusivamente los nmeros primos.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 15
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
55. Fibonacci
La sucesin 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 trminos de la sucesin se calculan sumando
los dos anteriores: f
i
= f
i1
+ f
i 2
Escribe un programa que genera dicha sucesin, presentando en pantalla cada uno de los trminos. El
programa terminar despus de presentar un trmino mayor que un cierto lmite (1000000, por ejemplo).
56. Raz cuadrada
El clculo de
.x
puede realizarse de forma aproximada mediante un mtodo iterativo. Se estima
inicialmente la solucin como s
i
=
x
2
lo cual slo es cierto en el caso de x = 4. Seguidamente calculamos
una nueva aproximacin
s
i +1
=s
i

s
i
2
x
2 s
i
. Si la diferencia en valor absoluto entre las dos aproximaciones
es inferior a un cierto umbral e , s
i +1
s
i
e , damos por buena la ltima aproximacin. Si no,
realizamos una nueva aproximacin.
Elabora un programa que solicita al usuario el umbral e y el valor de x. Calcula iterativamente la raz
cuadrada de x y la presenta junto con el valor proporcionado por la funcin sqrt.
57. Contador de palabras
El programa solicita una lnea de texto y calcula el nmero de palabras presentes en ella (separadas
mediante espacios).
58. Contador de palabras en mltiples lneas
Igual que antes, pero en este caso, despus de dar el resultado se vuelve a solicitar una nueva lnea. El
proceso se repite hasta que el usuario teclea fin. Entonces el programa presenta el nmero de lneas y la
suma de palabras en todas ellas.
59. Espacios
El programa solicita una frase. La frase podr contener palabras que estn separadas por ms de un
espacio. El programa normaliza la frase dejando un nico espacio entre las palabras, y presenta el resultado.
60. Bsqueda y contaje de subcadenas
Dado un fichero de texto, se trata de contar el nmero 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 nmero de apariciones de
sta y terminar.
61. Sensores
En una planta qumica disponemos de un sensor de temperatura y otro de presin. Una biblioteca nos
proporciona dos funciones, temperatura() y presion(). Llamando a esas funciones desde un programa,
podemos obtener respectivamente la temperatura y la presin 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 presin actuales
Calcula el rcord de temperatura y presin alcanzadas hasta el momento actual
Cuando la temperatura o la presin superan su respectivo rcord, presenta un mensaje de alarma en
pantalla
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 16
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
62. Clculo de combinaciones, permutaciones y variaciones
El programa solicita el tipo de clculo a realizar, combinaciones, permutaciones o variaciones, tanto con
repeticin como sin repeticin. Tambin solicita los parmetros necesarios para el clculo. El programa
aplica la frmula pertinente y presenta el resultado.
Permutaciones de m elementos: m!
Combinaciones de m elementos
tomados de n en n:
m!
n!(mn)!
Variaciones con repeticin de m
elementos tomados de n en n:
m
n
Combinaciones con repeticin de m
elementos tomados de n en n:
(m+n1)!
n!( m1)!
Variaciones sin repeticin de m
elementos tomados de n en n:
m!
n!
Es interesante observar los lmites prcticos para los clculos producidos por el desbordamiento. Estdiense
distintas posibilidades para evitarlo.
63. Integracin numrica
El mtodo de integracin mediante la suma de trapecios consiste en aproximar el valor de la integral de una
funcin en el intervalo [a,b] a la suma de las reas de los rectngulos que resultan al subdividir dicho
intervalo en un nmero N de subdivisiones:

a
b
f ( x) dx

i =1
N
e
i
donde el rea de cada elemento ei vale
e
i
= ( x
i+1
x
i
)
f ( x
i
)+ f ( x
i +1
)
2
= ancho
f ( x
i
)+ f ( x
i
+ancho)
2
siendo ancho =
(ba)
N
= x
i+1
x
i

x
a b
x
x+ancho
f(x)
f(x+ancho)
(f(x)+f(x+ancho))/2
Elabrese un programa que pida al usuario los lmites de integracin (a y b) y el nmero de subdivisiones
(N), y que devuelva la aproximacin mediante la suma de trapecios del valor de la integral de la funcin:

a
b
. x sen x
x+e
x
dx
Los lmites de integracin a y b sern introducidos por el usuario.
Ejectese 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.
Ntese que esta variacin en el nmero de subdivisiones slo afecta a partir de la cuarta cifra decimal.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 17
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
64. Traduccin del cdigo gentico
Dada una secuencia de ARN, representada por los caracteres A, G, C, U, obtendremos la secuencia de
aminocidos de la protena resultante de la traduccin. Sabemos que el cdigo gentico es el siguiente:
Aminocido Codones Aminocido 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 sntesis)
Aspartato Asp D GA(C,U) Fenilalanina Phe F UU(C,U)
Cistena 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) Triptfano 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)
Terminacin de la sntesis 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 nucletidos representados
mendiante los caracteres A, G, C, U. Podr existir tambin espacio blanco (espacios, tabulaciones y saltos
de lnea), pero no tendr significado alguno para la secuencia.
Se recorrer la secuencia de nucletidos hasta detectar el codn AUG, que inicia la traduccin y, adems,
codifica el aminocido metionina. Desde ese punto se recorrern los codones sucesivos (grupos de 3
nucletidos), traduciendo cada uno de ellos al correspondiente aminocido. El proceso termina al encontrar
cualquiera de los codones de terminacin (UAA, UAG o UGA) o al terminar la secuencia.
Por ejemplo, la secuencia de ARN: UGUAAGAGGUAUGCACUCAAAAGACUGACACCUG
codifica el polipptido: Met-His-Ser-Lys-Asp
Etapa 5 Funciones
65. Potencia
Suponga que no existe el operador potencia en Matlab. Escriba una funcin 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 instruccin FOR y la otra utilizando la instruccin WHILE.
66. Cantidad de cifras
Realizar una funcin en Matlab que reciba un nmero entero y devuelva la cantidad de cifras que tiene el
nmero (ejemplo: 123 tiene 3 cifras).
Realiza otra funcin que devuelva la suma de las cifras del nmero (ejemplo: 123 -> 1+2+3 = 6).
67. Ms Fibonacci
La sucesin 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 trminos de la sucesin se calculan sumando
los dos anteriores: f
i
= f
i1
+ f
i 2
Escribe una funcin entera que recibe como argumento un nmero entero i, y devuelve el valor de f
i
Realiza una implementacin iterativa y otra recursiva.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 18
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
68. Ms derivacin de polinomios
Utilizando el mismo planteamiento que en el ejercicio sobre derivacin 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 grficamente.
69. Ms primos
Escribe una funcin lgica que recibe un nmero entero e indica si el nmero es primo.
Trata de optimizar la funcin, reduciendo el nmero total de clculos aritmticos.
70. Factorizacin
Elabora una funcin que recibe un nmero entero y que devuelve dos vectores: el primero contiene los
nmeros primos en los que se descompone, y el segundo contiene las potencias de dichos nmeros.
Elabora un programa que solicita al usuario un nmero entero y calcula su factorizacin en nmeros primos.
Seguidamente comprueba si es correcta, realizando el clculo inverso. Finalmente presenta el resultado en
pantalla. Por ejemplo, para el caso de 180 (2
2
* 3
2
* 5
1
), el programa presentara:
Num Pot
2 2
3 2
5 1
Ser necesario utilizar la funcin desarrollada en el ejercicio ms primos. Se comprobar si el nmero a
factorizar es divisible por los sucesivos nmeros primos, y cuntas veces es divisible por cada uno de ellos.
Desafo entre compaeros: Busca dos nmeros primos tan grandes como puedas encontrar, multiplcalos y
proporciona el producto resultante a un compaero. ste deber utilizar su programa de factorizacin para
encontrar los dos nmeros primos originales.
Este tipo de desafo es uno de los juegos favoritos entre los actuales expertos en matemtica discreta, ya
que los sistemas modernos de cifrado se basan en la utilizacin de pares de primos muy grandes y, por
tanto, muy difciles de factorizar.
71. Nmeros perfectos
Un nmero perfecto es el que es igual a la suma de sus divisores, excluido l mismo.
Ejemplo de nmero perfecto: 6 = 1+2+3 Contraejemplo: 12 1+2+3+4+6
Se pide:
Escribir una funcin que reciba un nmero y devuelva si es o no perfecto.
Escribir un script que, utilizando la funcin anterior, muestre por pantalla los nmeros perfectos que hay
desde el 1 al 200.
72. Ms combinatoria
Elaboraremos cinco funciones, una por cada uno de los clculos del ejercicio sobre Clculo de
combinaciones, permutaciones y variaciones. Obsrvese que alguna de las funciones del mdulo puede
hacer uso de otras funciones del mismo mdulo.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 19
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
73. Ms estadgrafos
Elaboraremos siete funciones, una por cada estadgrafo de los utilizados en el ejercicio sobre Estadgrafos
bsicos. Las funciones recibirn como argumento de entrada un vector con los datos a analizar, y
devolvern como resultado un valor real. La declaracin de cada una de ellas podr seguir el siguiente
esquema:
function r = estadigrafo(v)
... % Aqu se calcula el estadgrafo
r = ... % y se asigna el resultado
Elaboraremos un programa que realiza exactamente las mismas operaciones que el ejercicio sobre
Estadgrafos bsicos, con la salvedad de que realizar los clculos llamando a las funciones.
74. Qumica del carbono
Realice un programa que pida al usuario una frmula qumica en una cadena de caracteres. Esta frmula
podr tener los siguientes caracteres:
C, H, O, N como identificadores de los elementos bsicos de la qumica del carbono
2, 3, 4, 5 y 6 como ndices posibles de estos elementos
Se pide analizar esta frmula para:
Decidir si contiene algn carcter no vlido, en cuyo caso se deber volver a pedir una nueva frmula al
usuario
En el caso de que todos los caracteres sean vlidos mostrar por pantalla el nmero de tomos de cada
tipo que contiene la frmula
Por ltimo, mostrar por pantalla el peso molecular
Se recomienda dividir el problema en subproblemas ms sencillos para que sea ms fcil la resolucin del
problema final. Notar que el nmero de tomos de un elemento es funcin del carcter situado a
continuacin de l en la frmula
NOTA: Para que el programa considere que una frmula es correcta es suficiente con comprobar que slo
coniene caracteres vlidos. Es decir, no es necesario que el programa decida si la frmula es qumicamente
correcta o no. Son ejemplos de frmulas consideradas vlidas: CH3CH3, H3CCH3, C2H6.
75. Solucin de ecuaciones Mtodo de biparticin
Segn el teorema de Bolzano, si una funcin 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 funcin se hace nula.
Esto nos permite disear un mtodo para encontrar
soluciones a una funcin continua en un intervalo. El usuario
puede tantear hasta encontrar un valor a y otro b, tales que
en uno la funcin 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 funcin. 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 biparticin tantas veces
como sea necesario, hasta que la anchura del intervalo sea inferior a una tolerancia determinada tambin
por el usuario.
Elabrese 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 solucin entre ambos (aunque
no estamos seguros de que no la haya, sino que el mtodo no se puede aplicar).
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 20
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
Si son de distinto signo:
Solicita al usuario una tolerancia para la solucin (mximo error admisible).
Aplica el mtodo de biparticin descrito y se presenta la solucin.
La ecuacin de la que se busca solucin ha de estar escrita por separado. Para ello, escribiremos una
funcin declarada de la siguiente manera:
function r = f(x) % x es un valor real
r = ... % Aqu va la funcin que queremos resolver
De este modo, slo es necesario cambiar el contenido de esta funcin para resolver distintos problemas.
76. Solucin de ecuaciones Mtodo de Newton
El mtodo de Newton para resolver ecuaciones se basa en el conocimiento de la funcin y de su derivada.
Partiendo de una aproximacin x
i
de la solucin se
calcula en ese punto el valor de la funcin f ( x
i
) y el de la
derivada f ' ( x
i
) . Con esos datos se calcula una nueva
aproximacin x
i+1
=x
i

f ( x
i
)
f ' ( x
i
)
. Se repite el proceso,
refinando iterativamente la solucin hasta que la diferencia
entre dos valores sucesivos en el clculo

x
i+1
x
i

es
inferior a un valor de tolerancia establecido por el usuario.
Para no tener que codificar una funcin y su derivada, nos
centraremos en un caso ms simple, elaborando un
programa que calcula soluciones de ecuaciones polinmicas.
Aprovecharemos la funcin derivapol y la funcin evalpol que
fueron desarrolladas en el ejercicio sobre ms derivacin de
polinomios.
El programa solicitar al usuario:
El orden de la funcin polinmica a resolver (la mxima 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 funcin a resolver.
El valor de la tolerancia o precisin deseada en el clculo de la solucin.
Un valor inicial x
i
de la variable x, que se utilizar como primera aproximacin del resultado.
Se utilizar la funcin derivapol para calcular la derivada del polinomio problema introducido por el usuario.
Despus, utilizar la funcin evalpol para evaluar la funcin y su derivada en x
i
y calcular la siguiente
aproximacin x
i+1
segn se ha descrito. Esto se repetir tantas veces como sea necesario hasta que la
solucin sea tan precisa como establece la tolerancia. Ser ilustrativo presentar en cada iteracin los valores
de x
i
, f ( x
i
) y f ' ( x
i
) .
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 21
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
77. Ordenacin Mtodo 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 algn mtodo que los ordene.
En este ejercicio vamos a utilizar el mtodo de la burbuja:
Compararemos el primer elemento de la matriz con el que le sigue. Si estn ordenados, se dejan como
estn, y si no, se intercambian. Avanzaremos una posicin y repetiremos la operacin, 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 algn 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 ningn intercambio. En ese momento, la matriz estar ordenada.
Escribiremos la funcin burbuja, que recibe un nico argumento, el vector a ordenar, y devuelve un vector
con los valores ordenados, tras emplear el mtodo descrito.
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numricos. El
programa abrir el fichero y leer los valores, cargndolos en un vector. Seguidamente, llamaremos a la
funcin burbuja, que devolver el vector ordenado, y presentaremos ste en pantalla.
Fjate en los detalles del procedimiento de ordenacin y busca posibles formas de optimizarlo.
78. Ordenacin Mtodo de seleccin
Este mtodo de ordenacin consta de los siguientes pasos (suponiendo ordenacin 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 funcin ordselec, que recibe un nico argumento, el vector a ordenar, y devuelve el vector
ordenado, tras emplear el mtodo descrito.
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numricos. El
programa abrir el fichero y leer los valores, cargndolos en un vector. Seguidamente, llamaremos a la
funcin ordselec, que devolver el vector ordenado, y presentaremos ste en pantalla.
79. Ordenacin Mtodo de insercin
Este mtodo de ordenacin consta de los siguientes pasos (suponiendo ordenacin 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 posicin 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 posicin.
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 posicin.
Si no, se inserta en la posicin que dej libre el anterior desplazamiento.
Escribiremos la funcin ordinsert, que recibe un nico argumento, el vector a ordenar, y devuelve el vector
ordenado, tras emplear el mtodo descrito.
Elabora un script que solicite el nombre de un fichero que contiene una serie de datos numricos. El
programa abrir el fichero y leer los valores, cargndolos en un vector. Seguidamente, llamaremos a la
funcin ordinsert, que devolver el vector ordenado, y presentaremos ste en pantalla.
80. Termostato
La temperatura de un recinto vara segn la energa trmica (calor) que gana o pierde, segn la expresin

AT=AQ/ C
[1]
donde C es la capacidad calorfica del recinto, Q es la variacin de energa trmica del recinto y T es la
correspondiente variacin de temperatura de ste.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 22
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
El recinto pierde calor por sus paredes porque el exterior se encuentra ms fro, segn
AQ=k AT At
, donde Q es la prdida de energa, T es la diferencia de temperatura entre el
interior y el exterior del recinto, k es la conductividad trmica 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 energa al
recinto segn
AQ=W At
, 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
AQ=k AT At
[2]
en tanto que cuando el calefactor est conectado, gana
AQ=W At k AT At
[3]
Deseamos mantener un recinto a una temperatura constante Tobjetivo = 22 C, mientras que el exterior se
encuentra a Te = 5C. El recinto tambin se encuentra inicialmente a Ti = 5C. Para ello utilizamos un
sistema de calefaccin con una potencia W = 300 kcal/s. El recinto tiene una capacidad calorfica
C = 2000 kcal/C, y sus paredes tienen una conductividad trmica k = 10 kcal/(sC)
Calcularemos la ganancia o prdida de calor, Q, en cada intervalos discretos de tiempo t usando [2] y [3],
tras lo cual calcularemos la correspondiente variacin de temperatura usando [1]. en funcin de la
temperatura resultante, conectaremos o desconectaremos el calefactor, y repetiremos el ciclo.
Representaremos grficamente la evolucin de la temperatura a lo largo del tiempo (1000 s en intervalos de
5). Obsrvese la estabilidad de la temperatura una vez alcanzada la temperatura objetivo. Ensyese 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 segn lo cerca o lejos que nos encontremos del objetivo, considerando el error
e = Tobjetivo - T:
Trmino proporcional: P=K
p
e (la potencia aplicada es proporcional al error)
Trmino integral: I =K
i

eAt (la potencia aplicada es proporcional al error acumulado)


Trmino derivativo: D=K
d
Ae
At
(la potencia aplicada es proporcional a la variacin 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=W
max
( P+I +D) , es decir, W=W
max
( K
p
e+K
i

eAt +K
d
Ae
At
)
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 mxima del calefactor, se
aplicar la potencia mxima.
Ensyese en las mismas condiciones que el ejercicio sobre el termostato, utilizando los valores:
Kp = 0,1 Ki = 0 Kd = 0 Control proporcional (P) Dnde 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. Cmo es ahora el comportamiento?
Kp = 0,1 Ki = 0,001 Kd = 100 Qu efecto tiene un Kd tan grande?
Cul es la potencia aplicada cuando la temperatura se estabiliza?
Ensaya el comportamiento del sistema con otros valores de los tres parmetros PID.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 23
Fundamentos de Informtica, curso 2007-2008 Ingeniera Tcnica Industrial (Qumica) ESCET URJC
82. Gravitacin
La fuerza de atraccin 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 m
2
Kg
-2
(constante de gravitacin 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 atraccin gravitatoria. Dichos cuerpos se
denominan Sol, Mercurio, Venus, Tierra y Marte, cuyas coordenadas y velocidad del da 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 parmetros necesarios en http://ssd.jpl.nasa.gov/?constants
Definiremos un vector de posicin del conjunto de las partculas en cada dimensin:
x = vector de posiciones en x
y = vector de posiciones en y
z = vector de posiciones en z
Tambin definiremos los vectores de velocidad en cada dimensin:
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 acta sobre cada cuerpo.
Para ello podemos aplicar la frmula [1] en cada dimensin del espacio entre cada par de cuerpos.
Seguidamente, sumaremos vectorialmente las fuerzas que actan sobre cada cuerpo. Calcularemos la
aceleracin del cuerpo teniendo en cuenta que F = m a, y aplicaremos el mtodo de Euler para estimar la
nueva velocidad y posicin de cada partcula en un intervalo de de tiempo t.
v = a t [variacin de la velocidad]
p = v t [variacin de la posicin]
Cada vez que se calcule una nueva posicin, sta se reflejar en una grfica que mostrar los planetas
orbitando en torno al sol.
Jos Luis Esteban Ejercicios de Matlab V1.169 Pg. 24

Das könnte Ihnen auch gefallen