Está en la página 1de 13

““Año del Diálogo y la Reconciliación Nacional”

UNIVERSIDAD NACIONAL DE TRUJILLO

Tema:
Trabajo N°2 de Lenguaje de Programación
Profesor:
Eli Guayan H.
Alumno:
Jurgen Tolentino M.

Facultad:
Ingeniería Mecánica
Curso:
Lenguaje de Programación
Ciclo:
II

2018

1
Índice 2

1. Pregunta 1 3
1.1. Explicación de pasos y datos otorgados 3
1.2. Usando el fichero M-file 3
1.3. Prueba en MATLAB 3
1.4. Diagrama de Flujo 4

2. Pregunta 2 5
2.1. Explicación de pasos y datos otorgados 5
2.2. Resolución en MATLAB 5
2.3. Grafico en MATLAB 7

3. Pregunta 3 7
3.1. Explicación de pasos y datos otorgados 7
3.2. Resolución en MATLAB 8
3.3. Grafico en MATLAB 9

4. Pregunta 4 9
4.1. Explicación de pasos y datos otorgados 9
4.2. Resolución en MATLAB 10
4.3. Grafico en MATLAB 11

5. Pregunta 5 11
5.1. Explicación de pasos y datos otorgados 11
5.2. Resolución en MATLAB 12
5.3. Grafico en MATLAB 13

2
1. Pregunta 1
Hacer un programa en Matlab que dado un número N nos diga si es perfecto o no

1.1. Explicación de pasos y datos otorgados


Para que un número sea perfecto, sus divisores, exceptuando al número, deben sumar
dicho número. Por lo cual lo que haré será que, al agregar un número, dicho número si
al dividirlo por un “i” que tiene de intervalo de 1 hasta el número puesto menos 1, si da
residuo 0, es un divisor
Luego, con ayuda del contador “s”, sumare los i a los que cumplen esta condición y asi
establecer si suman el mismo número o no.
1.2. Usando el fichero M-file
%Pregunta 1
%Creando un programa de nùmero perfecto
N=input('ingrese un entero positivo: ');
s=0;
for i=1:N-1;
if rem(N,i)==0
s=s+i;
end
end
if N==s
disp('El numero es perfecto')
else
disp('El numero no es perfecto')
end

1.3. Prueba en MATLAB


>> perfecto
ingrese un entero positivo: 28
El numero es perfecto
>> perfecto
ingrese un entero positivo: 14
El numero no es perfecto

3
1.4. Diagrama de Flujo

INCIO

LEER: N

i=1:N-1
s=

rem(N,i)==0 F
s=s+i;

s=s+i;

F
N==s

Imprimir : El Imprimir: El
número es número no es
perfecto perfecto

END

4
2. Pregunta 2
Cómo debería cortarse el alambre para que su área sea máxima o mínima
2.1. Explicación de pasos y datos otorgados
Como me da la longitud del alambre(12), lo que haré será restarlo con un x, que va
desde 0 a 12, asi obtengo 2 numeros que sumados dan 12.
Luego, como el cuadrado tiene 4 lados, dire que x/4 es un lado y como el triangulo
tiene 3 lados iguales, dire que (12-x/3) es otro lado. Luego, sabemos que el area del
triangulo es sqrt(3)*((12-x)/3)^2/4 y el area del cuadrado seria: (x/4)^2
Finalmente los sumo y le aplico el comando eval, que evalua dicha funcion y luego
aplico el switch case, para ver las posibilidades de minimo y maximo
2.2. Usando el fichero M-file
%Pregunta 2
L=12;
x=0:0.01:L;
y='(x/4).^2+(L-x).^2/(12*sqrt(3))';
A=eval(y);
B=menu('Desea hallar el maximo o minimo de la funcion:,
'maximo','minimo');
switch B
case 1
F=max(A);
fprintf('el maximo de la suma de las areas es: %5.2f\n',F)
case 2
F=min(A);
fprintf('el minimo de la suma de las areas es: %5.2f\n',F)
end

2.3. Resolución en MATLAB


>> maxmin
el maximo es: 9.00
>> maxmin
el maximo de la suma de las areas es: 9.00

5
3. Pregunta 3
Graficar 2 semi-circunferencias tangentes en un eje a otra circunferencia
3.1. Explicación de pasos y datos otorgados
En este ejercicio me da como dato, que la circunferencia tiene radio=1.5, y que las
otras 2 circunferencias radio=2. La primera semi-circunferencia se encuentra 3.5
encima del origen(y=3.5 y x=0) y la segunda semi-circunferencia, 3.5 debajo del
origen(y=-3.5 y x=0)
Con estos datos ya se puede hallar las 3 figuras

3.2. Usando el fichero M-file


%Pregunta 3

function [d]=Distpal(xo,yo,A,B,C);
d=abs(A*xo+B*yo+C)/sqrt(A^2+B^2);
fprintf('la distancia entre el punto y la recta es: %5.2f\n',d)
end

3.3. Resolución en MATLAB

>> [d]=Distpal(2,4,-2,3.5,6);
la distancia entre el punto y la recta es: 3.97
>> [d]=Distpal(11,2,2,1,-6);
la distancia entre el punto y la recta es: 8.05

4. Pregunta 4

6
Realice la gráfica de la parábola girada
4.1. Explicación de pasos y datos otorgados
Me pide graficar una parábola y=x^2 en cierto intervalo, pero rotándolo 20º en el punto
(2,2). Para esto, aplicaré la ecuación de rotación, que es x=x1*cos(ángulo)-
y1*sen(ángulo) y y=x1*sen(ángulo)+ y1*cos(ángulo) y de esta forma hallar dicho gráfico.

Luego agregaré 2 ejes discontinuos paralelos a el eje x y al eje y en el punto (2,2) para que se
puedan apreciar dichos ejes luego de rotar 20º. Dicha rotación se puede hallar fácilmente,
ya que sé la pendiente (tangente de 20º) y los puntos (x=2 y y=2) por lo cual, con la
fórmula de la recta, puedo hallarlas

4.2. Usando el fichero M-file


%Pregunta 4
%Los argumentos de entrada son:
%vo1: velocidad inicial de A en m/s
%theta1: angulo de A en grados
%Los argumentos de salida son:
%vo2: velocidad inicial de C en m/s
%theta2: angulo de C en grados
vo1=input('Ingrese el valor de la velocidad inicial de A vo1= ');
theta1=input('Ingrese el valor del angulo de A en grados theta1= ');
g=9.8; %aceleración de la gravedad
vox1=vo1*cos(theta1*pi/180);
voy1=vo1*sin(theta1*pi/180);
t1=voy1/g; %tiempo transcurrido desde el punto A hasta su altura
máxima
hmax1=voy1.^2/(2*g);
t=t1+sqrt((2*hmax1)/(5*g));%tiempo transcurrido desde la altura maxima
de A con %hasta el punto de intersección
con el
% el recorrido de C
d=vox1*t; %distancia de A en el tiempo hasta la interseccioón
t2=2*t1;%tiempo total del recorrido e A a B
tplot1=linspace(0,t2,200);
X1=vox1*tplot1; %distancia en el tiempo con lispace
Y1=voy1*tplot1-(g*tplot1.^2/2); % altura en el tiempo con lispace
plot(X1,Y1,'r');
hold on%ahora procedere a calcular el angulo y velocidad inicial de C
vox2=(20000-d)/(t-5); %ya que el tiempo de C es 5seg menor al tiempo
de
%interseccion de A debido al retraso
voy2=g*(t1-2.5);
vo2=sqrt(voy2.^2+vox2.^2);% modulo de ambas velocidades para hallar la
resultante
theta2=180*atan(voy2/vox2)/pi; %arcotangente para hallar el angulo
t3=voy2/g;%tiempo de C hasta su altura maxima

7
t4=2*t3; %tiempo total de C
tplot2=linspace(0,t4,200);
X2=-vox2*tplot2;%Distancia en el tiempo con lispace hacia la izquierda
Y2=voy2*tplot2-0.5*g*tplot2.^2;%Distancia en el tiempo con lispace
plot(X2+20000,Y2,'c')
grid
xlabel('Distancia')
ylabel('Altura')
title('Recorrido de A y C')
fprintf('la velocidad inicial de C es: %5.2f y su angulo es:
%5.2f\n',vo2,theta2)

4.3. Grafico en MATLAB


K>> Grafico
Ingrese el valor de la velocidad inicial de A vo1= 400
Ingrese el valor del angulo de A en grados theta1= 45
la velocidad inicial de C es: 341.04 y su angulo es: 49.25
K>> Grafico
Ingrese el valor de la velocidad inicial de A vo1= 700
Ingrese el valor del angulo de A en grados theta1= 84
la velocidad inicial de C es: 683.67 y su angulo es: 79.25

5. Pregunta 5
Grafica de una intersección de dos rectas y hallar el punto de interseccion

8
5.2. Explicación de pasos y datos otorgados

Me dan como dato, dos rectas paramétricas, la primera recta vale x – 4 = t y y= -t, de
la cual reemplazando obtengo que: x + y - 4 = 0; y la segunda recta vale x – 1 =- t/2 y
y=-t, de la cual reemplazando obtengo que: x - y/2 -1 = 0.
Con estos datos, puedo graficar dichas rectas, para finalmente darme cuenta que
efectivamente se interceptan en un punto,
Finalmente, para hallar dicho punto, lo que haré, será convertir dichas rectas en
matrices, quedando finalmente que: [1 1 ; 1 -1/2]*[x ; y]=[ 4 ; 1]. Luego, multiplicamos
por su inversa, quedando finalmente: [x ; y]=inversa de([1 1; 1 -1/2])*[4 ; 1]

5.3. Resolución en MATLAB


A=menu('ingrese el area que quiera
elegir','triangulo','cuadrado','circulo','rectangulo');
switch A
case 1
B=input ('ingresar la base del triángulo B= ');

H=input ('ingresar la base del triángulo H= ');


if B>0, H>0;
A=(B*H)/2;
fprintf('El área del triángulo es: %5.2f metros^2\n',A)
else
fprintf('El área del triángulo no existe')
end
case 2
L=input('Ingrese la longitud del lado,L= ');
if L>0;
A=L*L;
fprintf('El area del cuadrado es:%5.2f metros^2\n',A)
else
fprintf('El area del cuadrado no existe')
end

case 3
R=input('Ingrese la longitud del radio del circulo,R= ');
if R>0;
A=(pi)*R.^2;
fprintf('El area del círculo es:%5.2f metros^2\n',A)
else
fprintf('El area del círculo no existe')
end
case 4
B=input('Ingrese la longitud de la base, B=');
H=input('Ingrese la longitud de la altura, H=');
if B>0, H>0;
A=B*H;
fprintf('El area del rectángulo es:%5.2f metros^2\n',A)
else
fprintf('El area del rectángulo no existe')

9
end
end

5.4. Gráfico en MATLAB


K>> areatrc
Ingrese la longitud del radio del circulo,R= 4
El area del círculo es:50.27 metros^2
K>> areatrc
ingresar la base del triángulo B= 7
ingresar la base del triángulo H= 3
El área del triángulo es: 10.50 metros^2
K>> areatrc
Ingrese la longitud de la base, B=-4
Ingrese la longitud de la altura, H=3
El area del rectángulo no existe
K>> areatrc
Ingrese la longitud del lado,L= -4
El area del cuadrado no existe

6. Pregunta 6

10
Grafica de una intersección de dos rectas y hallar el punto de interseccion

6.2. Explicación de pasos y datos otorgados

Me dan como dato, dos rectas paramétricas, la primera recta vale x – 4 = t y y= -t, de
la cual reemplazando obtengo que: x + y - 4 = 0; y la segunda recta vale x – 1 =- t/2 y
y=-t, de la cual reemplazando obtengo que: x - y/2 -1 = 0.
Con estos datos, puedo graficar dichas rectas, para finalmente darme cuenta que
efectivamente se interceptan en un punto,
Finalmente, para hallar dicho punto, lo que haré, será convertir dichas rectas en
matrices, quedando finalmente que: [1 1 ; 1 -1/2]*[x ; y]=[ 4 ; 1]. Luego, multiplicamos
por su inversa, quedando finalmente: [x ; y]=inversa de([1 1; 1 -1/2])*[4 ; 1]

6.3. Resolución en MATLAB


m=input('ingrese el numero: ');
s=0;
for n=0:m
s=s+sqrt(12)*(-1/3).^n/(2*n+1);
end
disp(s)
format long

6.4. Gráfico en MATLAB


K>> sumatoria
ingrese el numero: 5
3.141308785462883
K>> sumatoria
ingrese el numero: 10
3.141593304503082

11
7. Pregunta 6
Grafica de una intersección de dos rectas y hallar el punto de interseccion

7.2. Explicación de pasos y datos otorgados

Me dan como dato, dos rectas paramétricas, la primera recta vale x – 4 = t y y= -t, de
la cual reemplazando obtengo que: x + y - 4 = 0; y la segunda recta vale x – 1 =- t/2 y
y=-t, de la cual reemplazando obtengo que: x - y/2 -1 = 0.
Con estos datos, puedo graficar dichas rectas, para finalmente darme cuenta que
efectivamente se interceptan en un punto,
Finalmente, para hallar dicho punto, lo que haré, será convertir dichas rectas en
matrices, quedando finalmente que: [1 1 ; 1 -1/2]*[x ; y]=[ 4 ; 1]. Luego, multiplicamos
por su inversa, quedando finalmente: [x ; y]=inversa de([1 1; 1 -1/2])*[4 ; 1]

7.3. Resolución en MATLAB


A=input('introduzca los numeros de la matriz [A]= ');
s=0;
for k=1:length(A)
if A(k)<50
s=s+(A(k));
end
end
fprintf('la suma de los numeros menores a 50 es: %5.2f\n',s)

7.4. Gráfico en MATLAB


K>> vector
introduzca los numeros de la matriz [A]= [ 5 8 96 85 41]
la suma de los numeros menores a 50 es: 54.00
K>> vector
introduzca los numeros de la matriz [A]= [ 89 96 63 56]
la suma de los numeros menores a 50 es: 0.00
K>> vector
introduzca los numeros de la matriz [A]= [-40 50 30 20 ]
la suma de los numeros menores a 50 es: 10.00

12
INICIO

s=0

Leer:A

k=1:length(A)

A(k)<50

s+(A(k))

Imprimir: s

end

13

También podría gustarte