Sie sind auf Seite 1von 17

FACULTAD DE CIENCIAS FSICAS Y MATEMTICAS

ESCUELA PROFESIONAL DE FISICA

EJERCICIOS DE PROGRAMACIN

CURSO : FISICA COMPUTACIONAL I

DOCENTE : SOTERO SOLIS JAIME

ALUMNO : CAMPOS BOCANEGRA ARNOL

CICLO : 2016 - II

FECHA DE ENTREGA : 24 / 01 / 2017

Lambayeque Per 2017


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) Y=7< 3-1+6>2
c) Y=(7<3)-1+(6>2)

d) Y=2x4+5==7+

Solucin:
a) 5<=8-3. b) Y=7<3-1+6>2
5<=5 Y= 7<8>2
R= 5<=5 Y= 1>2
R= 1 Y= 0


c) Y= (7<3)-1+(6>2) d) Y= 2*4+5==7+
Y= 0-1+1 Y= 8+5==7+5
Y= 0 Y= 13==12
Y= 0
2) Sean a=10 y b=6. Calcule las siguientes expresiones a mano, sin
utilizar MATLAB. Utilice luego MATLAB para comprobar que el
resultado es correcto.
Solucin:
b b
a) Y= a>=b b) Y= a-b<= c) Y=a-(b<= )
2 2
6 6
Y= 10>=6 Y= 10-6<= Y= 10-(6<= )
2 2
Y= 1 Y= 4<=3 Y= 10-(0)
Y= 0 Y= 10

3) Sean: V = [4 -2 -1 5 0 1 -3 8 2] y 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.
b) V>=W
c) W~=V
Solucin:
d) V>=W
S= V>=W
S= [1 0 0 1 1 1 0 1 1]

e) W~=V
R= W~=V
R= [1 1 1 1 0 1 1 1 0]

4) A partir de los vectores V y W del ejercicio anterior, utilice


operadores relacionales para crear un vector compuesto por los
elementos de W que sean mayores que los elementos de V.
1) Solucin:
2) V = [4 -2 -1 5 0 1 -3 8 2]
3) W = [0 2 1 -1 0 -2 4 3 2]
4) T= W>=V
5) T= [0 1 1 0 1 0 1 01]

5) Calcule las siguientes expresiones a mano, sin utilizar MATLAB.


Utilice luego 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 b) 8-2I6+5&~2 c) ~[4&0]+8*~ (4I0)
ans= 1 ans=1 ans=1

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


Alaska, durante el mes de enero de 2001 vienen dadas en los
siguientes vectores (datos tomados del Ministerio Nacional
Meteorologa y Oceanografa de Estados Unidos).
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 fue igual en ambas ciudades.
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) Temperatura media para:
6) Nueva York: 2) Anchorage:
7) T1m= sum(TNY)/31 T2m= sum(TANC)/31
8) T1m= 37.6774 T2m= 33.129

b) Nmero de das que la temperatura estuvo por debajo de la media:


9) Para Nueva York:
10) Tdm = TNY<T1m
11) NdiasTdm = length(Tdm)
12) NdiasTdm = 17
13) Para Anchorage:
14) TAdm = TANC<33.13
15) NdiasTAdm = sum (TAdm)
16) NdiasTAdm = 13
c) TANC>TNY:
17) Para los das: 2) Para las fechas:
18) Xdias= sum (TANC>TNY) FechasX = find
(TANC>TNY)
19) Xdias= 11 FechasX = 1 7 9 14 15 18 19
21 22 25 26

d) TANC==TNY:
20) Para los das: 2) Para las fechas:
Idias= sum (TANC==TNY) FechasI = find (TANC==TNY)
Idias= 1 FechasI = 23

e) T>32
Para Nueva York:
TNYenc = T>32;
EdiasTNYenc = sum (TNYenc)
EdiasTNYenc = 26
FechasTNYenc= find (TNYenc)
FechasTNYenc= 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 Anchorage:
TANCenc = W>32;
EdiasTANCenc = sum (TANCenc)
EdiasTANCenc = 19
FechasTANCenc= find (TANCenc)
FechasTANCenc= 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:

4 +2 -6 <= x <= -2
F(x)= 2 -2 <= x <= 2.5
1
( + 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)

for x=-6:0.5:-2
y1 = 4*exp(1)^(x+2);
fprintf('%10f %10f\n',x,y1)
end

for x=-1.5:0.5:2.5
y2 = x^2;
fprintf('%10f %10f\n',x,y2)
end

for x=3:0.5:6
y3 = (x+6.5)^(1/3);
fprintf('%10f %10f\n',x,y3)
end

c) Escriba un programa script que calcule las races reales de una


funcin cuadrtica a + bx + c = 0. Llame al fichero raicescuad.
Cuando el fichero se ejecute, ste debe pedir al usuario que
introduzca los valores de las constantes a, b y c. Para calcular las
races de la ecuacin, el programa calcular el discriminante D:
d) D= 4ac
Si D>0, el programa visualizar un mensaje del tipo: La ecuacin
tiene dos races, y los valores de las races se visualizarn en la
lnea siguiente.
Si D=0, el programa visualizar un mensaje del tipo: La ecuacin
tiene una raz, y los valores de la raz se visualizarn 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 Comandos tres veces para
calcular las soluciones de las siguientes ecuaciones:
a) 2 2 + 8x -3 = 0
b) 15 2 + 10x + 5 = 0
c) 18 2 + 12x + 2 = 0

Solucin:

clear
clc
disp('RACES REALES DE UNA FUNCIN CUADRTICA')
a= input ('Ingrese 1ra constante: a = ');
b= input ('Ingrese 2da constante: b = ');
c= input ('Ingrese 3ra constante: c = ');
D= b^2 - 4*a*c;
if D>0
x1 = (-b + D^(0.5))/(2*a);
x2 = (-b - D^(0.5))/(2*a);
disp('La ecuacin tiene dos races')
fprintf('%10f %10f\n',x1,x2)
elseif D==0
x3 = (-b)/(2*a);
fprintf('La ecuacin tiene una raz')
fprintf('%10f',x3)
else
disp('La ecuacin no tiene races reales')
end

a) La ecuacin tiene dos races


0.345208 -4.345208

b) La ecuacin no tiene races reales


c) La ecuacin tiene una raz -0.333333
8) 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:
clc
n=4;
m=7;
A=[];
for k=1:n
for h=1:m

A(k,h) = k+h;

end
end
A
9) 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 est 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
clc
n=5;
m=8;
A=[];
for k=1:n
for h=1:m
w=mod(k,2)==0;
v=mod(h,2)==0;
if w|v
A(k,h) = k^2 + h^2;
else
A(k,h) = (k+h)^(0.5);
end
end
end

10) Escriba un programa (utilizando un bucle) que calcule la suma


de los m primeros trminos de la serie:


() , ( = , , , . , )
+
=

Esta serie se denomina serie de Leibniz, y converge a . Ejecute el


programa para m=10 y m=500. Compare posteriormente estos
resultados con el valor exacto .
Solucin:
clear
clc
disp('Serie de Leibniz para aproximar a pi cuartos')
m= input('Ingrese limite superior de la serie: m = ');
S=0;

for h=0:m

A = ((-1)^h)*(1/(2*h+1));

S=S+A;

end

x=S
fprintf('x')

a) Para m = 10 b) Para m = 500 c) Para m=infinity



S = 0.8081 S = 0.7859 S = = 0.78539816
4

11) 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:
clc
X = [15 -6 0 8 -2 5 4 -10 0.5 3];
positivos = find(X>0);
if positivos>0
A = X(positivos);
S = sum(A)
end

12) 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 visualizar el mensaje: El nmero pedido
es: , y visualizar seguidamente el nmero calculado.
Solucin:

clear
clc
n=25;
A=(1:30);

for k=1:n
w=mod(A(k),2)==1;
v=mod(A(k),3)==0;
if w&v
B = [A(k).^3];
while B>4000
X= B(1)^(1/3);
break
end
end
end
disp('El numero pedido es: ')
X

13) 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 numero de elementos del vector: n = ');


a= input('Ingrese limite inferior del intervalo: a= ');
b= input('Ingrese limite 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
14) 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

15) 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:
16) 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.
clear
clc
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

17) 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).
18)
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 ( (t-10)) 10 t 25s
10

V(x)
9 25 t 35s

9
9 - (t-35) 35 t 40s
5

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=800N/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.
disp('TEMA= METODO DE BISECCION')
disp('CURSO= FISICA COMPUTACIONAL II')
disp('ALUMNO=ARNHOL CAMPOS BOCANEGRA')
c=0;
a=input('ingrese el valor de a=');
b=input('ingrese el valor de b=');
N=input('ingrese el numero de interpolaciones=');
fa=a^3-a-1;
for c=1:N
r=(a+b)/2;
fprintf('%d -%10.5f\n',c,r)
fr=r^3-r-1;
if fa*fr<0
b=r;
else a=r;
end
end

Das könnte Ihnen auch gefallen