Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios 3
Ejercicios 3
30. 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.
31. 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.
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.
2
b 4ac , el cual determina el
Pg. 9
Representar grficamente la trayectoria descrita por el proyectil. Se supondr que el punto de partida es
el origen de coordenadas.
v 0x=v 0 cos
v 0y=v 0 sin
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 0yg t
Posicin
x=v0x t
1
y=v 0y t g t 2
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 0y
. Por lo tanto, la altura mxima es
g
v 20y
v2
= 0 sin2
2g
2g
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 2 t
es decir,
v 20
alcance = x max = sin 2
g
37. 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.
Pg. 10
38. Bochorno
La sensacin de calor no slo depende de la temperatura, sino tambin de la humedad, segn la frmula:
HI =[ 1 T T
[]
1
R
2
R
3
R
v 0x=v 0 cos
v 0y=v 0 sin
x B=v 0 cos t
1
2
y B = y 0v 0 sint g t
2
De aqu podemos eliminar t, obteniendo una nica ecuacin en tan(), empleando la relacin trigonomtrica:
1
=1tan2
2
cos
resultando la ecuacin de segundo grado en tan():
x 2B
1
y B = y 0x B tan g 2 1tan 2
2
v0
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:
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:
Pg. 11
Grfica obtenida para los datos de entrada especificados en el enunciado del ejercicio
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:
N
= y i f x i 2
2
i=1
donde {xi, yi} 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 yi y el valor obtenido por la funcin
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 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 {xi, yi} 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:
N
a ,b= y iab xi 2
2
i =1
i =1
i=1
a ,b= yi Na b
2
i=1
i =1
i=1
x 2 a y i2 b x i y i 2 a b x i
i=1
2
i
Pg. 12
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:
2
=0 y
a
2
=0
b
N xi y i x i y i
b=
i=1
2
i
i =1
N
i =1
N x x i
i =1
y ib x i
a= i=1
i =1
i =1
Se pide hacer un programa que dados un conjunto de datos experimentales {xi, yi}:
Calcule la recta que mejor se ajusta a ese conjunto de datos utilizando las expresiones para a y b de este
enunciado.
Represente grficamente los datos junto con una grfica de la recta calculada (ver figura)
Grfica de ajuste lineal obtenida para los datos de entrada especificados en el enunciado
Pg. 13
Etapa 4 Bucles
41. 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.
43. 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.
44. 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
45. Rombo
Escribir un script que ample el programa anterior para dibujar un rombo:
O
OOO
OOOOO
OOOOOOO
OOOOO
OOO
O
46. 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 1a n
n donde a1 es el primer trmino y an es el ensimo trmino a sumar. Utiliza esta
2
47. 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.
Pg. 14
50. 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.
52. Serie
El programa solicita x y n, y calcula la suma de la serie
xi
hasta el trmino n, es decir
i!
i=0
xi
i!
x i y de i! en cada iteracin.
e x . Utilcese la funcin de
S= x i
i =1
S c = xi 2
i=1
Pg. 15
S= x i
i =1
La media:
La varianza:
M=
V=
S
n
Sc
M 2
n
La desviacin tpica:
s= V
max x i i =1...n
min x i i =1...n
58. Fibonacci
La sucesin de Fibonacci es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21, 34,...
f 1=1 ,
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).
x
lo cual slo es cierto en el caso de x = 4. Seguidamente calculamos
2
2
si x
una nueva aproximacin si 1=s i
. Si la diferencia en valor absoluto entre las dos aproximaciones
2 si
es inferior a un cierto umbral e , si 1 s ie , damos por buena la ltima aproximacin. Si no,
inicialmente la solucin como
si =
Pg. 16
62. 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.
64. 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:
m!
mn
m!
n!
Combinaciones de m elementos
tomados de n en n:
m!
n!mn !
mn1!
n! m1!
Es interesante observar los lmites prcticos para los clculos producidos por el desbordamiento. Estdiense
distintas posibilidades para evitarlo.
Pg. 17
f x dx
ei
i =1
f xi f xi 1
f x i f x i ancho
= ancho
2
2
ba
siendo ancho =
= x i1x i
N
e i = x i1x i
f(x)
(f(x)+f(x+ancho))/2
f(x+ancho)
x
a
x+ancho
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:
b
x senx x dx
a
xe
Ntese que esta variacin en el nmero de subdivisiones slo afecta a partir de la cuarta cifra decimal.
Codones
Aminocido
Alanina
Ala A
Arginina
Arg R
Asparragina
Asn N
Aspartato
Asp D
Cistena
Cys C
Glutamato
Glu E
Glutamina
Gln Q
Glicina
Gly G
Histidina
His H
Isoleucina
Ile
I
Terminacin de la sntesis
GC(A,C,G,U)
CG(A,C,G,U) o AG(A,G)
AA(C,U)
GA(C,U)
UG(C,U)
GA(A,G)
CA(A,G)
GG(A,C,G,U)
CA(C,U)
AU(A,C,U)
UA(A,G) o UGA
Leucina
Lisina
Metionina
Fenilalanina
Prolina
Serina
Treonina
Triptfano
Tirosina
Valina
Codones
Leu
Lys
Met
Phe
Pro
Ser
Thr
Trp
Tyr
Val
L
K
M
F
P
S
T
W
Y
V
CU(A,C,G,U) o UU(A,G)
AA(A,G)
AUG (inicio de la sntesis)
UU(C,U)
CC(A,C,G,U)
UC(A,C,G,U) o AG(C,U)
AC(A,C,G,U)
UGG
UA(C,U)
GU(A,C,G,U)
Pg. 18
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
69. 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.
71. Ms Fibonacci
La sucesin de Fibonacci es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21, 34,...
f 1=1 ,
Escribe una funcin entera que recibe como argumento un nmero entero i, y devuelve el valor de
fi
72. 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.
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.
74. Ms Pi
El clculo de puede realizarse de forma iterativa mediante la siguiente serie:
Pg. 19
1
1
1
= 12 1
2
...
33 53 733
, es decir,
= 12
k=0
1 k
2k13k
Escribe una funcin en Matlab que calcule con una precisin mejor que , es decir, cuando el trmino
sumado sea inferior en valor absoluto a termina el clculo.
76. 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 (22 * 32 * 51), el programa presentara:
Num
2
3
5
Pot
2
2
1
Contraejemplo: 12 1+2+3+4+6
Se pide:
Escribir un script que, utilizando la funcin anterior, muestre por pantalla los nmeros perfectos que hay
desde el 1 al 200.
78. 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.
Pg. 20
79. 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)
...
r = ...
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.
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
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.
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).
Pg. 21
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)
r = ...
% x es un valor real
% Aqu va la funcin que queremos resolver
De este modo, slo es necesario cambiar el contenido de esta funcin para resolver distintos problemas.
xi de la solucin se
calcula en ese punto el valor de la funcin f xi y el de la
derivada f ' xi . Con esos datos se calcula una nueva
f x i
aproximacin xi1 =xi
. Se repite el proceso,
f ' x i
Partiendo de una aproximacin
Un valor inicial
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
xi y calcular la siguiente
aproximacin x i1 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
f xi y f ' xi .
de x i ,
Pg. 22
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.
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.
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.
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.
86. Termostato
La temperatura de un recinto vara segn la energa trmica (calor) que gana o pierde, segn la expresin
T = Q /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
Pg. 23
El recinto pierde calor por sus paredes porque el exterior se encuentra ms fro, segn
Q=k T t , 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 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 tk T t [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.
e
t
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
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
Kp = 0,1
Ki = 0,001
Kd = 0
Kp = 0,1
Ki = 0,001
Kd = 10
Kp = 0,1
Ki = 0,001
Kd = 100
Pg. 24
88. Gravitacin
La fuerza de atraccin gravitatoria entre dos cuerpos de masas m y m' es
F =G
m m'
[1], donde
d2
F es la fuerza en Newtons
G = 6,67259 * 10-11 N m2 Kg-2
[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.
Pg. 25