Vous êtes sur la page 1sur 23

Nombres y Apellidos:

Jorge A. Trujillo Lecca


Cdigo:
141825G
Curso:
Fsica
Computacional I
Tema:
Programacin en
Matlab
Profesor:
Jaime Sotero Solis
Ejercicios
1) Calcule las siguientes expresiones a mano, sin utilizar
MATLAB. Utilice luego MATLAB para comprobar que el
resultado es correcto.
a) 5<=8-3
b) 7< 3-1+6>2
c) (7<3)-1+(6>2)
20
d) 2x4+5==7+ 4

Solucin.
a) 5 <= 8-3.
5 <= 5.
Usando Matlab:
n = input (Ingrese primer valor);
m = input (Ingrese segundo valor);
if ( n <= m )
disp (1)
else
disp (0)
end ....Rspta

b) 7<31+6> 2
7<8>2
Usando Matlab:
Y = 7<31+6>2
Y = 01+1
Y=0 ....Rspta

c) (7<3)-1+(6>2)
Usando Matlab:
Y = (7<3)-1+(6>2)
Y = 01+1
Y=0 ....Rspta

20
d) 2*4+5 == 7+ 4
13 == 12
Usando Matlab:
g = input (Ingrese primer valor);
h = input (Ingrese segundo valor);
if ( g >= h )
disp (0)
else
disp (1)
end ....Rspta

2) Sean a=10 y b=6. Calcule las siguientes expresiones a


mano, sin utilizar MATLAB. Utilice el MATLAB para
comprobar que el resultado es correcto.
Solucin.
a) a >= b
10 >= 6
Usando Matlab:
a = input (Ingrese primer valor);
b = input (Ingrese segundo valor);
if ( a >= b )
disp (1)
else
disp (0)
end ....Rspta

b
b) a - b <= 2
6
10 6 <= 2
4 <= 3
Usando Matlab:
h = input (Ingrese primer valor);
w = input (Ingrese segundo valor);
if ( h <= w )
disp (0)
else
disp (1)
end ....Rspta

b
c) a - (b <= 2 )
6
10 - (6 <= 2 )
10 (6 <= 3)
Usando Matlab:
6
Y = 10 (6 <= 2 )
Y = 10 (6 <= 3)
Y = 10 0
Y = 10 ....Rspta

3) Sean:
V = [4 -2 -1 5 0 1 -3 8 2]
W = [0 2 1 -1 0 -2 4 3 2]
Calcule las siguientes expresiones a mano, sin utilizar
MATLAB. Utilice luego MATLAB para comprobar que el
resultado es correcto.
a) V>=W
b) W =V
Solucin.
a) V >= W
[4 -2 -1 5 0 1 -3 8 2] >= [0 2 1 -1 0 -2 4 3 2]
Usando Matlab:
V = input (Primer vector: );
W = input (Segundo vector: );
S = (V >= W)
S= [1 0 0 1 1 1 0 1 1].Rspta

b) W =V
[0 2 1 -1 0 -2 4 3 2] = [4 -2 -1 5 0 1 -3 8 2]
Usando Matlab:
W = input (Primer vector: );
V = input (Segundo vector: );
R = (W = V)
R= [1 1 1 1 0 1 1 1 0].Rspta
4) A partir de los vectores V y W del ejercicio anterior,
utilice los operadores relacionales para crear un vector
compuesto por los elementos de W que son mayores que
los elementos de V.
Solucin.
V = [4 -2 -1 5 0 1 -3 8 2]
W = [0 2 1 -1 0 -2 4 3 2]
Usando Matlab:
W = input (Primer vector: );
V = input (Segundo vector: );
T= (W >= V)
T= [0 1 1 0 1 0 1 01]....Rspta

5) Calcule las siguientes expresiones a mano, sin utilizar


MATLAB. Luego utilice MATLAB para comprobar que el
resultado es correcto.
a) 5 -2
b) 8-2I6+5 2
c) [4 0]+8* (4I0)
Solucin.
a) 5 -2
Usando Matlab:
a = input (Ingrese primer valor: );
b = input (Ingrese el segundo valor: );
if ( a -b )
disp (0)
else
disp (1)
end ....Rspta
b) 8-2I6+5 2
Usando Matlab:
N = 8 - 2I6 + 5 2
N=81+5 0
N=7+0
N=7 ....Rspta

c) [4 0]+8* (4I0)
Usando Matlab:
J= [4 0]+8* (4I0)
J= 0+8* 0
J = 0+8*0
J=0 ....Rspta

6) La temperatura mxima diaria (en ) en Nueva York y


Anchorage, Alaska, durante el mes de enero de 2001
vienen en los siguientes vectores (datos tomados del
Ministerio Nacional de Meteorologa y Oceanografa de
E.E.U.U).
TNY= [31 26 30 33 33 39 41 41 34 33 45 42 36 39 37 45 43
36 41 37 32 32 35 42 38 33 40 37 36 51 50]
TANC= [37 24 28 25 21 28 46 37 36 20 24 31 34 40 43 36
34 41 42 35 38 36 35 33 42 42 37 26 20 25 31]
Escriba un programa SCRIPT que calcule:
a) La temperatura media en ese mes para cada ciudad.
b) El nmero de das que estuvo la temperatura de cada
ciudad por debajo de la media.
c) El nmero de das, y a que das del mes corresponden, en
los cuales la temperatura de Anchorage fue mayor que la
temperatura de Nueva York.
d) El nmero de das, y a que das del mes corresponden, en
los cuales la temperatura de Anchorage fue igual que la
temperatura de Nueva York.
e) El nmero de das, y a que das del mes corresponden, en
los cuales la temperatura de ambas ciudades se mantuvo
por encima de 32 (sin helar).
Solucin.

a) Es la siguiente:
n=input (El vector temperatura: );
if (n>0)
r=mean(n)
end
La temperatura media para N.Y, es: 37.67.
La temperatura media para ANC, es: 33.12.

b) Es la siguiente:
m = input (El vector temperatura: );
R= sum (m<37.67)
El nmero de das para N.Y, es: 17.
El nmero de das para ANC, es: 11.

c) Es la siguiente:
c.1) Para el nmero de das:
m = input (Temperatura de Anchorage: );
n = input (Temperatura de Nueva York: );
R = sum (m>n)
El nmero de das es: 11.
c.2) Fechas de los das:
m = input (Temperatura de Anchorage: );
n = input (Temperatura de Nueva York: );
F = find (m>n)
Las fechas son: 1 7 9 14 15 18 21 22 25 26.
d) Es la siguiente:

d.1) Para el nmero de das:


m = input (Temperatura de Anchorage: );
n = input (Temperatura de Nueva York: );
T= sum (m==n)
El nmero de das es: 1.

d.2) Fechas de los das:


m = input (Temperatura de Anchorage: );
n = input (Temperatura de Nueva York: );
Z = find (m==n)
Las fechas son: 23.

e) Es la siguiente:
e.1) Para el nmero de das:
m = input (Un vector: );
W= sum (m>32)

e.2) Fechas de los das:


m = input (El vector temperatura: );
P = find (m>32)
Para N.Y:
Numero de das: 26
Fechas son: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
23 24 25 26 27 28 29 30 31.
Para ANC:
Nmero de das: 19
Fechas son: 1 7 8 9 13 14 15 16 17 18 19 20 21 22 23 24 25
26 27.

7) Represente la siguiente funcin de dos formas distintas:

x+2
4 e -6 <= x
<= -2

f(x)= x2 -2<= x
<=2.5
1
( x+ 6.5) 3 2.5<= x
<=6

a) Escribiendo un fichero SCRIPT que utilice bucles y


sentencias condicionales.
b) Cuando una funcin f(x) para utilizarla posteriormente en
un fichero SCRIPT.
Solucin.
a) Es la siguiente:
If -6<=x<=2;
c = 4*exp(x+2)
elseif -2<=x<=2.5;
d = x^2
else 2.5<=x<=6;
f = (x+6.5) ^ (1/3)
end

8) Escriba un programa SCRIPT que calcule las races reales


2
de una funcin cuadrtica a x + bx + c = 0. Llame al
fichero raicescuad. Cuando el fichero se ejecute, este
debe pedir al usuario que introduzca los valores de las
constantes a, b y c. Para calcular las races de la
ecuacin, el programa calculara el discriminante D:
2
D= b 4ac
Si D>0, el programa visualizara un mensaje del tipo: La
ecuacin tiene dos races, y los valores de las races se
visualizaran en la lnea siguiente.
Si D=0, el programa visualizara un mensaje del tipo: La
ecuacin tiene una raz, y los valores de la raz se
visualizaran en la lnea siguiente.
Si D<0, el programa visualizara un mensaje del tipo La
ecuacin no tiene races reales.
Ejecute el fichero SCRIPT en la ventana de comando tres
veces para calcular las soluciones de las siguientes
ecuaciones:
2
a) 2 x + 8x -3 = 0
2
b) 15 x + 10x + 5 = 0
2
c) 18 x + 12x + 2 = 0

Solucin.
a = input (Introduzca el valor de a: );
b = input (Introduzca el valor de b: );
c = input (Introduzca el valor de c: );
if a==0
if b==0
disp (La ecuacin no existe)
else
y1 = (-1*c)/b;
disp (La raz de la ecuacin lineal es:)
disp (y1)
end
else
dis = b^2 4*a*c;
if dis<0
y2 = (-1*b + dis^ (1/2)) / (2*a);
y3 = (-1*b - dis^ (1/2)) / (2*a);
disp (La ecuacin no tiene races reales)
disp (y2)
disp (y3)
elseif dis==0
y4 = (-1*b) / (2*a);
disp (La ecuacin tiene un raz)
disp (y4)
else
y5 = (-1*b + dis^ (1/2)) / (2*a);
y6 = (-1*b - dis^ (1/2)) / (2*a);
disp (La ecuacin tiene dos races)
disp (y5)
disp (y6)
end
end ....Rspta

Para:
2
a) 2 x + 8x -3 = 0
La ecuacin tiene dos races.
2
b) 15 x + 10x + 5 = 0

La ecuacin no tiene races reales.


2
c) 18 x + 12x + 2 = 0

La ecuacin tiene una raz.

9) Utilice bucles para crear una matriz A de dimensin 4x7,


en la cual el valor de cada elemento sea la suma de sus
ndices (el nmero de la fila y el nmero de la columna
de cada elemento). Por ejemplo, el valor del elemento A
(2,5) ser 7.
Solucin.
for x= 1:4
for y= 1:7
A(x,y) = x+y
end
end ....Rspta

10) Utilice bucles y sentencias condicionales para crear


una matriz de dimensin 5x8, en la cual el valor de cada
elemento sea igual a la raz cuadrada de la suma de los
ndices de cada elemento, siempre que el elemento no se
encuentre en una columna o fila par. El valor de un
elemento que este en una fila o columna par ser igual a
la suma del cuadrado de los ndices. (Los ndices de un
elemento de una matriz son el nmero de fila y el
nmero de columna que le corresponden.)
Solucin.
for x= 1:4
for y= 1:7
A(x,y) = sqrt(x+y)
end
end ....Rspta

11) Escriba un programa (utilizando un bucle) que calcule


la suma de los m primeros trminos de la serie:

m
1
(1)n 2 n+1 (n=0, 1,2,., m)
n=0


Esta serie se denomina serie de Leibniz, y converge a 4 .
Ejecute el programa para m=10 y m=500. Compare

posteriormente estos resultados con el valor exacto 4 .

Solucin.
m = input (Introduzca el nmero de trminos: );
T=0
for n=0:n
T = T + (-1) ^n*(1/((2*n)+1));
end
fprintf (El valor (suma) de la serie es: %f,T) ....Rspta

12) Sea el vector X = [15 -6 0 8 -2 5 4 -10 0.5 3]. Escriba


un programa que utilice sentencias condicionales y
bucles para calcular la suma de los elementos positivos
del vector X.
Solucin.
Usando Matlab:
n = input (Un vector: );
count = 0;
for k = 1:lenght(n)
if n(k) >= 0
count = count + 1;
end
end
disp (count) ....Rspta

13) Escriba un programa SCRIPT que encuentre el menor


nmero entero impar que sea divisible por 3, y cuyo cubo
sea mayor que 4000. Utilice un bucle que comience en 1
y se detenga cuando encuentre el nmero que cumpla
las condiciones anteriores. Finalmente el programa
visualizara el mensaje: El nmero pedido es: , y
visualizara seguidamente el numero calculado.
Solucin.
V= [1 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48]
n= length (V);
for k= 1:3:48
if V(k)>0 [rem V(k);3]==0
J V (k)=1*V (k);
else if V(k)>0 V(k)>4000
V(k) = V(k)^3;
break;
end
end

14) Escriba una funcin que ordene los elementos de un


vector de cualquier longitud, de mayor a menor. Utilice la
siguiente lnea de definicin de funcin: Y = ordenar(x).
La entrada de la funcin ser un vector x de cualquier
longitud, y la salida Y ser un vector que contendr los
elementos de x en orden descendente. No se puede
utilizar la funcin predefinida de MATLAB sort para este
ejercicio. Cree su propia funcin y prubela con un vector
de 14 elementos (enteros) generados aleatoriamente y
distribuidos entre -30 y 30. Utilice la funcin rand de
MATLAB para generar el vector inicial.
Solucin.
%%%% Y = ordenar(x) %%%%

n= input ('Ingrese nmero de elementos del vector: n = ');


a= input ('Ingrese lmite inferior del intervalo: a= ');
b= input ('Ingrese lmite superior del intervalo: b= ');

if b>a
x = randi ([a b],1,n);
y = x;
end
for i=1:n
for j=1:n-1
if y(j)<y(j+1)
aux=y(j);
y (j)=y(j+1);
y (j+1)=aux;
end
end
end
disp('Vector ordenado decrecientemente: ')
y

15) Escriba una funcin que ordene los elementos de una


matriz. Utilice la siguiente lnea de definicin de funcin:
B = ordenarmatriz(A), donde A ser una matriz de
cualquier tamao, y B ser otra matriz del mismo tamao
de los elementos de A ordenados de manera ascendente,
fila por fila. De esta forma, los elementos B (1,1) y B (m,
n) serian, respectivamente, los elementos menor y
mayor de la matriz ordenada. Pruebe posteriormente
esta funcin en una matriz de dimensin 4x7, con
nmeros enteros generados aleatoriamente y
distribuidos entre -30 y 30. Utilice la funcin rand de
MATLAB para general la matriz inicial.
Solucin.
% B = ordenarmatriz(A)

m= input('Ingrese nmero de filas de la matriz: m = ');


n= input('Ingrese nmero de columnas de la matriz: n= ');
a= input('Ingrese lmite inferior del intervalo: a= ');
b= input('Ingrese lmite superior del intervalo: b= ');

if b>a
A = randi ([a b], m, n);
B = A;
end
for k=1:n
for i=1:m
for j=1:n-1
if B(i,j)>=B(i,j+1)
aux=B(i,j);
B (i,j)=B(i,j+1);
B (i,j+1)=aux;
end
end
end
end
disp('Matriz ordenada ascendentemente: ')
B

16) Escriba un programa (fichero SCRIPT) que calcule el


coste de enviar un paquete en funcin de la siguiente
tabla de precios:
El programa debe pedir al usuario que introduzca el peso y
el tipo de servicio. Seguidamente, el programa visualizara
el coste de servicio. Si se introduce un paquete que pese
ms de 50 libras para un servicio de aire o tierra, el
programa visualizara un mensaje del tipo: No se realiza
reparto por aire o tierra para paquetes con peso superior a
50 libras. Si se introduce el peso de un paquete que supera
las 10 libras de peso para un servicio nocturno, el programa
visualizara un mensaje del tipo: No se realizan entregas
nocturnas para paquetes que pesen ms de 10 libras.
Ejecute el programa e introduzca los valores de 0.5, 6.3, 20
y 50.4 libras para servicios de tierra y aire, as como 2, 8,1
y 13 libras para el servicio de reparto nocturno.
Solucin.

17) Sea el vector x = [1:50]. Escriba un programa en un


fichero SCRIPT que borre del vector x aquellos elementos
que son divisibles por 3,4 o 5. Al final el programa debe
mostrar el vector resultante.
Solucin.
x = [1:50];
for k=1:50

v=mod(x,3)==0;
pos=find(v);
x(pos)=[];
w=mod(x,4)==0;
pos=find(w);
x(pos)=[];

r=mod(x,5)==0;
pos=find(r);
x(pos)=[]
break

end

18) Escriba una funcin MATLAB que calcule las


coordenadas polares de un punto correspondiente a un
sistema de coordenadas cartesianas, en un plano de dos
dimensiones. Utilice la siguiente lnea de definicin de
funcin para ello: [theta radio] = cartesianoAPolar (x, y).
Los argumentos de entrada sern las coordenadas
cartesianas x e y del punto, y los argumentos de salida
sern el ngulo y la distancia radial (radio) al punto
de cuestin. El ngulo vendr dado en grados, y su
medida ser relativa al eje x positivo, de tal forma que
sea un nmero positivo en los cuadrantes I, II y III, y un
nmero negativo en el cuadrante IV. Utilice
posteriormente esta funcin para calcular las
coordenadas polares de los puntos: (15,3), (-7,12), (-17,-
9) y (10,-6.5).
Solucin.
x= input ('Ingrese coordenada x: x = ');
y= input ('Ingrese coordenada y: y = ');
r=(x^2 + y^2) ^ (0.5)

if x>0 & y>0


theta=acos(x/r)*(180/pi)
break
end
if x<0 & y>0
theta=acos(x/r)*(180/pi)
break
end
if x<0 & y<0
theta=180+atan (y/x)*(180/pi)
break
end
if x>0 & y<0
theta=-acos(x/r)*(180/pi)
break
end
a) (15, 3) b) (-7, 12) c) (-17,-9)
d) (10,-6.5)
r =15.2971 r=13.8924 r=19.2354
r=11.9269
theta =11.3099 theta=120.2564 theta=207.8973
theta= -33.0239

19) Un depsito de gasleo tiene la forma de un cilindro


vertical rematado por sus dos extremos hemisfricos, tal
y como se muestra en la figura adjunta. El radio del
cilindro y los hemisferios es r=40 cm, y la longitud de la
parte cilndrica es 1.2 metros. Escriba una funcin
(definida de la forma: V= Vtanque (h)) que calcule el
volumen del depsito en funcin de la altura h. Utilice
posteriormente la funcin para representar un grfico del
volumen en funcin de la altura, para 0<= h <=2
metros.
Solucin.

a) r=0.4;

h=1.2;

V=pi*(r^2)*h

V = 0.6032

b) h=0:0.001:2;
r=0.4;
V=pi*(r^2)*h;
plot(h,V,'g')

20) La velocidad, en funcin del tiempo, de una partcula


que se mueve a lo largo de una lnea recta, se representa
en el grfico adjunto y viene dada por las siguientes
ecuaciones:
1.4t
0 t 10s


14+5sen ( 10 (t-10)) 10 t
25s
V(x)
9 25 t
35s

9
9 - 5 (t-35) 35

t 40s

Escriba dos funciones MATLAB: una de ellas debe calcular


la velocidad de la partcula en un instante t (utilice la
siguiente definicin de funcin: v= velocidad (t)), y la
otra funcin deber calcular la aceleracin de la partcula
tambin en el instante t (utilice para ello la siguiente
definicin de funcin: a= aceleracin (t)). Escriba
posteriormente un programa, en un fichero SCRIPT, que
represente las grficas de la velocidad y aceleracin, en
funcin del tiempo, de una partcula en movimiento (las
dos graficas deben aparecer en la misma ventana
grafica). Para ello, dentro del fichero SCRIPT, cree
primero un vector t, para 0 t 40 segundos, y
despus utilice las funciones velocidad y aceleracin
para crear los vectores v y a, que se utilizaran para
generar la representacin grfica.
Solucin.

21) Una bscula se compone de una bandeja sujeta a una


serie de muelles, tal y como se muestra en la figura
adjunta. Cuando se sita un objeto en la bandeja, esta se
mueve hacia debajo de forma que el peso del objeto se
puede calcular a partir del desplazamiento de la bandeja.
Inicialmente, solo los dos muelles exteriores soportan el
peso. Sin embargo, si el objeto es lo suficientemente
pesado, la bandeja har contacto con el tercer muelle
situado justo entre los dos exteriores.

K1=800 N/m,
K2=1700 N/m, d=20mm.
Escriba una funcin que calcule el peso W de un objeto
en funcin del desplazamiento x de la bandeja en la
bscula. Utilice la siguiente definicin para dicha funcin:
W = bascula(x).
a) Utilice posteriormente esta funcin en la ventana de
comandos para calcular el peso de dos objetos que
producen un desplazamiento de la bandeja de 1.5 y
3.1 cm.
b) Escriba un programa SCRIPT que represente
grficamente el peso en funcin del desplazamiento x,
para 0 x 4 cm.
Solucin.