%% HERRAMIENTAS COMPUTACIONALES
%% Nombre: Geovany Muñoz
%% Tarea desarrollada en el programa MATLAB
%% CREAR MATRIZ
clc, clear, clear all
A=[1 2 3; 4 5 6; 7 8 9]
B=[1 2 3; 0 3 1; 2 1 1]
%% MATRIZ IDENTIDAD (Opción 1)
clc, clear, clear all
A= [1 2 3; 4 5 6; 7 8 9];
I= [1 0 0; 0 1 0; 0 0 1];
H= A.*I
T=diag(H)
%% MATRIZ IDENTIDAD (Opción 2)
clc, clear, clear all
I= [1 0 0; 0 1 0; 0 0 1];
H= diag(I)
%% MATRIZ DE CEROS
clc, clear, clear all
j= zeros (4,2)
%% OPERACIONES BÁSICAS CON MATLAB
%% Compare los resultados de A*B y A.*B . Que hizo Matlab?
clc, clear, clear all
A=[1 2 3; 4 5 6; 7 8 9];
B=[1 2 3; 0 3 1; 2 1 1];
C=A*B %% Brinda el resultado del producto (multiplicación) de 2 vectores o
matrices.Supongamos AxB, en este caso el número de columnas del vector o matriz A,
debe ser igual al número de filas del vector o matriz B
D=A.*B %% Brinda el resultado de la operación del producto término a término
(multiplicación por elementos) de un vector o una matriz.
%% A*B = B*A. Explique
clc, clear, clear all
A=[1 2 3; 4 5 6; 7 8 9];
B=[1 2 3; 0 3 1; 2 1 1];
C=A*B
D=B*A %% El producto de dos matrices no es conmutativa, por tanto, A*B~=B*A
%% A.*B = B.*A. Explique
clc, clear, clear all
A=[1 2 3; 4 5 6; 7 8 9];
B=[1 2 3; 0 3 1; 2 1 1];
C=A.*B
D=B.*A %% En este caso, como es una multiplicación término a término, es posible la
propiedad permutativa de dos matrices, por tanto, A.*B=B.*A
%% Crear una matriz D=B-1. Que es D*B= ?
clc, clear, clear all
B= [1 2 3; 0 3 1; 2 1 1]
D= inv (B) % La condición inicial para que una matriz sea inversible o regular, es
que debe ser cuadrada.
E=D*B % Esta operación arroja la matriz identidad, indicando que la matriz D es
inversa de B.
%% Compare con A/B y A\B. Cual es la diferencia?
clc, clear, clear all
A=[1 2 3; 4 5 6; 7 8 0]; % Se cambia el valor (3,1) que es 9, por 0, para poder
desarrollar sin problema el ejemplo ya qué según indica matlab "Advertencia: Matriz
está cerca de singular o mal escalado. Los resultados pueden ser inexactos."
B=[1 2 3; 0 3 1; 2 1 1];
C=A/B %% División derecha de matrices: El comando / nos permite realizar divisiónes
entre dos matrices, ya que al verificar la operación A*inv(B) se obtiene igual
resultado.
D=A\B %% División izquierda de matrices: Este comando \ también se expresa como una
división, ya que en este caso al verificar la operación inv(A)*B se obtiene igual
resultado.
%% Crear una matriz E 3×3 con todos los elementos de la diagonal iguales a 6 y el
resto de los elementos como 0.
clc, clear, clear all
v= [3 3 3];
j= diag (v)
%% OPERADOR DOS PUNTOS (:)
%% Defina un vector x con el siguiente comando x=1:10. Explique
clc, clear, clear all
x= 1:10 % Genera secuencia númerica que inicia y tiene paso de 1 y finaliza en 10.
%% Que hace x=1:2:10. Explique.
clc, clear, clear all
x= 1:2:10 % Genera secuencia númerica que inicia en 1, con paso de 2 y finaliza en
10.
%% Extracción de submatrices e indexación
%% Use el comando MM=magic(4) para generar un matriz
clc, clear, clear all
MM= magic(4)
AA=MM(3, 2) %% Saque el valor que está en la fila 3 columna 2 de MM.
MM(1,4)=26 %% Coloca en la matriz MM en la fila 1 columna 4 el número 26.
CC=MM(:,[2 4]) %% Extraiga de MM todos los valores de la columna 2 y 4 y
almacénelos en aa (CC)
DD=MM(end,:) %% Que pasa cuando MM(end,:)?. Explique. Rta/ Se está tomando la
última fila con "end" y todas las columnas de dicha fila con ":".
EE=MM([1 3], 2:end) %% Que pasa cuando bb=MM([1 3],2:end). Rta/ Se está tomando la
fila 1 y 3, además la columna 2 hasta el final (4), formando una matriz (2x3)
FF=size(EE) %% Que hace el comando size(bb)?. Explicar. Rta/ Brinda el tamaño de
la matriz EE, en este caso 2x3
FF=size(EE,1) %% Que pasa si size(bb,1). Explicar. Rta/ Brinda el tamaño de
las filas
FF=size(EE,2) %% Que pasa si size(bb,2). Explicar. Rta/ Brinda el tamaño de
las columnas
%% GRAFICAS EN MATLAB
clc, clear, clear all
h=0.01;
t=0:h:5;
y1=sin(2*pi*t);
y2=cos(2*pi*t);
plot (t, y1, 'r', t, y2, '--b')
xlabel ('Tiempo [s]')
ylabel ('Aceleración [m/s2]')
legend ('Sen', 'Cos')
A=[1 2 3; 4 5 6; 7 8 9]
B=[1 2 3; 0 3 1; 2 1 1]
%% EJERCICIOS
%% 1. Suma de 2 números
clc, clear, clear all
x=input('Ingrese el primer número: ');
y=input('Ingrese el segundo número: ');
z=x+y;
fprintf('La suma es = %d', z)
%% 2. Escriba un programa para que lea cuatro números del teclado y muestra el
mayor de ellos
clc, clear, clear all
A=input('Ingrese el primer número: ');
B=input('Ingrese el segundo número: ');
C=input('Ingrese el tercer número: ');
D=input('Ingrese el cuarto número: ');
if (A>B && A>C && A>D)
fprintf('El mayor valor es = %f', A);
elseif (B>A && B>C && B>D)
fprintf('El mayor valor es = %f', B);
elseif (C>A && C>A && C>D)
fprintf('El mayor valor es = %f', C);
elseif (D>A && D>B && D>C)
fprintf('El mayor valor es = %f', D);
else
fprintf('Los valores dados son iguales')
end
%% 3. Dibuje la respuesta de un sistema oscilatorio amortiguado
t=0:0.01:30;
x=5*exp(-0.1*t).*cos(4*t-0.7048);
plot(t,x)
grid
xlabel('Tiempo(segundos)')
ylabel('Desplazamiento X(metros)')
%% 3. Dibuje la respuesta de un sistema oscilatorio amortiguado
clc, clear, clear all
J= 0.01; %Razón de amortiguamiento
wn= 10; %Frecuencia natural
Uo=0.3; %Desplazamiento
dUo=0.3
wd= wn*(sqrt(1-(J^2)));
h=0.1;
t=0:h:50;
Ut=(exp(-(J*(wn.*t)))).*((Uo*cos(wd.*t)+(((Uo+(J*wn*dUo))/(wd))*sin(wd.*t))));
plot(t, Ut, '-b')
%% 4. Diseña el algoritmo que sume todos los números naturales anteriores a un
número N dado.
clc, clear, clear all
x= input('Ingrese el valor final: ');
y=1:x;
z=sum(y);
fprintf('La suma es = %d', z)
%% 5. Crear una tabla con el comando TABLE
clc, clear, clear all
Barra=[2; 3; 4; 5; 6; 7; 8]; % Número de barra
Diametro=[6.4; 9.5; 12.7; 15.9; 19.1; 22.2; 25.4]; % Diametro barra
Area=[32; 71; 129; 199; 284; 387; 510]; % Area barra
datatable=table(Barra, Diametro, Area)
A=input ('digite No. de barra ')
if (A==2);
datatable(1,:)
elseif (A==3)
datatable(2,:)
elseif (A==4)
datatable(3,:)
elseif (A==5)
datatable(4,:)
elseif (A==6)
datatable(5,:)
elseif (A==7)
datatable(6,:)
elseif (A==8)
datatable(7,:)
else input('Digite una barra entre No. 2 y No. 8')
end
%% 6. Media aritmetica
clc, clear, clear all
suma=0;
contador=0;
x=input('digite un número (el número cero (0) termina el ejercicio)= ');
while (x~=0);
suma=x+suma;
contador=contador+1;
x=input('digite un número (el número cero (0) termina el ejercicio)= ');
end
if contador>0;
media=suma/contador;
fprintf('La media aritmetica es= %f', media)
else disp('Registre un valor distinto de cero')
end
%% Cargar y graficar el sismo de El Centro (1949) usando el código mostrado a
continuación. El vector de tiempo tt está en segundos y la amplitud del sismo en
aceleración está en . Determine la aceleración pico del registro y muestrela en la
figura con un círculo rojo.
clc, clear, clear all
elcentro = load('elcentro.txt');
MQ = [elcentro(1:end-150,1)/(100)];
dt = .02;
tt = [0:dt:((length(MQ)-1)*dt)]';
plot(tt,MQ), grid on
ylabel('Aceleración [m/s^2]')
xlabel('Tiempo [s]')
%% Sismo luna vs sismo tierra
clc, clear, clear all
lunax = load('lp_1973_shallow_acc_12_LP_x.txt');
x = [lunax(1:end-38000,2)/(40)];
dt = .02;
ttx = [0:dt:((length(x)-1)*dt)]';
subplot(2, 1, 1)
plot(ttx,x), grid on
ylabel('Aceleración [m/s^2]')
xlabel('Tiempo [s]')
mx=abs(max(x));
fprintf('La aceleración pico en x es [m/s^2]= %f', mx)
lunay = load('lp_1973_shallow_acc_12_LP_y.txt');
y = [lunay(1:end-38000,2)/(40)];
dt = .02;
tty = [0:dt:((length(x)-1)*dt)]';
subplot(2, 1, 2)
plot(tty,y), grid on
ylabel('Aceleración [m/s^2]')
xlabel('Tiempo [s]')
my=abs(max(y));
fprintf('\n La aceleración pico en y es [m/s^2]= %f', my)