Informática y Programación Escuela Técnica Superior de Ingenieros de Minas y Energía - U.P.M. Curso 2011/12 Examen Final de Laboratorio A Convocatoria Ordinaria JUNIO 2012 Apellidos:…………………………………………………………………………………… Nombre:……………………………………………………………………………………. Grupo:………………… Hoja de respuestas. Nº de pregunta 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Opción A Opción B Opción C Opción D NOTA Pregunta 1. La siguiente expresión: permite aproximar el número Pi = 3,1416… en el valor de p cuando m tiende a infinito. Para evaluar una aproximación, el proceso debe detenerse cuando i sea menor o igual a m=1000 o cuando | - p| ≤ error, siendo el error máximo admisible en la aproximación igual a error = 0,01. Selecciona la respuesta correcta si se requiere un código MATLAB que resuelva esta expresión: A C p=0; m=1000; for i=0:m p=p+4*((-1)^i)/(2*i+1); error=abs(pi-p); i=i+1; if (error<=0.01) break end end disp('El valor de pi es');disp(p); disp('El valor del error es');disp(error); disp('La iteración final es’);disp(i); p=0; error=abs(pi-p); m=1000; i=0; while (i>=m) p=p+4*((-1)^i)/(2*i+1); error=abs(pi-p); i=i+1; if (error<=0.01) break end end disp('El valor de pi es');disp(p); disp('El valor del error es');disp(error); disp('La iteración final es’);disp(i); B D p=0; error=abs(pi-p); m=1000; i=0; while (error>=0.01) & (i<=m) p=p+4*((-1)^i)/(2*i+1); error=abs(pi-p); i=i+1; end disp('El valor de pi es');disp(p); disp('El valor del error es');disp(error); disp('La iteración final es’);disp(i); Ninguno de los anteriores Pregunta 2. ¿Cuál de los siguientes motivos puede dar lugar a un error de bucle infinito en un bucle while? A C No inicializar las variables involucradas en la condición antes del bucle. No definir adecuadamente un contador para el bucle. B D No cambiar las variables involucradas en la condición dentro del bucle. Ninguna de las anteriores. Pregunta 3. La aproximación de la integral definida de una función f(x) cualquiera en un intervalo dado [a,b], con n puntos de integración, mediante la fórmula de cuadratura gaussiana se expresa como: siendo cnj un vector de coeficientes y rnj un vector que contiene las de raíces del polinomio de Legendre que da lugar a esta aproximación, cuyos valores son conocidos. Datos de entrada: f, n, a, b, cn y rn; Datos de salida: int. Selecciona la respuesta correcta si se requiere un algoritmo que resuelva esta expresión. A C B D Ninguno de los anteriores Pregunta 4. La siguiente función: function [p] = numero(n) p=1; for i=1:n p=-p*i; end end Calcula el número p. Dicho número es el cálculo de (elegir una opción): A 1+2+...+n B n! C ((-1)n)*n! D Ninguna de las anteriores. Pregunta 5. El siguiente algoritmo evalúa la raíz de una función no lineal f(x) mediante la aplicación del método de bisección. Selecciona la respuesta correcta si se requiere un programa MATLAB que implemente este algoritmo. A C k = 0; err = abs(b-a)/2; x = a; fa = eval(f); while (k <= itm) & (err >= delta) c = (a+b)/2; x = c; fc = eval(f); if fc == 0, a = c; b = c; elseif fa*fc < 0, b = c; else a = c; end err = abs(b – a)/2; k = k + 1; end disp(c); disp(fc); disp(err); disp(k); k = 0; err = abs(b-a)/2; while (k <= itm) & (err >= delta) c = (a+b)/2; x = c; fc = eval(f); if fc == 0, a = c; b = c; elseif fa*fc < 0, b = c; else a = c; x = a; fa = eval(f); end err = abs(b – a)/2; k = k + 1; end disp(c); disp(fc); disp(err); disp(k); B D k = 0; err = abs(b-a)/2; if (k <= itm) & (err >= delta) c = (a+b)/2; x = c; fc = eval(f); if fc == 0, a = c; b = c; elseif fa*fc < 0, b = c; else a = c; x = a; fa = eval(f); end err = abs(b – a)/2; k = k + 1; end disp(c); disp(fc); disp(err); disp(k); Ninguno de los anteriores. Pregunta 6. Se desea identificar cuál es la función que tiene correctamente programada en Matlab la regla del trapecio compuesta, con la que se obtiene para un entero n ≥ 1 el valor de la integral definida de una función en un intervalo: Para lo cual es necesario tener en cuenta que los datos de entrada son a, b, n, fun, y el dato de salida es la aproximación de dicha integral valorI. Selecciona el código apropiado. A C % Programa para implementar la formula % del trapecio compuesta function [valorI]=trapecio(fun,a,b,n) % fun: funcion que se quiere integrar % a: limite inferior de la integral % b: limite superior de la integral % n: numero de subdivisiones h=(b-a)/n; s=0; for i=1:n-1 s=s+h*eval(fun); end fa= eval(fun) fb= eval(fun) s=s+(h/2.)*(fa+fb); valorI=s; return % Programa para implementar la formula % del trapecio compuesta function [valorI]=trapecio(fun,a,b,n) h=(b-a)/n; s=0; for i=1:n-1 x=a+i*h s=s+h*eval(fun); end x=a fa= eval(fun) x=b fb= eval(fun) s=s+(h/2.)*(fa+fb); valorI=s; return B D % Programa para implementar la formula % del trapecio compuesta function [valorI]=trapecio(fun,a,b,n) % fun: funcion que se quiere integrar % a: limite inferior de la integral % b: limite superior de la integral % n: numero de subdivisiones h=(b-a)/n; s=0; for i=1:n-1 s=s+h*eval(fun); end fa= eval(fun) fb= eval(fun) s=s+(h/2.)*(fa+fb); return Ninguna de las anteriores Pregunta 7. Dado el siguiente algoritmo, en el que se conoce la matriz A de dimensión (m,n): Elegir la respuesta que escriba el resultado que se obtendría de aplicar dicho programa a la matriz: 2 A 3 0 5 2 9 3 1 7 2 0 4 1 6 4 1 A C A 0 0 0 0 2 0 0 0 8 0 0 0 4 5 0 0 6 2 0 0 3 1 7 0 4 0 12 0 A 2 0 B 6 1 D A 4 0 0 0 8 10 0 0 6 2 14 0 4 0 Ninguno de los anteriores 12 2 Pregunta 8. Indicar cual sería la variable de salida devuelta por el algoritmo descrito para las siguientes variables de entrada: V=[1 0 -2]; W=[3 -5 1 4]. INICIO V, W m=length(V) n=length(W) i=1,m j=1,n SI NO V(i)*W(j)<0 A(i,j) = -1 A(i,j) = 1 Escribir C FIN A C 1 A 1 1 1 1 1 1 A 1 1 1 1 1 1 1 1 B 1 1 1 1 1 1 1 1 1 D A 1 1 1 1 1 1 1 1 1 1 1 Ninguna de las anteriores. 1 Pregunta 9. Elegir, entre las siguientes opciones, el programa de Matlab que calcula la 1 n 2 xi x donde xi={x1, x2, …, xn} es la muestra de varianza muestral, S 2 n 1i 1 n 1 xi . Datos de entrada: xi ; Datos de salida: S2. tamaño n y x n i1 A C x=input(‘Dame la muestra’); n=length(x); S2=0; for i=1:n S2=S2+(x(i)-x(i)/n)^2; end disp(‘La varianza muestral es: ’); S2 x=input(‘Dame la muestra’); n=length(x); S2=0; Xmed= x(i)/n; for i=1:n S2=S2+(x(i)-Xmed)^2; end disp(‘La varianza muestral es: ’); S2 B D x=input(‘Dame la muestra’); n=length(x); S2=0; Xmed=0; for i=1:n Xmed=Xmed+x(i)/n; S2=S2+(x(i)-Xmed)^2; end disp(‘La varianza muestral es: ’); S2 Ninguna de las anteriores. Pregunta 10. Completa las líneas de programa MATLAB que faltan (señaladas con corchetes), eligiendo entre las 4 opciones posibles: edad=input(‘Dime la muestra’); sexo=input(‘Dime tu sexo (H/M)’); %donde H->hombre y M->mujer disp(‘Eres una mujer mayor de edad’); disp(‘Eres un hombre mayor de edad’); disp(‘Eres menor de edad’); end A C if (edad>=18)&(sexo= =’M’) elseif (edad>=18)&(sexo= =’H’) else if (edad>=18) (sexo= =’M’) elseif (edad>=18) (sexo= =’H’) elseif (edad<18) B D if (edad>=18)|(sexo= =’M’) elseif (edad>=18)|(sexo= =’H’) else Ninguna de las anteriores. Pregunta 11. La siguiente función: function [control] = intervalo(x) control=0; if x>0 | x<-2 control=1; elseif x>-1 control=2; else control=3; end end devuelve un valor de control según el intervalo al que pertenezca x. ¿Cuándo nos devolverá un valor de control=2? (elegir una opción): A C Cuando x está entre -2 y 0. Cuando x es mayor que 0. B D Cuando x está entre -1 y 0. Para todo valor de x, ya condiciones son incompatibles. que las Pregunta 12. La implementación en Matlab del siguiente algoritmo es: A C x=input(‘valor de X=’) b=x if b<>(x/b) b=1/2*((x/b)+b) end disp(b) x=input(‘valor de X=’) b=x while b<>(x/b) b=1/2*((x/b)+b) end disp(b) B D x=input(‘valor de X=’) b=x if b==(x/b) b=1/2*((x/b)+b) end disp(b) Ninguna de las anteriores Pregunta 14. ¿Que escribe en pantalla como Ac el siguiente algoritmo si a N se le asigna 3 y a P se le asigna el valor 4?: Inicio N, P AC = 1 I=1 no I<P si AC AC = AC * N I=I+1 final A C 81 9 B D 27 Ninguna de las anteriores Pregunta 14. El siguiente algoritmo calcula la sucesión de Fibonacci, se pide indicar que escribe en pantalla como F2, si asignamos a N el valor 9: Inicio N cont = N-3 F1 = 1 F2 = 1 F1 no cont >= 0 si F2 F2 = F2 + F1 F1 = F2 – F1 cont = cont - 1 final A C 21 34 B D 13 Ninguna de las anteriores