MatLab Ejercicios Bucles y Condicionales
MatLab Ejercicios Bucles y Condicionales
MatLab Ejercicios Bucles y Condicionales
que pida los coeficientes de una ecuacin de 3er grado y en funcin del discriminate
diga cuantas raices tiene y de que tipo son las raices (reales o complejas). Nota: No es
necesario calcular las raices
2. En base al programa anterior realizar un segundo programa
(EcuacionTercerGrado2.m), que pregunte si quiere continuar introduciendo
ecuaciones, y si es as que vuelva a preguntar por los coeficientes.
3. Realizar un programa (SucesionCondicional.m) que calcule los terminos de la
sucesion:
xn+1={a*xn si xn<1/2, a*(1-xn) si 1/2 <=xn}
preguntando por el valor incial x0 y el coeficiente a y el nmero de trminos. El valor
de a ha de ser mayor que cero y el de x0 ha de estar en el intervalo [0,1]
4. Realizar un programa (SucesionCondicional2.m), sume todos los terminos que se
muestren por pantalla en el ejercicio anterior, y clacule tambin su producto. La
suma y el producto se mostrar al final.
5. Realizar un programa (SucesionCondicional3.m) que que dir si la sucesin
converge a un valor si despus de 2 iteraciones seguidas, el valor no cambia, que
diverge si algn valor de la sucesin no es finito. Y desconocido, si despus de N
iteraciones la sucesin, ni converge, no diverge.
Soluciones bucles
Aqu os dejo las soluciones de los ejercicios de bucles
*Media.m
% Autor: Diego Viadero Lucas
% Descripcion: Programa que recoja nmeros del usuario hasta que se introduzca un 0 y
despus devuelva la media de los nmeros introducidos.
% Fecha: 18102012
% Inicio
n=input('Dame un valor: ')
% Nombramos una variable que cuente el numero de veces que se realiza el
% ciclo (contador)
c=1;
% Nombramos una variable pra que se acumule n en cada ciclo
v=0;
while n~=0
c=c+1;
v=v+n;
n=input('Dame un valor: ')
end
% Calculamos la media y la imprimimos en pantalla
m=v/c;
disp('La media es: ')
disp(m)
% Fin
disp('Fin de programa')
Bucles
Buenas en este post os mostrar como hacer bucles con Matlab
-Aqu os dejo un link en el cual os llevara a un PDF, en el que viene informacin de como
realiza un bucle:
https://dl-web.dropbox.com/get/Matlab/SentenciasDeControlBucles.pdf?w=ae7ca9a8
Los siguientes ejercios que os propongo son para practicar con los bucles con las
funciones if(condicones) y while (bucles)
Hacer un programa (media.m) que recoja nmeros del usuario hasta que se
introduzca un 0 y despus devuelva la media de los nmeros introducidos.
Hace un programa que pida un nmero hasta que este nmero sea mayor que cero,
indicando con un mensaje que el nmero introducido no es mayor de cero
(numeroCorrecto.m).
positivas o negativas
%0. Inicio
%1.Pedir un valor y guardarlo en la variable I
I=input ('Cuanto vale I?')
%2.Pedir un valor y guardarlo en la variable J
J=input ('Cuanto vale J?')
%3. Comparar si I>0
if I>0
if J>0
disp ('POSITIVOS')
elseif J<0
disp ('MEZCLADOS')
end
elseif I<0
disp ('NEGATIVO')
end
%4.imprimir en pantalla 'Fin de programa'
disp ('Fin de programa')
%5.Fin
-raices_2
%
Fecha: 20121011
% 0.Inicio
% 1.Introducir coeficientes
a=input('Dame el valor del coeficiente que acompaa a x^2: ')
b=input('Dame el valor del coeficiente que acompaa a x: ')
c=input('Dame el valor del trmino independiente: ')
if (b*b-4*a*c)>0
R1=(-b+sqrt(b^2-4*a*c))/(2*a)
R2=(-b-sqrt(b^2-4*a*c))/(2*a)
disp('Las soluciones son')
disp(R1)
disp(R2)
else
i=sqrt(-1)
Ri1=(-b+sqrt(-(b^2-4*a*c))*i)/(2*a)
Ri2=(-b-sqrt(-(b^2-4*a*c))*i)/(2*a)
disp('Las soluciones son')
disp(Ri1)
disp(Ri2)
end
disp('Fin de programa')
(La funcin sqrt se utiliza cuando queremos hacer un raiz de un numero)
Condicionales
Aqu os dejo una introduccin de como usar los condicionales en Matlab
Esta imagen son cuatro ejercicios para practicar las condicionales y ya subir las soluciones.
MAR
23
* Como vemos en ambos ejemplos podemos introducir valores que ya sabes o valores
que calculamos a lo largo del programa
Aqui os dejo un ejercio para que practiquis:
Realizar el siguiente programa sin usar mens. Ha de hacer cada los pasos que se indican y
terminar. Usar las operaciones entre vectores (./ .*) y funciones que calculan mximos o
sumas de vectores (sum, max) Realizar un programa llamado FormulaElectoral.mque:
1. Pida el nmero de representantes (escaos) disponibles
2. El nmero de listas (partidos polticos) candidatas
3. El nmero de votos por lista (partido) y que esta informacin la guarde en un vector
fila de tantas columnas como listas (partidos) haya. Para ello que imprima el
siguiente mensaje por pantalla para pedir el nmero de votos por lista (partido):
4. Dame el nmero de votos de la lista 1: 232123
5. Dame el nmero de votos de la lista 2: 3400322
...
6. Calcular el nmero de representantes (escaos) por lista (partido). Esta informacin
se guardar en un vector de tamao el numero de listas (partidos) existentes. Para
elaborar el clculo se inicializar el vector a ceros, y dentro de un bucle while que
iterar hasta el nmero de representantes (escaos) introducido en el punto 1).
En cada interacin calcular para cada lista (partido) el siguiente cociente:
Cociente=Votos/(Representates+1)
Cada cociente calculado para cada lista (partido) se guardar en un vector de tamao igual
al nmero de listas (partidos). De ese vector de cocientes se buscar cul es el mximo y la
posicin del mximo:
>> help max
Esta posicin ser la lista (partido) ganadora y se incrementar su nmero de
representantes (escaos) en una unidad.
7. Una vez obtenido el vector con los representantes (escaos) ganados por cada lista
(partido), imprimir los resultados por pantalla. La informacin se mostrar en formato
de tabla con todas sus columnas bien "alineadas". Cada fila mostrar la informacin
para cada lista (partido):
8. Partido 1: 232123 votos; 23.87% votos; 9 representantes; 21.98% representantes
MAY
9
Uso de funciones
A continuacin os voy a explicar como crear y usar una funcin.
La aplicacin de la funcin es la siguiente:
Hemos visto que MATLAB nos permite llamar a funciones para
llevar a cabo determinadas tareas o clculos, como por ejemplo:
a=input('Introduce un valor: ');
b=sqrt(a);
disp('su raiz cuadrada vale: ');
disp(b);
Bien pues ahora MATLAB nos va a permitir definir funciones propias para llevar a cabo otras
tareas o clculos, como por ejemplo:
function [a]=modulo(x,y)
a=sqrt(x^2+y^2);
[...]
disp('Su modulo vale: ');
disp(modulo(x,y));
Funciones de Usuario
[m]=modulo(x,y)
[d]=direccion(x,y)
[K]=convertirKelvinCentigrado(C)
[K]=convertirKelvinCentigrado(C)
[p]=esPrimo(n)
[cuota]=calcularCuotaMensual(capital,plazo,interes)
[A]=calcularArea(...)
[P]=calcularPerimetro(...)
Modularizacin de Programas
Definicin de Funcin
function [a]=modulo(x,y)
a=sqrt(x^2+y^2);
Pare hacer un programa con funciones es muy IMPORTANTE tener en cuenta los
siguientes puntos:
Las funciones tienen su propio fichero .m.
Lo primero para crear una funcin es crear un nuevo fichero .m.
La primera linea del fichero ha de ser la instruccin function
IMPORTANTE: asegurarse de que el nombre de la funcin es algo fcil de recordar.
Despus de crear la funcin hay que salvar el fichero .m
IMPORTANTE: El nombre del fichero tiene que ser el mismo que el nombre de la funcin
Las lineas de cdigo que se escriben a continuacin de la instruccin function se
denominan cuerpo de la funcin y contienen otras instrucciones MATLAB u otras funciones.
Es aqu donde todos los operaciones, o lgica de la funcin son escritos.
Una vez que sepamos estos puntos podemos empezar a escribir una funcion, una ayuda
para hacer las primeras funciones con matlba es la siguiente:
Cuando se escribe una funcin es importante determinar los argumentos/parmetros de
entrada y salida. Por tanto es una buena idea desarrollar un pequeo esquema en el
programa, para escribirlo lo ponemos como si fuese un comentario(%), como por ejemplo:
*Ejemplo del fichero modulo.m :
function [a]=modulo(x,y)
%a=modulo(x,y) : funcin que calcula el modulo de un vector
% a partir de sus coordenadas x e y.
%
% Argumentos de entrada:
% x: coordenada x del vector
% y: coordenada y del vector
%
% Argumentos de salida:
% m: modulo del vector
a=sqrt(x^2+y^2);
Una vez leido, comprendidos estos conceptos lo tendremos que poner en practica para
ellos os pongo a continuacion una serie de sencillos ejercicios que mas tarde subir
resueltos:
Ejercicios
Escribir una funcin, llamada miTriangulo a la cual le pasemos la longitud de los 3 lados y
devuelva el rea y permetro del triangulo usando la formula de Heron
Escribir una funcin en MATLAB que calcule el rea de un trapecio dados las longitudes de
los lados paralelos y la distancia entre ambos lados. La funcin se llamar areaTrapecio, y
tendr tres argumentos de entrada: lado1, lado2 y altura. Escribir tambin el script
asociado que pida la informacin necesaria y escriba el resultado por pantalla
El ndice de masa corporal (IMC) es una medida de asociacin entre el peso y la talla de un
individuo, utilizado para evaluar su estado nutricional, de acuerdo con los valores
propuestos por la Organizacin Mundial de la Salud. El IMC se calcula dividiendo el peso del
individuo (en kilogramos) por su altura (en metros) al cuadrado. El valor obtenido no es
constante, sino que vara con la edad y el sexo y tambin depende de otros factores, como
las proporciones de tejidos muscular y adiposo. Escribir una funcin (calculoIMC.m) que a
la que se le pase los valores correspondientes del peso del individuo y su altura como
argumentos de entrada y devuelva:
1. el valor de su IMC,
2. el valor de su categora como un a cadena de texto que sea 'Infrapeso' si IMC<19,
'Sobrepeso' son IMC>25 y 'Peso normal' si 19<=IMC<=25
3. y el valor de su peso ideal, que ser el peso correspondiente a un IMC=19 si su
categora es 'Infrapeso' o IMC=25 si su categora es 'Sobrepeso'
Hacer uso de la funcin dentro de un script (MenuIMC.m), que cree un men, con la
opciones: 1) Introducir peso (kg) 2) Introducir altura (cm) 3) Calcular IMC, Categora y Peso
Ideal 4) Mostrar resultados 5) Reiniciar Menu 0) Salir La opcin 3) slo estar disponible
cuando haya introducido el peso y la altura de forma correcta. La opcin 4) solo se activar
cuando se haya pulsado la opcin 3). La opcin 5) se activar cuando haya introducido un
valor vlido de altura o de peso. Si se selecciona la opcin 5) el men volver a su estado
incicial, como si no se hubiese introducido ni un valor para peso ni para altura. Los valores
para peso y altura solo sern vlidos si son mayores que cero. Si el usuario introduce un
valor no vlido, el programa volver a preguntar por el valor (sin pasar otra vez por el
men). Mostrar por pantalla el IMC con 2 decimales y 2 posiciones para la parte entera. Con
respecto al peso, usar 1 decimal y 3 posiciones para la parte entera. Mostar la altura en
centrimetros sin decimales y 3 caracteres.
MAY
9
h=0;
p=0;
hcargado=0;
pcargado=0;
end
end
CALCULO DE IMC
function [IMC,categoria,pideal]=calculoIMC(h,p)
%[Altura,Peso]=calculoIMC(h,p) : crear una funcion en la cual metiendo los
%valores de la altura y el peso nos calcula el indice de masa corporal de
%cada persona
%
% Argumentos de entrada:
%
h:altura de la persona
%
p: peso de la persona
%
% Argumentos de salida:
%
IMC: indice de masa corporal
%
pideal: el peso ideal para las persornas con infrapeso o sobrepeso
%
categoria: son los diferentes tipos de peso de cada persona
%
%Autor: Diego Viadero Lucas
%Fecha:20121213
%
%Calculamos el IMC
IMC = p/(h^2);
%Creamos un if para saber en funcion del resultado del IMC nos indique la
%categoria del peso de esa persona
if IMC>=19 && IMC<=25
categoria= 'Peso normal';
%Como las personas que esten en esta categoria ya estan en
%su peso ideal igualamos el peso que ha introducido la
%persona en la variable p a la variable pideal
pideal=p;
elseif IMC<19
categoria= 'Infrapeso';
%Calculamos el peso ideal para las personas con infrapeso
%calculamos cual seria su peso ideal sabiendo que el minimo
%IMC para tener un peso normal es 19
pideal=19*(h^2);
else
categoria='Sobrepeso';
%Calculamos el peso ideal para las personas con sobrepeso
%calculamos cual seria su peso ideal sabiendo que el maximo
%IMC para tener un peso normal es 25
pideal=25*(h^2);
end
Compartirlo en google +1 no cuesta nada ;)
AQUI OS DEJO ENLACES DE DESCARGA:
ENUNCIADO: https://www.dropbox.com/s/1kcrtdj0dvnc4lr/entregar%28IMC%29.png
MENU IMC: https://www.dropbox.com/s/x8zhzvmkpdspcxi/menuIMC.m
PROGRAMA IMC: https://www.dropbox.com/s/eianw0zyoxuhkfy/calculoIMC.m
MAY
9
JAN
19
NUEVOS EJERCICIOS
Hola buenos dias aqu os dejo algn ejercicio resuelto mas espero que os sirva de ayuda y
ya sabeis no cuesta nada compartir con google +1
end
end
if (f==29)
fprintf('el ao %d es bisiesto\n',a)
end
%Ahora compruebo que el mes este entre enero (1) y diciembre(12)
%y que cada mes contiene sus dias correspondientes
if(m==1)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('enero no tiene %d dias',d)
end
elseif(m==2)
if (d>=1 && d<=f)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('febrero no tiene %d dias',d)
end
elseif(m==3)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('marzo no tiene %d dias',d)
end
elseif(m==4)
if d>=1 && d<=30
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('abril no tiene %d dias',d)
end
elseif(m==5)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('mayo no tiene %d dias',d)
end
elseif(m==6)
if (d>=1 && d<=30)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('junio no tiene %d dias',d)
end
elseif(m==7)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y existe',d,m,a)
else
fprintf('julio no tiene %d dias',d)
end
elseif(m==8)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y
else
fprintf('agosto no tiene %d dias',d)
end
elseif(m==9)
if(d>=1 && d<=30)
fprintf('la fecha %d-%d-%d es correcta y
else
fprintf('septiembre no tiene %d dias',d)
end
elseif(m==10)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y
else
fprintf('octubre no tiene %d dias',d)
end
elseif(m==11)
if (d>=1 && d<=30)
fprintf('la fecha %d-%d-%d es correcta y
else
fprintf('nobiembre no tiene %d dias',d)
end
elseif(m==12)
if (d>=1 && d<=31)
fprintf('la fecha %d-%d-%d es correcta y
else
fprintf('ciciembre no tiene %d dias',d)
end
else
fprintf('el mes %d no existe',m)
end
end
end
existe',d,m,a)
existe',d,m,a)
existe',d,m,a)
existe',d,m,a)
existe',d,m,a)
contador=contador+1;
n=input('Intoduce un numero');
end
med=sumatorio/contador;
fprintf('La media vale %f',med)
%FIN
* Hacer un programa que pida un numero y vaya decrementando su valor en
una unidad hasta que llegue a cero (decremento.m).
%Cuenta atras hasta que llegue a cero
n=input('Introduce el numero');
while(n>0)
disp(n)
n=n-1;
end
disp(' 0')
*Hacer un programa que pida un numero y compruebe si ese numero es primo
(primo.m).
%Indica si es un numero primo
clc
clear all
n=input('Introduce el numero')
a=0;
contador=2;
while(contador~=n-1)
if(rem(n,contador)==0)
a=1;
%Aqui meteria un break para que si ya se demuestra que es no primo que se pare el
programa
break
end
contador=contador+1;
end
if(a==1)
disp('el numero no es primo')
else
disp('el numero es primo')
end
*Hace un programa que pida un numero hasta que este numero sea mayor que
cero, indicando con un mensaje que el numero introducido no es mayor de cero
(numeroCorrecto.m).
%Introduce un numero menor que cero sino escribe que es mayor que cero
n=input('introduce numero')
while(n<0 font="">