fi0809 ejercicios 3

Upload: leyro19

Post on 16-Jul-2015

122 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCEjercicios de Matlab. Entrega 3.Etapa 3 Programacin secuencial28. Nmero de monedasDisponiendo 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.29. Unidades de tiempoPartiendo de una cantidad de tiempo medida en segundos, calcular el nmero de semanas, das, horas, minutos y segundos a los que corresponde. 30. FrasesEl 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. ComparacionesEscribe 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.32. Ley de OhmLa 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=VREscribe 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.33. Ecuacin de segundo grado. Versin 2Se 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 b24ac, el cual determina el nmero de soluciones, y si son reales o complejas.34. Conversor de temperatura. Versin 2El 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 origenEl programa presenta la temperatura en la escala de destino y termina.Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 9Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC35. Tiro parablicoConstruir 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 esv0 y ngulo . Tendremos que las componentes de la velocidad inicial son:v0x=v0coso v0y=v0sinoy las propiedades cinemticas del cuerpo en cualquier instante (t) de su movimiento son:Magnitud Componente x Componente yAceleracin ax=0 ay=gVelocidad vx=v0xvy=v0yg tPosicin x=v0xt y=v0yt 12 g t2La aceleracin es constante, pero la velocidad y la posicin del mvil s que dependen del tiempo. La altura mxima se alcanza cuando la componente verticalvy de la velocidad se hace cero. Como vy=v0yg t , se alcanzar la altura mxima cuandot =v0yg. Por lo tanto, la altura mxima esymax = v0y22 g = v022 g sin2oEl mvil avanzar horizontalmente a la velocidad constantev0x 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 esxmax=v0x2t es decir,alcance = xmax = v02g sin 2o36. Calendario gregorianoEl 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.)37. CrditoUn 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.174 Pg. 10Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC38. BochornoLa sensacin de calor no slo depende de la temperatura, sino tambin de la humedad, segn la frmula:Donde HI es la temperatura de bochorno o heat index,T es la temperatura en F, y R es la humedad relativa.Para simplificar el aspecto de la la frmula, llamaremos C a la matriz de coeficientes de la frmula, con lo que sta queda:Tenemos en memoria un vector Vt de temperaturas y un vector Vr de humedades relativas, medidas diariamente a lo largo de varios meses. La matriz C tambin est en memoria. Se pide calcular el vector de temperatura de bochorno (Vhi) a lo largo de ese periodo.El primer da en que se tom la medicin fue lunes, calcular los valores medios de la temperatura, la humedad y la temperatura de bochorno en los domingos del periodo medido.39. Tiro al blancoTenemos un can 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 o v0y=v0sinoDado 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 (xB e yB son las coordenadas conocidas del blanco):xB=v0cos(o) tyB=y0+v0sin(o)t +12(g)t2De aqu podemos eliminar t, obteniendo una nica ecuacin en tan(), empleando la relacin trigonomtrica:1cos2o=1+tan2oresultando la ecuacin de segundo grado en tan():yB=y0+xBtan o+12(g) xB2v02 (1+tan2o)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,8los cuales habrn de reproducir la grfica siguiente:Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 11HI =| 1 TT2T3C|1RR2R3Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCGrfica obtenida para los datos de entrada especificados en el enunciado del ejercicio40. Ajuste por mnimos cuadradosEl 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 supuestaSi 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:X2=i=1N( yi f ( xi))2donde {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:X2(a ,b)=i =1N( yi(a+b xi))2Desarrollando el cuadrado se obtiene:X2(a ,b)=i =1Nyi+i=1NNa2+b2i=1Nxi22ai=1Nyi2bi =1Nxi yi+2a bi=1NxiJos Luis Esteban Ejercicios de Matlab V1.174 Pg. 12Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCLos 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:X2a =0y X2b =0De donde se obtienen las soluciones para a y b:b=Ni=1Nxi yii =1Nxii =1NyiNi =1Nxi2(i =1Nxi)2 a=i=1Nyibi =1NxiNSe 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)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.Grfica de ajuste linealobtenida paralos datos de entradaespecificados en el enunciadoJos Luis Esteban Ejercicios de Matlab V1.174 Pg. 13Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCEtapa 4 Bucles41. CuadradosHacer 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.42. Mayor y menorRealizar un script que pida n nmeros e imprima el nmero mayor y el nmero menor.43. VocalesEscribe 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. TringuloEscribir 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:OOOOOOOOOOOOOOOO45. RomboEscribir un script que ample el programa anterior para dibujar un rombo:OOOOOOOOOOOOOOOOOOOOOOOOO46. Ms sumatorioEscribe 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=a1+an2n donde a1 es el primer trmino y an es el ensimo trmino a sumar. Utiliza esta expresin para comprobar el resultado del programa.47. FactorialEscribe 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.Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 14Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC48. Enteros al cuadradoEscribe 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.49. Primera vocalRealizar un script que solicite al usuario una cadena, en la cual busca y escribe la primera vocal que aparezca.50. Ms monedasDisponiendo 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.51. Conversor de temperatura. Versin 3Igual 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.52. SerieEl programa solicita x y n, y calcula la suma de la seriexii!hasta el trmino n, es decir i=0nxii !Hasta qu valor de n es factible hacer el clculo?Pista para optimizar el clculo: evita realizar el clculo de xiy dei! en cada iteracin.53. 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.54. Ms serie: exponencialDado 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 exponencialex. Utilcese la funcin de biblioteca exp para comparar su resultado con el de la suma de la serie.55. Estadgrafos bsicosEl 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 =1nxiLa suma de los cuadrados:Sc=i=1nxi2Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 15Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCLa suma de todos ellos:S=i =1nxiLa media:M=SnLa varianza:V =Scn M2La desviacin tpica:s=.VEl mayor de los datosmax ( xi)i =1...nEl menor de los datosmin( xi)i =1...n56. Estadgrafos flotantesComo en el anterior problema, pero se imprimir el resultado despus de introducir cada dato, utilizando todos los disponibles hasta el momento.57. Criba de EratstenesEste 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.58. FibonacciLa sucesin de Fibonacci es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21, 34,...Es decir,f1=1 ,f2=1 , y cada uno de los siguientes trminos de la sucesin se calculan sumando los dos anteriores: f i= f i1+ f i 2Escribe 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).59. Raz cuadradaEl clculo de .xpuede realizarse de forma aproximada mediante un mtodo iterativo. Se estima inicialmente la solucin comosi=x2lo cual slo es cierto en el caso de x = 4. Seguidamente calculamos una nueva aproximacinsi +1=sisi2x2 si. Si la diferencia en valor absoluto entre las dos aproximaciones es inferior a un cierto umbral e ,si +1sie , 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.Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 16Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC60. Contador de palabrasEl programa solicita una lnea de texto y calcula el nmero de palabras presentes en ella (separadas mediante espacios).61. Contador de palabras en mltiples lneasIgual 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.62. EspaciosEl 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.63. Bsqueda y contaje de subcadenasDado 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.64. SensoresEn 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 pantalla65. Seleccin de datosElabora un script que lee de fichero un vector de datos reales, los cuenta (n), calcula su media m y cuenta el nmero d de datos mayores que la media. Presenta por pantalla los valores de n, m y d y guarda en otro fichero la lista de valores mayores que la media. Especifica cul es la estructura de los ficheros de entrada y de salida.66. Clculo de combinaciones, permutaciones y variacionesEl 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:mnCombinaciones 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.Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 17Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC67. Integracin numricaEl 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: abf ( x) dx i =1Neidonde el rea de cada elemento ei vale ei = ( xi+1xi)f ( xi)+ f ( xi +1)2= ancho f ( xi)+ f ( xi+ancho)2siendoancho = (ba)N= xi+1xi x ab 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:ab. x sen xx+exdxLos 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.68. Traduccin del cdigo genticoDada 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 CodonesAlanina 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 UGGHistidina 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 UGANota: A modo de ejemplo, GC(A,C,G,U), significa GCA, GCC, GCG o GCUSe leer desde teclado (o desde fichero) una secuencia de ARN, formada por nucletidos representados mendiante los caracteresA, G, C, U. Podr existir tambin espacio blanco (espacios, tabulaciones y saltos de lnea), pero no tendr significado alguno para la secuencia.Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 18Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCSe 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: UGUAAGAGGUAUGCACUCAAAAGACUGACACCUGcodifica el polipptido: Met-His-Ser-Lys-AspEtapa 5 Funciones69. PotenciaSuponga 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.70. Cantidad de cifrasRealizar 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).71. Ms FibonacciLa sucesin de Fibonacci es la siguiente: 1, 1, 2, 3, 5, 8, 13, 21, 34,...Es decir,f1=1 ,f2=1 , y cada uno de los siguientes trminos de la sucesin se calculan sumando los dos anteriores: f i= f i1+ f i 2Escribe una funcin entera que recibe como argumento un nmero entero i, y devuelve el valor de f iRealiza una implementacin iterativa y otra recursiva.72. Ms primosEscribe 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.73. Ms derivacin de polinomiosUtilizando 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.74. Ms PiEl clculo de puede realizarse de forma iterativa mediante la siguiente serie:Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 19Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCn=.12(1133+15321733+...), es decir,n=.12k=01k(2k+1)3kEscribe 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.75. Mximo comn divisorEl algoritmo de Euclides para calcular el mximo comn divisor de m y n, enteros mayores que cero, es:1. Si n es igual a 0, el resultado es m. Hemos terminado.2. Asignar a r el resto de la divisin entera de m entre n3. Asignar a m el valor de n4. Asignar a n el valor de r 5. Ir al paso 1Elabora una funcin en Matlab que recibe m y n como argumentos y que devuelve el mximo comn divisor como resultado.76. FactorizacinElabora 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:NumPot223251Ser 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.77. Nmeros perfectosUn 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+6Se 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.78. Ms combinatoriaElaboraremos cinco funciones, una por cada uno de los clculos del ejercicio sobre Clculo decombinaciones, 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.174 Pg. 20Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC79. Ms estadgrafosElaboraremos siete funciones, una por cada estadgrafo de los utilizados en el ejercicio sobre Estadgrafosbsicos. 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 estadgrafor = ... % y se asigna el resultadoElaboraremos 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.80. Qumica del carbonoRealice 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 elementosSe 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 molecularSe 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 frmulaNOTA: 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.81. Solucin de ecuaciones Mtodo de biparticinSegn 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.174 Pg. 21Fundamentos de Informtica, curso 2008-2009 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 realr = ... % Aqu va la funcin que queremos resolverDe este modo, slo es necesario cambiar el contenido de esta funcin para resolver distintos problemas.82. Solucin de ecuaciones Mtodo de NewtonEl mtodo de Newton para resolver ecuaciones se basa en el conocimiento de la funcin y de su derivada. Partiendo de una aproximacin xide 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 aproximacin xi+1=xi f (xi)f ' (xi). Se repite el proceso, refinando iterativamente la solucin hasta que la diferencia entre dos valores sucesivos en el clculo xi+1xies 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 xide 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 xiy calcular la siguiente aproximacin xi+1segn 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 dexi, f ( xi) yf ' ( xi) .Jos Luis Esteban Ejercicios de Matlab V1.174 Pg. 22Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC83. Ordenacin Mtodo de la burbujaEn 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.84. Ordenacin Mtodo de seleccinEste 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.85. Ordenacin Mtodo de insercinEste 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.86. TermostatoLa 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.174 Pg. 23Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJCEl 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 yt 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 pierdeAQ=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.87. Termostato PIDExisten 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 pe(la potencia aplicada es proporcional al error)Trmino integral:I =KieAt(la potencia aplicada es proporcional al error acumulado)Trmino derivativo:D=Kd AeAt (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 discretae/t. La potencia aplicada ser W=Wmax( P+I +D) , es decir,W=Wmax( K pe+KieAt +Kd AeAt )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.174 Pg. 24Fundamentos de Informtica, curso 2008-2009 Ingeniera Tcnica Industrial (Qumica) ESCET URJC88. GravitacinLa fuerza de atraccin gravitatoria entre dos cuerpos de masas m y m' esF=G mm'd2[1], dondeF es la fuerza en NewtonsG = 6,67259 * 10-11 N m2 Kg-2(constante de gravitacin universal)m y m' son las masas de los cuerpos en Kgd 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/?constantsDefiniremos un vector de posicin del conjunto de las partculas en cada dimensin:x = vector de posiciones en xy = vector de posiciones en yz = vector de posiciones en zTambin definiremos los vectores de velocidad en cada dimensin:vx = vector de velocidades en xvy = vector de velocidades en yvz = vector de velocidades en zTendremos 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.174 Pg. 25