0% encontró este documento útil (0 votos)
168 vistas8 páginas

Taller de Bucles y Algoritmos en MATLAB

Este documento presenta varios ejemplos y ejercicios sobre bucles en MATLAB. Incluye ejemplos de bucles for y while para generar vectores y calcular sumas. También contiene ejercicios para ordenar números, resolver ecuaciones de segundo grado, y analizar vigas con diferentes tipos de carga aplicando bucles. Finalmente, propone ejercicios adicionales sobre series de Fibonacci, ordenamiento de arreglos y búsqueda binaria.

Cargado por

geovandres988
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
168 vistas8 páginas

Taller de Bucles y Algoritmos en MATLAB

Este documento presenta varios ejemplos y ejercicios sobre bucles en MATLAB. Incluye ejemplos de bucles for y while para generar vectores y calcular sumas. También contiene ejercicios para ordenar números, resolver ecuaciones de segundo grado, y analizar vigas con diferentes tipos de carga aplicando bucles. Finalmente, propone ejercicios adicionales sobre series de Fibonacci, ordenamiento de arreglos y búsqueda binaria.

Cargado por

geovandres988
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

%% TALLER 2 BUCLES EN MATLAB

%% EJEMPLOS DEL TALLER


%% Modifique el programa del ejemplo anterior para que determine si el número
digitado por el usuario es mayor, igual o menor a 5.

clc, clear, clear all

nn = input('Digite un número: ');


if nn > 5
sprintf('El número %d es mayor que 5.',nn)
elseif nn < 5
sprintf('El número %d es menor que 5.',nn)
else
sprintf('El número %d igual a 5.',nn)
end

%% Modifique el programa para que incluya los colores secundarios (amarillo,


magenta, cyan)

clc, clear, clear all


nn = input('Digite un color: ','s');
switch lower(nn)
case 'rojo'
strcat(nn,' es un color primario.')
case 'azul'
strcat(nn,' es un color primario.')
case 'verde'
strcat(nn,' es un color primario.')
case 'amarillo'
strcat(nn,' es un color secundiario.')
case 'magenta'
strcat(nn,' es un color secundiario.')
case 'cyan'
strcat(nn,' es un color secundiario.')
otherwise
strcat(nn,' NO es un color primario ni secundario.')
end

%% CICLO FOR

%% Ejemplo: Generar un vector con los primeros n números naturales


clc, clear, clear all
nn = input('Digite un número natural: ');
for i = 1:nn
mat(1,i) = i
end
mat

%% Dado un número n calcule la suma de ellos (comparar con el comando sum(1:n))


clc, clear, clear all
nn = input('Digite un número natural: ');
for i = 1:nn
mat(1,i) = i
end
x=sum(mat)

%% CICLO WHILE - ejemplo del taller. Generar un vector con los primeros n números
naturales.

clc, clear, clear all


nn = input('Digite un número natural: ');
i = 1;
while i <= nn
mat(1,i) = i;
i = i+1 ; % Contador
end
mat

%% Dado un número n calcule la suma de ellos (comparar con el comando sum(1:n)).


clc, clear, clear all

nn = input('Digite un número natural: ');


i = 1;
while i <= nn
mat(1,i) = i;
i = i+1 ; % Contador
end
disp('muestre el vector')
x=sum(mat)

%% EjERCICIOS TALLER

%% 1. Realice un algoritmo que ordene de menor a mayor tres números ingresados por
el usuario

clc, clear, clear all

A = input('Digite el primer número: ');


B = input('Digite el segundo número: ');
C = input('Digite el tercer número: ');

if A>B & A>C & B>C


fprintf('Los valores de menor a mayor son: %d, %d, %d',C, B, A)
elseif A>B & A>C & C>B
fprintf('Los valores de mayor a menor son: %d, %d, %d',B, C, A)
elseif B>A & B>C & A>C
fprintf('Los valores de mayor a menor son: %d, %d, %d',C, A, B)
elseif B>A & B>C & C>A
fprintf('Los valores de mayor a menor son: %d, %d, %d',A, C, B)
elseif C>A & C>B & A>B
fprintf('Los valores de mayor a menor son: %d, %d, %d',B, A, C)
elseif C>A & C>B & B>A
fprintf('Los valores de mayor a menor son: %d, %d, %d',A, B, C)
else
fprintf('Todos los valores son iguales')
end

%% 2. Diseñe el algoritmo del programa que permita resolver la ecuación de segundo


grado.

clc, clear, clear all

%% 3. Escriba un script que evalue si el número digitado por el usuario es positivo


o negativo. Además debe mostrar un mensaje especificándolo
clc, clear, clear all

A = input('Digite el primer número: ');

if A>0;
fprintf('El número registrado es positivo')
elseif A<0;
fprintf('El número registrado es negativo')
else A=0;
fprintf('El número registrado es cero')
end

%% 4. Escriba un algoritmo que le pregunte al usuario con cual tipo de carga quiere
que se analice una viga simplemente apoyada.

clc, clear, clear all

choice= menu('Que tipo de carga desear emplear: ', 'A. Puntual en el centro de la
luz', 'B. distribuida en el centro de la luz');

%A. Puntual en el centro de la luz


if choice==1;
P= input ('Digite valor de la carga [Ton]: ');
L= input ('Digite longitud entre apoyos [m]: ');

for h=[Link]L;
i = 1;

while i <= (L/2) +1


V1(1,i) = P/2;
i = i+1 ; % Contador
end
V1;
h1=[Link]L/2;
subplot (2, 1, 1)
plot(h1, V1, '-r')

i = 1;
while i <= (L/2)+1
V2(1,i) = P/2-P;
i = i+1 ; % Contador
end
V2;
h2=L/[Link]L;
end

hold on

plot(h2, V2, '-r')

x1=[h1(1,end), h2(1,1)];
y1=[V1(1,end),V2(1,1)];
plot(x1,y1,'-r')

xlim([-1 L+1]);
ylim([(-P/2)-2 (P/2)+2]);
pbaspect([4 1 1]);

fprintf('R1= %d Ton \n',P*L/2 )


fprintf('R2= %d Ton \n',P*L/2 )

%Lineas de referencia
X1= [0 0];
Y1= [0 P/2];

plot(X1, Y1, '-r')


hold on
X2= [0 L];
Y2= [0 0];

plot(X2, Y2, '-r')


X3= [L L];
Y3= [0 -P/2];

plot(X3, Y3, '-r');

CortanteMaxima=plot(L/2, P*L/2,'b*');
legend([CortanteMaxima],{'Cortante Maxima'});

title('Diagrama de cortante')
xlabel('(m)')
ylabel('(Ton)')
hold off

% Diagrama de momento

Mx=[0 L L/2 0];


My=[0 0 (-P*L/4) 0];

subplot(2, 1, 2)
plot(Mx, My)
xlim([-1 L+1]);
ylim([(-P*L/4)-10 (P*L/4)+10]);
pbaspect([4 1 1]);

hold on
MomentoMaximo=plot(L/2, (-P*L/4),'r*');
legend([MomentoMaximo],{'Momento Máximo'});

Mmax= -P*L/4;
fprintf('Mmax= %d Ton-m \n',Mmax )

title('Diagrama de momento')
xlabel('(m)')
ylabel('(Ton-m)')
hold off

% Diagrama deflexión
%E=2188198 %(Ton/m2)
%I=
%y=-(P*(L^3))/(48*E*I)

% B. distribuida en el centro de la luz


elseif choice==2;

P= input ('Digite valor de la carga distribuida [Ton-m]: ');


L= input ('Digite longitud entre apoyos [m]: ');

%Cortante
Ry= P*L/2;
Vcx=[0 0 L/2];
Vcy=[0 Ry 0];
subplot(2, 1, 1)
plot(Vcx, Vcy, '-r');

fprintf('Ry1= %d Ton \n',P*L/2 )


fprintf('Ry2= %d Ton \n',P*L/2 )

Vcx=[L/2 L L];
Vcy=[0 -Ry 0];
hold on

plot(Vcx, Vcy, '-r')


xlim([-1 L+1]);

%axis([-1 L+1 Ry+5 -Ry-5])


%ylim([60 60]);%(P*L/2)+10
pbaspect([4 1 1]);

%Linea de referencia
x=[0 L];
y=[0 0];
plot(x, y, '-r')
title('Diagrama de cortante')
xlabel('(m)')
ylabel('(Ton)')

%Punto maximo de cortante


CortanteMaxima=plot(0, (P*L/2),'*b');
legend([CortanteMaxima],{'Cortante Máxima'});
hold off

% Diagrama de momento

i=0;
for i=[Link]L;
t(1,i+1)=i;
end
t;

x=0;
for x=[Link]L;
MA=((P*x)/2)*(L-x);
Ma(1, x+1)=MA;

end
Ma;

subplot(2, 1, 2)
plot(t, -Ma)
hold on
pbaspect([4 1 1]);
Mmax= -(P*L^2)/8;
fprintf('Mmax= %d Ton-m \n',Mmax )
MomentoMaximo=plot(L/2, Mmax,'r*');
legend([MomentoMaximo],{'Momento Máximo'});
xlim([-1 L+1]);
ylim([Mmax-10 10]);

%Linea referencia
x=[0 L];
y=[0 0];
plot(x, y, '-b')
title('Diagrama de momento')
xlabel('(m)')
ylabel('(Ton-m)')

end

%% 5. Escriba un algoritmo que lea del teclado un número entero y que compruebe si
es menor que 5

clc, clear, clear all

A = input('Digite un número: ');

while A~=5
A = input('Digite un número: ');
end
fprintf('El número registrado es 5')

%% 6. Pedir dos números e indicar cuál es el mayor de los dos números controlando
el caso de iguales.

clc, clear, clear all

A = input('Digite el primer número: ');


B = input('Digite el segundo número: ');

if A>B
fprintf('El número registrado %d es mayor a %d', A, B)
elseif B>A
fprintf('El número registrado %d es mayor a %d', B, A)
else A==B
fprintf('El número registrado %d es igual en ambos casos', A)
end

%% 7. Cómputo del factorial de un número n. Se creará una función para que se lea
desde teclado un número n y se imprima en pantalla el número y el factorial del
mismo.

clc, clear, clear all


A = input('Digite el número que desea calcular su factorial: ');

for i=1:A
mat(1, i)=i;
end
x=prod(mat);

fprintf('El factorial de %d es igual a %d', A, x)

%% 8. Serie de Fibonacci (0, 1, 1, 2, 3, 5, 8, … ). Se debe crear una función


para que se genere la serie de Fibonacci para los primeros n números mediante un
for. Además se debe graficar n vs. la serie.

clc, clear, clear all

n = input('Digite el número limite de la serie de Fibonacci: ');

A=zeros(1, n)

A(2)=1
A(3)=1

for i=[Link]n
A(i)= A(i-1)+A(i-2);
plot(i, A, 'r--*', 'linewidth', 5);
hold on
end

fprintf('La serie de fibonacci de los primeros %d valores es = ', n)


disp(A)

%% 9. Serie de Fibonacci (0, 1, 1, 2, 3, 5, 8, … ). Se debe crear una función


para que se genere la serie de Fibonacci para los primeros n números mediante un
while. Además se debe graficar n vs. la serie.

clc, clear, clear all

n = input('Digite el número limite de la serie de Fibonacci: ');

A=zeros(1, n);

A(2)=1;
A(3)=1;
i=4;
while i<=n
A(i)= A(i-1)+A(i-2);
i=i+1 %contador
plot(i, A, 'b--+', 'linewidth', 5);
hold on
end

fprintf('La serie de fibonacci de los primeros %d valores es = ', n)


disp(A)
%% 10. Ordenamiento de un arreglo de manera ascendente empleando el algoritmo de
“ordenamiento tipo burbuja”. Para iniciar con este programa se sugiere utilizar un
arreglo con los siguientes valores en este mismo orden: [9 3 18 25 4 0 17 18 35 6].
El script se debe llamar ascendente.

clc, clear, clear all

V= [9 3 18 25 4 0 17 18 35 6];
disp('El vector')
disp(V);

n=length(V);
for A=[Link]n-1;
for B=[Link]n-1;
if V(B)>V(B+1);
temp=V(B);
V(B)=V(B+1);
V(B+1)=temp;
end
end
end

disp('Tiene como secuencia ascendente')


disp(V)

%% 11. Búsqueda de un elemento en un arreglo. Basado en un arreglo ordenado de


manera ascendente, se debe buscar uno de sus elementos y se imprime la posición en
la que se localiza si está incluido en el arreglo. Se usará el algoritmo de
búsqueda binaria para tal fin

clc, clear, clear all


I= 1;
F= 10;
V= [0 3 4 6 9 17 18 18 25 35];
A= false;
disp('Sea el vector: ')
disp(V)

X= input('Ingrese alguno de los valores dados: ')


while (~A&&I <= F)
mitad=int32((I+F)/2);
if (X== V(mitad))
A= true;
else if (X< V(mitad));
F= mitad-1;
else I= mitad+1;
end
end
end

if(A)
fprintf('el valor registrado está en la posición %d', mitad)
else
disp('El dato no se encuentra')
end

También podría gustarte