Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

Software para Ingeniería

Tarea 4 Emplear arreglos, matrices, gráficos 2D e interfaz gráfica de usuario

Estudante
JOHN EDISON GUTIERREZ BARRAGAN
Código: 1072191878

Grupo
203036_23

Universidad nacional abierta y a distancia – UNAD


Escuela de Ciencias Básicas, Tecnología e Ingeniería
Software para Ingeniería
Diciembre 2020
Con esta actividad se espera conseguir los siguientes resultados de aprendizaje:
Aplicar sentencias de control de flujo en el desarrollo de programas para la solución de
problemas de tratamiento matemático de ingeniería. Resolver problemas del campo de la
ingeniería que involucran el uso de arreglos y gráficas, a través de programas desarrollados
con software de modelización matemática, para la solución de problemas de tratamiento
matemático de ingeniería.

1. Arreglos y matrices

a. Cree un programa en archivo .m, en el se deba ingresar el valor de un ángulo en notación

decimal y que almacene en un vector de orden 3 el valor de dicho ángulo, pero en notación

sexagesimal. La primera celda debe contener el correspondiente valor en grados, la segunda

celda debe contener el correspondiente valor en minutos y la tercera celda debe contener el

correspondiente valor en segundos. Consecuentemente debe publicar un mensaje indicando

el respectivo vector.

clear all
clc
A=[0 0 0];
disp 'programa conversor de un angulo de decimal a sexagenimal'
angul=input('ingrese el valor del angulo ');
grados=floor(angul);
minutosa=mod(angul,grados);
minutosb=minutosa*60;
minutos=floor(minutosb);
segundosa=mod(minutosb,minutos);
segundosb=segundosa*60;
segundos=floor(segundosb);
A(1)=grados;
A(2)=minutos;
A(3)=segundos;

sprintf('el valor del angulo en sexagecimal es %d grados %d minutos %d


segundos', grados, minutos, segundos)
b. Cree un programa en archivo .m, para generar un vector fila de orden 5 que contenga

valores enteros. Para la creación de este vector debe usar comandos propios de programación

como 3 comandos de entrada de datos, bifurcaciones y/o ciclos, y publicación de datos en

pantalla.

clear all
clc
tamanovect=[];
disp ('vector en fila')
disp ('ingrese los 5 valores que comforman el vector')
for vect=1:5
numero=input(['ingrese el numero de la pocision ' num2str(vect) '
: ']);
tamanovect(vect)=numero;
end
tamanovect
c. Crear con sentencias predefinidas, propias del tratamiento de vectores y matrices con

software especializado, un vector de orden 5 que contenga números enteros. Publicar el

respectivo resultado.

clear all
clc
disp('Vector de 5 elementos con sentencias predefinidas')
v = fix(1000*rand(1,5))
d) Redactar un párrafo no superior a 10 líneas, en el cual compara de manera concluyente, lo

realizado en el ítem b) anterior, con el ítem c) anterior.

Con la sentencias predefinidas nos permite de manera más sencilla con plantillas ya

creadas en Matlab el realizar vectores y matrices, mientras que las definidas por el

usuario necesita una cantidad de sentencias con parámetros de entrada, bucles y

bifurcaciones que permiten tener la matriz o vector deseado.

e. Cree un programa en archivo .m, para generar una matriz de orden 4x4 que contenga

valores enteros. Para la creación de este vector debe usar comandos propios de programación

como comandos de entrada de datos, bifurcaciones y/o ciclos, y publicación de datos en

pantalla.

clear all
clc
disp ('Matriz 4x4')
disp (' ')
disp('Ingrese cada uno de los elementos de la matriz')
disp(' ')
for colum=1:4
for fila=1:4
disp(['ingrese el numero de la pocision
',num2str(colum),',',num2str(fila),': ']);
A(colum,fila)=input(' ');
end
end
disp(' ')
disp('Los valores de la matriz son ')
A

f. Crear con sentencias predefinidas, propias del tratamiento de vectores y matrices con

software especializado, una matriz de orden 4x4 que contenga números enteros. Publicar el

respectivo resultado.

clear all
clc
disp('Matriz 4x4 de enteros con sentencias predefinidas')
v = fix(1000*rand(4,4))
g. Redactar un párrafo no superior a 10 líneas, en el cual compara de manera concluyente, lo

realizado en el ítem e) anterior, con el ítem d) anterior.

La diferencia en la creación de vectores y matrices las sentencias son diferentes,

puesto que para la creación de vectores se puede definir solo con un bucle, mientras que una

matriz necesita la creación de un doble bucle, además de más instrucciones que permitan

definir la creación de la matriz, ingresando los elementos por teclado o generados por

sentencias predefinidas.

h. Cree un programa en archivo .m, en el se deba ingresar el valor de un ángulo en notación

decimal y que almacene en un vector de orden 3 el valor de dicho ángulo, pero en notación

sexagesimal. La primera celda debe contener el correspondiente valor en grados, la segunda

celda debe contener el correspondiente valor en minutos y la tercera celda debe contener el

correspondiente valor en segundos. Consecuentemente debe publicar un mensaje indicando

el respectivo vector.
clear all
clc
A=[0 0 0];
disp 'programa conversor de un angulo de decimal a sexagenimal'
angul=input('ingrese el valor del angulo ');
grados=floor(angul);
minutosa=mod(angul,grados);
minutosb=minutosa*60;
minutos=floor(minutosb);
segundosa=mod(minutosb,minutos);
segundosb=segundosa*60;
segundos=floor(segundosb);
A(1)=grados;
A(2)=minutos;
A(3)=segundos;

sprintf('el valor del angulo en sexagecimal es %d grados %d minutos %d


segundos', grados, minutos, segundos)

i. Genere 2 matrices de números reales (A y B), de orden 4x4 y con ellas realice las siguientes

operaciones (suma, resta, multiplicación, además de las operaciones lógicas de unión,

intersección y diferencia).
clear all
clc
disp 'Operacion entre matrices'
disp ' '
disp 'Matriz A'
A=[2,3,4,5;4,21,11,4;12,23,21,1;3,8,7,9]
disp 'Matriz A'
B=[20,1,10,17;3,6,13,2;2,4,6,6;21,5,8,7]
disp 'Suma de las matrices A + B'
A+B
disp 'Resta de las matrices A - B'
A-B
disp 'Multiplicacion de las matrices A * B'
A*B
disp 'Union de matrices A U B'
C=union(A,B)
disp 'Interseccion de matrices A ? B'
D=intersect(A,B)

j. Realice un programa que genere tres números aleatorios entre 1 y un límite superior; esos

tres números debe imprimirlos ordenados en forma ascendente o descendente, tanto el límite

superior como el orden ascendente o descendente los establece el usuario.

clear all
clc
disp('Generacion de tres numeros aleatorios con ingreso de limite
superior')
disp(' ')
lim=input('Ingrese el limite superior: ')
disp('Ingrese el orden en que se imprimen los datos: ')
orden=input ('1. Ascendente\n2. Descendente\n')
if orden==1
v = sort(fix(lim*rand(1,3)),'ascend')
elseif orden==2
v = sort(fix(lim*rand(1,3)),'descend')
end
k. Realice un programa que genere una matriz cuadrada de números aleatorios de orden “m”

en un rango de números determinado por el usuario y permita buscar un dato en ella e indicar

cuantas veces está repetido y en que posiciones.

Una vez ubicado los datos, debe dar la posibilidad de modificar aquellos que el usuario

indique por el valor que de igual forma él determine. Al final mostrar la nueva matriz

modificada.

clear all
clc
disp('Matriz 4x4 de enteros con sentencias predefinidas')
limite=input('Ingrese el rango de numeros: ')
m=input('Ingrese el orden de la matriz: ')
v = fix(limite*rand(m,m))
[C,ia,ic]=unique(v);
v_counts=accumarray(ic,1);
value_counts=[C,v_counts]
disp(' ')
s=input('ingrese el numero que desea buscar dentro de la matriz: ')
[fila,columna]=find(v==s)
contador=numel(find(v==s))
2. Gráficos 2d

a. Crear un vector con los valores de la función seno desde -𝜋 hasta 𝜋, utilizando las

siguientes líneas de comando:

x = -pi:0.1:pi;

y = sin(x);

Consecuentemente realice la gráfica de la función seno generada. La gráfica debe mostrar

los valores correspondientes tanto en la abscisa como en la ordenada. Adicionalmente,

debe agregar un título a la gráfica, texto indicando a lo que corresponden la abscisa y la

ordenada.

clear all
clc
close all
hold on
x=[-pi:0.1:pi]
ax=gca;
ax.XTick=-2*pi:pi/2:2*pi;
ax.XTickLabel = {'-2\pi','-3\pi/2','-\pi','-
\pi/2','0','\pi/2','\pi','3\p i/2','2\pi'};
y=[sin(x)]
plot(x,y)
title('sin(x) from -pi to pi')
xlabel('eje x');
ylabel('eje y');
grid
b. Para el gráfico final generado en el ítem anterior, genera la misma gráfica, pero con

el trazo de la función en colores verde, rojo, negro y amarillo.


c. Para el gráfico final generado en el ítem anterior, genera la misma gráfica con un

color diferente a los generados previamente, pero con el trazo de la función en los

siguientes caracteres:

• *(asterisco)

• + (mas)

• - (menos)

• o (o minúscula)
d. Cree un programa para trazar dos curvas en gráficos separados. La primera con una

línea continua, en rojo y los puntos representados por asteriscos y la segunda con una

línea punteada y en color azul. Las funciones graficar se muestran a continuación.

Usar como dominio un intervalo desde -1000 hasta 1000.

𝑦 = 𝑥 2 𝑒𝑐. (1)

𝑧 = 𝑥 3 𝑒𝑐. (3)

close all
clc
hold on
tiledlayout(2,1);

nexttile;
x=-1000:50:1000;
y=x.^2;
plot(x,y,'*r');
title('Grafica 1');
grid;

nexttile;
x=-1000:50:1000;
z=x.^3;
plot(x,z,'.b');
title('Grafica 2');
grid;
hold off
e. Usando las mismas ecuaciones 1 y 2 cree programa para trazar dos curvas en un
mismo gráfico. La primera con una línea continua, en rojo y los puntos representados
por asteriscos y la segunda con una línea punteada y en color azul. Usar como
dominio un intervalo desde -1000 hasta 1000.

close all
hold on
x=-1000:50:1000;
y=x.^2;
plot(x,y,'*r')
z=x.^3;
plot(x,z,'.b')
grid
f. Consultar sobre el uso del comando subplot, para proceder a realizar un programa
que grafique las funciones del ítem d) en subgráficos de modo horizontal, así como
de modo vertical.

close all
clear all
clc
title('Combine Plots')
hold on

x=-1000:50:1000;
y=x.^2;
subplot(3,2,1),plot(x,y,'*r'),title('grafico 1');
grid;

x=-1000:50:1000;
z=x.^3;
subplot(3,2,2),plot(x,z,'.b'),title('grafico 2');
grid;
hold off
3. Interfaz gráfica de usuario
Realizar una interfaz gráfica de usuario, a través de la cual se ejecute la generación de las

gráficas de las funciones indicadas en el ítem 3d.

clear all
clc
[x,y]=meshgrid(-2:0.1:2);
z=x.*exp(-x.^2-y.^3);
mesh(x,y,z)

También podría gustarte