Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
er
Examen 1 Convocatoria. Informtica. 1 curso Grado en Ingeniera Aeroespacial
11 de Junio de 2013
NOMBRE:
N MATRCULA/D.N.I.:
APELLIDOS:
Escriba las respuestas en los recuadros indicados. Entregue todas las hojas con su nombre y apellidos.
CUESTIN 1 (3 Puntos)
CUESTIONES CORTAS
a) Suponiendo una cadena de texto almacenada en el vector cad, complete las lneas de cdigo
necesarias para que la cadena cad tenga todas sus letras maysculas. Los smbolos que no sean letras
minsculas permanecern inalterados.
cad=input(Introduzca texto,s);
L=length(cad);
for i=1:L
if cad(i)>='a' && cad(i)<='z'
cad(i)=cad(i)+'A'-'a';
end
end
b) Escriba la funcin redondea_par que reciba un nmero real positivo y devuelva el valor del
nmero entero par ms prximo. Por ejemplo, para el valor 3.2 devolver 4, para 2.8 devolver 2.
Puede usar la funcin fix de MATLAB que devuelve la parte entera de un nmero real.
function y=redondea_par(x)
parmenor=2*fix(x/2);
if x-parmenor<parmenor+2-x
y=parmenor;
else
y=parmenor+2;
end
end
c) Plantee las iteraciones necesarias para escribir un programa en MATLAB que muestre por pantalla la
figura de asteriscos de la derecha.
*******
*****
***
*
for i=1:4
for j=1:7
if j<i || j>7-i+1
fprintf(' ');
else
fprintf('*');
end
end
fprintf('\n');
end
function serie
i=1;
v=[];
flag=1;
while(flag)
v(i)=f(i);
i=i+1;
flag=(i<10);
end
disp(v);
end
function x=f(y)
persistent aux
if isempty(aux)
aux=1;
else
aux=mod(aux+1,2);
end
x=y*aux;
end
Hoja 1/3
APELLIDOS:
Escriba las respuestas en los recuadros indicados. Entregue todas las hojas con su nombre y apellidos.
L
y
H
dv
= g - vv
v(0) = 0
dt
m
Segunda fase : Si y (t ) L
dy
=v
dt
k
dv
= g - e (y - L) - v v
dt
m
m
y (t t+ ) = L
v(t t+ ) = v(t t )
Donde y(t) y v(t) representan respectivamente la altura descendida en el salto y la velocidad en el instante t,
g=9.81m/s2 es la aceleracin de la gravedad, ke=150 N/m es la constante elstica de la cuerda y =15 Kg/m es la
constante de friccin aerodinmica del aire. Las condiciones iniciales de la segunda fase reflejan el hecho de que la
altura y(t) y la velocidad v(t) en el comienzo de la segunda fase son las del final de la primera fase. Se pide:
1. Empleando el mtodo de Euler de integracin de EDOs, desarrolle la funcin prueba_salto que integre las
ecuaciones diferenciales del problema desde el instante t=0 hasta el instante en que la variable y(t)
permanezca en la franja [ye-1,ye+1] durante ms de tres segundos, donde ye=L+m*g/ke es el punto de
equilibrio que se alcanza una vez las oscilaciones de la cuerda se amortiguan. La funcin devolver los
vectores de tiempo, t, de posicin y, y de velocidad v.
Nota: La integracin comenzar siempre con las ecuaciones de la primera fase, y debern cambiar a las de
segunda fase cuando y(t)>=L. Es posible tambin que se vuelva de nuevo a primera fase si y(t)<L en algn
momento. Tome como paso de integracin h=0.1 seg.
function [t,y,v]=prueba_salto()
m=70; %(Kg) Masa del saltador
L=20; %(m) Longitud de la cuerda
H=50; %(m) Altura del puente
g=9.81; %(m/s^2) Aceleracin de la gravedad
ke=150; %( N/m ) Constante elstica de la cuerda
ro=15; %(Kg/m) constante de friccin aerodinmica del aire
h=0.1; % (seg) Paso de integracin
% Condiciones iniciales
y(1)=0;
v(1)=0;
t(1)=0;
fin=0;
k=1;
ye=L+m*g/ke
Hoja 2/3
APELLIDOS:
Escriba las respuestas en los recuadros indicados. Entregue todas las hojas con su nombre y apellidos.
while(~fin)
%Actualizacin de variables
y(k+1)=y(k)+h*(v(k));
if y(k)<=L % Tramo 1
v(k+1)=v(k)+h*(g-ro*v(k)*vabs(v(k))/m);
else % Tramo 2
v(k+1)=v(k)+h*(g-ke*(y(k)-L)/m-ro*v(k)*vabs(v(k))/m);
end
t(k+1)=t(k)+h;
% Deteccin de fin
if(y(k)<ye-1 || y(k)>ye+1) % Si nos salimos de la franja, reseteamos kf
kf=k;
end
if (k-kf)*h>=3 % Si hace ms de 3 seg que no nos salimos de la franja
fin=1;
end
k=k+1;
end
end
Hoja 3/3
APELLIDOS:
Escriba las respuestas en los recuadros indicados. Entregue todas las hojas con su nombre y apellidos.
v=[];
cont=1;
for i=n:n*n
if esprimo(i)
v(cont)=i;
cont=cont+1;
end
end
end
function r=esprimo(n)
r=1;
if n>1
d=2;
while mod(n,d)~=0 && d*d<n && r==1
d=d+1;
end
if d*d<=n
r=0;
end
end
end
Hoja 4/3
APELLIDOS:
Escriba las respuestas en los recuadros indicados. Entregue todas las hojas con su nombre y apellidos.
fid=fopen(nombre,'wt');
if(fid<0)
disp('Error de apertura del fichero');
else
for i=2:20
v=legendre(i);
fprintf(fid,'Primos entre n=%d y %d ->',i*i,(i+1)*(i+1));
for j=1:length(v)-1
fprintf(fid,'%d, ',v(j));
end
fprintf(fid,'%d\n\n',v(length(v)));
end
fclose(fid);
end
end
Hoja 5/3