Comput Ac Ional

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 13

UNIVERSIDAD NACIONAL

“PEDRO RUIZ GALLO”


FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

 ASIGNATURA : FISICA COMPUTACIONAL I

 ESCUELA : FISICA

 DOCENTE : JAIME SOTERO SOLIS

 ALUMNA : AQUINO JIBAJA PILAR

 TEMA :

- DESARROLLO DE DIEZ PROBLEMAS CAP.7

- DESARROLLO DE PRÁCTICA

LAMBAYEQUE, 10 DE AGOSTO DEL 2017


1) 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.
Solución:
𝒃 𝒃
a) Y= a>=b b) Y= a-b<=𝟐 c) Y=a-(b<=𝟐)

6 6
Y= 10>=6 Y= 10-6<=2 Y= 10-(6<=2)

Y= 1 Y= 4<=3 Y= 10-(0)

Y= 0 Y= 10

2) Represente la siguiente función 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 función f(x) para utilizarla posteriormente en un fichero
script.
Solución:
a) ALGORITMO:

Datos de entrada: x
Datos de salida: f(x) = y

Paso 1: Ingresar ‘x’.


Paso 2:

- Para −6 ≤ 𝑥 ≤ −2
Hacer 𝑦 = 4𝑒 𝑥+2
Mostrar ‘y’.
- Para −2 ≤ 𝑥 ≤ 2,5
Hacer 𝑦 = 𝑥 2
Mostrar ‘y’.
- Para 2,5 < 𝑥 ≤ 6
1
Hacer 𝑦 = (𝑥 + 6,5)3
Mostrar ‘y’.

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

a) ALGORITMO:

Datos de entrada: x
Datos de salida: f(x) = y

Paso 1: Ingresar ‘x’.


Paso 2:

- Si −6 ≤ 𝑥 ≤ −2
Hacer 𝑦 = 4𝑒 𝑥+2
Mostrar ‘y’.

- Si −2 ≤ 𝑥 ≤ 2,5
Hacer 𝑦 = 𝑥 2
Mostrar ‘y’.

- Si 2,5 < 𝑥 ≤ 6
1
Hacer 𝑦 = (𝑥 + 6,5)3
Mostrar ‘y’.
function [ y ] = funcion7( x )
x=-6:6;
x=input('Ingrese: x= ');
if x>=-6
if x<=-2
y= 4*(exp(1)^(x+2))
end
end

if x>=-2
if x<=2.5
y = x^2
end
end

if x>2.5
if x<=6
y = (x+6.5)^(1/3)
end
end

end

3) 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)
20
d) Y=2x4+5==7+
4

Solución:
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
4) Escriba un programa script que calcule las raíces reales de una
función cuadrática a𝑥 2 + 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
raíces de la ecuación, el programa calculará el discriminante D:
D= 𝑏 2 – 4ac
Si D>0, el programa visualizará un mensaje del tipo: ´La ecuación
tiene dos raíces´, y los valores de las raíces se visualizarán en la
línea siguiente.
Si D=0, el programa visualizará un mensaje del tipo: ´La ecuación
tiene una raíz´, y los valores de la raíz se visualizarán en la línea
siguiente.
Si D<0, el programa visualizara un mensaje del tipo ´La ecuación
no tiene raíces 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
Solución:
ALGORITMO:
Datos de entrada: a, b y c.
Datos de salida: x (raíces).

Paso 1: Ingresar ‘a, b y c’.


Pasó 2: Calcular la discriminante: 𝐷 = 𝑏 2 − 4𝑎𝑐.
Paso 3:
- Si 𝐷 > 0
Hacer 𝑥1 = (−𝑏 + 𝐷 0,5 )/2𝑎
Hacer 𝑥2 = (−𝑏 − 𝐷 0,5 )/2𝑎
Mostrar ‘La ecuación tiene dos raíces:’
Mostrar ′𝑥1 , 𝑥2 ′.
- Si 𝐷 = 0
Hacer 𝑥3 = −𝑏/2𝑎
Mostrar ‘La ecuación tiene una raíz:’
Mostrar ′𝑥3 ′.

- Si 𝐷 < 0
Mostrar ‘La ecuación no tiene raíces reales.’

disp('RAÍCES REALES DE UNA FUNCIÓN CUADRÁTICA')


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 ecuación tiene dos raíces:')
x1
x2
elseif D==0
x = (-b)/(2*a);
disp('La ecuación tiene una raíz:')
x
else
disp('La ecuación no tiene raíces reales.')
end

a) La ecuación tiene dos raíces:


X1 = 0.3452
x2 = -4.3452
b) La ecuación no tiene raíces reales.
c) La ecuación tiene una raíz:
x = -0.333333

5) Utilice bucles para crear una matriz A de dimensión 4x7, en la cual


el valor de cada elemento sea la suma de sus índices (el número de
la fila y el número de la columna de cada elemento). Por ejemplo,
el valor del elemento A (2,5) será 7.

Solución:
ALGORITMO:

Datos de salida: A = []

Paso 1: Inicio del primer bucle: ‘Para k = 1, 2, 3, 4’.


Paso 2: Inicio del segundo bucle: ‘Para h = 1, 2, … , 7’.
Paso 3: Hacer A(k,h) = k+h
Paso 4: Fin del primer bucle.
Paso 5: Fin del segundo bucle.
Paso 6: Mostrar ‘A = []’

A=[];
for k=1:4
for h=1:7

A(k,h) = k+h;

end
end A
6) Utilice bucles y sentencias condicionales para crear una matriz de
dimensión 5x8, en la cual el valor de cada elemento sea igual a la raíz
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 número de fila y el número de columna que le corresponden.)
Solución:
ALGORITMO:

Datos de salida: A = []

Paso 1: Inicio del primer bucle: ‘Para k = 1, 2, 3, 4, 5’.


Paso 2: Inicio del segundo bucle: ‘Para h = 1, 2, … , 8’.
Paso 3: Proposiciones:
- w: ‘Fila par’
- v: ‘Columna par’
Paso 4: Inicio de las condiciones:
- Si se cumplen w y v, hacer 𝐴(𝑘, ℎ) = 𝑘 2 + ℎ2 .
- Caso contrario, hacer 𝐴(𝑘, ℎ) = (𝑘 + ℎ)0,5 .

Fin de las condiciones.

Paso 5: Fin del primer bucle.


Paso 6: Fin del segundo bucle
Paso 7: Mostrar ‘A = []’

A=[];
for k=1:5
for h=1:8
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

7) Escriba un programa (utilizando un bucle) que calcule la suma de los m


primeros términos de la serie:
𝑚
1
∑(−1)𝑛 , (n = 0, 1,2, … … . , m)
2𝑛 + 1
𝑛=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 .

Solución:
ALGORITMO:

Datos de entrada: m.
Datos de salida: S.

Paso 1: Ingresar ‘m’.


Paso 2: Hacer S = 0.
Paso 3: Inicio del bucle:
Para h = 0, 1, … , m. Hacer:

(−1)ℎ
- 𝐴= 2ℎ+1

- S = S+A
Paso 4: Fin del bucle.
Paso 5: Hacer x = S
Paso 6: Mostrar x.

disp('Serie de Leibniz para aproximar a pi cuartos')


m= input('Ingrese límite 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…

8) Escriba una función que ordene los elementos de una matriz. Utilice la
siguiente línea de definición de función: B = ordenarmatriz(A), donde A
será una matriz de cualquier tamaño, y B será otra matriz del mismo
tamaño 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 función en una matriz de dimensión 4x7,
con números enteros generados aleatoriamente y distribuidos entre -30
y 30. Utilice la función rand de MATLAB para general la matriz inicial.

Solución:
ALGORITMO:

Matriz inicial: A = []
Matriz de salida: B = []

Paso 1: Iniciar la función B = ordenarmatriz(A)


Paso 2: Ingresar número de filas y columnas de la matriz. Ingresar
intervalo (límite inferior y límite superior).
Paso 3: Inicio de la primera condición: Si el límite superior
es mayor que el límite inferior, hacer una matriz cualquiera
que contenga elementos dentro del intervalo ingresado, hacer
B = A. Fin de la primera condición.
Paso 4: Ordenar matriz ascendentemente, fila a fila, por
conteos.
function [ B ] = ordenarmatriz( A )
m= input('Ingrese número de filas de la matriz: m = ');
n= input('Ingrese número de columnas de la matriz: n= ');
a= input('Ingrese límite inferior del intervalo: a= ');
b= input('Ingrese límite superior del intervalo: b= ');

if b>a
A = randi([a b],m,n);
B = A;
else
disp('Error... Límite Inferior es mayor o igual al Límite
Superior...')
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

end

B =
-25 13 15 18 18 21 27
-29 -28 -22 -7 20 26 28
-14 -5 -4 9 10 11 12
-28 -28 -20 -11 -7 16 25

9)
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 ó 5. Al
final, el programa debe mostrar el vector resultante.
Solución:
ALGORITMO:

Vector inicial: x = [1:50]


Vector de salida: x = [ ]

Paso 1: Inicio del bucle: Para k = 1, 2, … , 50.


Paso 2: Descripción uno: Borrar elementos del vector que son
divisible por 3.
Paso 3: Descripción dos: Borrar elementos del vector que son
divisible por 4.
Paso 4: Descripción tres: Borrar elementos del vector que son
divisible por 5.
Paso 5: Quebrar proceso si fuera necesario. Fin del bucle.

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

10) Escriba una función 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 línea de definición de
función para ello: [theta radio] = cartesianoAPolar (x, y). Los argumentos
de entrada serán las coordenadas cartesianas x e y del punto, y los
argumentos de salida serán el ángulo 𝜃 y la distancia radial (radio) al
punto de cuestión. El ángulo 𝜃 vendrá dado en grados, y su medida será
relativa al eje x positivo, de tal forma que sea un número positivo en los
cuadrantes I, II y III, y un número negativo en el cuadrante IV. Utilice
posteriormente esta función para calcular las coordenadas polares de
los puntos: (15,3), (-7,12), (-17,-9) y (10,-6.5).
Solución:
ALGORITMO:

Datos de entrada: x, y.
Datos de salida: r, theta.

Paso 1: Ingresar coordenadas x, y.

Paso 2: Definir radio: 𝑟 = √𝑥 2 + 𝑦 2

Paso 3: Inicio de la primera condición: Si x>0, y>0, hacer


𝑡ℎ𝑒𝑡𝑎 = cos−1 (𝑥 ⁄𝑟). Fin de la primera condición.

Paso 4: Inicio de la segunda condición: Si x<0, y>0, hacer


𝑡ℎ𝑒𝑡𝑎 = cos−1 (𝑥 ⁄𝑟). Fin de la segunda condición.

Paso 5: Inicio de la tercera condición: Si x<0, y<0, hacer


𝑡ℎ𝑒𝑡𝑎 = 180° + tan−1 (𝑦⁄𝑥). Fin de la tercera condición.

Paso 6: Inicio de la cuarta condición: Si x>0, y<0, hacer


𝑡ℎ𝑒𝑡𝑎 = − cos −1 (𝑥 ⁄𝑟). Fin de la cuarta condición.

function [ theta radio ] = cartesianoAPolar( x,y )


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)

end
if x<0 & y>0
theta=acos(x/r)*(180/pi)

end
if x<0 & y<0
theta=180+atan(y/x)*(180/pi)

end
if x>0 & y<0
theta=-acos(x/r)*(180/pi)

end

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

También podría gustarte