Вы находитесь на странице: 1из 20

Este algoritmo calcula el log de números mayores a cero

n=0 ;
while (n<10)
n=n+1 ;
a=input ( ' Ingrese un valor mayor que 0 : ' ) ;
if (a<=0)
disp ( ' Debe ingresar un número positivo ' )
disp ( ' Intente de nuevo ' )
continue
end
disp( ' El log natural de este número es:' )
disp(log(a))
end

n=0 ;
while (n<10)
n=n+1 ;
a=input ( ' Ingrese un valor mayor que 0 : ' ) ;
if (a<=0)
disp ( ' Debe ingresar un número positivo ' )
disp ( ' Este programa terminará ' )
break
end
disp( ' El log natural de este número es:' )
disp(log(a))
end

Como ejemplo calcularemos el mayor número factorial que no esceda a 10100:

n=1;

while prod(1:n)<1.e100,

n=n+1;

end,

n
Utilice un bucle while para calcular factorial(10).

n = 10;
f = n;
while n > 1
n = n-1;
f = f*n;
end
disp(['n! = ' num2str(f)])
Ejercicio 1: Mostrar los números del 1 al 10 en forma ascendente, diseñar el algoritmo
tanto con la estructura while como la for.

a) Con while
disp('Numeros del 1 al 10 ascendente')
numero = 1;
while numero <= 10
disp(numero)
numero = numero + 1; % contador que incrementa el numero
inicial
end
disp('Fin del ejercicio')

b) Con for
c) disp('Numeros del 1 al 10 ascendente')
d) for numero = 1 : 1 : 10
e) disp(numero)
f) end
g) disp('Fin del ejercicio')

Ejercicio 2: Mostrar los números del 1 al 10 en forma descendente, diseñar el algoritmo


tanto con la estructura while como la for.
A) Con while
B) disp('Numeros del 1 al 10 descendente')
C) numero = 10;
D) while numero >= 1
E) disp(numero)
F) numero = numero - 1; % contador que decrementa el numero inicial
G) end
H) disp('Fin del ejercicio')

B) disp('Numeros del 1 al 10 descendente')


for numero = 10 : -1 : 1
disp(numero)
end
disp('Fin del ejercicio')

Ejercicio 3: Mostrar los números del 1 al 10 en forma descendente pero solo


impares, diseñar el algoritmo tanto con la estructura while como la for.
a) Con while
b) disp('Numeros del 1 al 10 descendente solo impares')
c) numero = 10;
d) while numero >= 1
e) if mod(numero, 2) ~= 0
f) disp(numero)
g) end
h) numero = numero - 1; % contador que decrementa el numero inicial
i) end
j) disp('Fin del ejercicio')

con for
b) disp('Numeros del 1 al 10 descendente solo impares')
c)for numero = 10 : -1 : 1
d)if mod(numero, 2) ~= 0
e) disp(numero)
f) end
g) end
h) disp('Fin del ejercicio')

Mostrar los productos del 1 al 10 de la tabla de multiplicar del número 5, ejemplo de


salida:

a) disp('Tabla de multiplicar del número 5')


b) resultado = 0;
c) tabla = 5;
d) for numero = 1 : 10
e) resultado = tabla * numero;
f) disp(fprintf('%d x %d = %d', tabla, numero, resultado'))
g) end
h) disp('Fin del ejercicio...')

Ejercicio 5: Mostrar las tablas de multiplicar del 1 al 10 por pantallazos


a) disp('Tablas de multiplicar del 1 al 10')
b) resultado = 0;
c) for tabla = 1 : 10
d) disp(fprintf('Tabla del número %d', tabla))
e) for numero = 1 : 10
f) resultado = tabla * numero;
g) disp(fprintf('%d x %d = %d', tabla, numero, resultado))
h) end
i) disp('Presione Enter para continuar')
j) pause % hace una pause y continúa con un Enter
k) clc
l) end
m) disp('Fin del ejercicio...')

Ejercicio 6: Mostrar la tabla de multiplicar de un número dado


a) disp('Tabla de multiplicar de un número ingresado')
b) Tabla = 0;
c) resultado = 0;
d) tabla = input('Número de la tabla a procesar:');
e) disp(' ')
f) for numero = 1 : 10
g) resultado = tabla * numero;
h) disp(fprintf('%d x %d = %d', tabla, numero, resultado))
i) end
j) disp(' ')
k) disp('Fin del ejercicio...')

Ejercicio 7: Diseñar un programa que permita calcular el factorial de un número dado


(n!)
a) Numero = 0;
b) factorial = 1;
c) numero = input ('Factorial del número: ');
d) for i = 1 : numero
e) factorial = factorial * i;
f) end
g) disp(fprintf('El factorial del número %d es %d', numero,
factorial))
h) disp('Fin del ejercicio...')

ejercicio 8: este algoritmo se le introducen valores numéricos y hasta


que se agrega un cero el programa se detiene y nos muestra la media
de esos números introducidos
a) % Descripcion: Programa que recoja números del usuario hasta que
se introduzca un 0 y despues devuelva la media de los números
introducidos.
b) % Fecha: 18102012
c) % Inicio
d) N=input('Dame un valor: ');
e) % Nombramos una variable que cuente el numero de veces que se
realiza el
f) % ciclo (contador)
g) c=1;
h) % Nombramos una variable pàra que se acumule n en cada ciclo
i) v=0;
j) while N~=0
k) c=c+1;
l) v=v+N;
m) N=input('Dame un valor: ');
n) end
o) % Calculamos la media y la imprimimos en pantalla
p) m=v/c;
q) disp('La media es: ')
r) disp(m)
s) % Fin
t) disp('Fin de programa')
ejercicio 10: este algoritmo determina si eres menor
, mayor o de la tercera edad según la edad que
introduzcas al programa.
a) %Descripcion: Progama que determine la edad de la persona
b) %Autor: Diego Viadero Lucas
c) %Fecha: 20121011
d) %0. Inicio
e) %1.Pedir un la edad y guardarlo en la variable A
f) A=input ('¿Cuantos años tienes?');
g) %2. Comparar si A<18, si lo es imprimir en pantalla que A
h) % es menor de 18 añor
i) if A<18
j) disp ('Es menor de edad')
k) %3. Comparar si A>=60, si lo es imprimir en pantalla que A
l) % es de la tercera edad
m) elseif A>=60
n) disp ('Es de la tercera edad')
o) elseif A<60
p) disp ('Es mayor de edad')
q) end
r) %4.imprimir en pantalla 'Fin de programa'
s) disp ('Fin de programa')
t) %5.Fin
Ejercicio 11: este algoritmo calcula las reaices de
una función cuadrática.
a) % Descripcion: programa que permite calcular raíces cuadráticas,
sin
b) % salir del programa, preguntándonos cuando queremos finalizar.
c) % 0.Inicio
d) % 1.Introducir coeficientes
e) a=input('Dame el valor del coeficiente que acompaña a x^2: ');
f) b=input('Dame el valor del coeficiente que acompaña a x: ');
g) c=input('Dame el valor del término independiente: ');
h) if (b*b-4*a*c)>0
i) R1=(-b+sqrt(b^2-4*a*c))/(2*a);
j) R2=(-b-sqrt(b^2-4*a*c))/(2*a);
k) disp('Las soluciones son')
l) disp(R1)
m) disp(R2)
n) else
o) i=sqrt(-1);
p) Ri1=(-b+sqrt(-(b^2-4*a*c))*i)/(2*a);
q) Ri2=(-b-sqrt(-(b^2-4*a*c))*i)/(2*a);
r) disp('Las soluciones son')
s) disp(Ri1)
t) disp(Ri2)
u) end
v) disp('Fin de programa')
*Hacer un programa que pida un numero y compruebe si ese numero es primo
(primo.m).

a) %Indica si es un numero primo


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
PROBLEMA N°2: Dado el siguiente vector, hacer un programa que indique en que
posiciones se encuentran los números negativos. • V=[1, 2, 25, -12, -8, 32, -4, 88, -7,-21 ]

a) % programa que imprime las posiciones con números negativos en


un vector
b) clc;
c) V=[1, 2, 25, -12, -8, 32, -4, 88, -7,-21 ];
d) i=1;
e) while (i<=length(V))
f) if(V(i)<0)
g) fprintf('En la posición %d hay un número negativo \n' , i )
h) end
i) i=i+1;
j) end

PROBLEMA N°3: Realizar un programa que calcule el factorial de un número N.

a) N=input ('dame un numero para multiplicar= ');


b) S=0 ;
c) %Dar un valor para que realice la multiplicacion en forma de
bucle
d) while S<=10
e) A=N*S;
f) disp (A)
g) S=S+1;
h) end
i) disp ('Fin de programa');
PROBLEMA N°4: Hacer un programa que recoja números del usuario hasta que se introduzca un 0
y después devuelva la media de los números introducidos.

a) contador=0;
b) n=input('Introduce un numero=');
c) sumatorio=0;
d) while(n~=0)
e) sumatorio=sumatorio+n;
f) contador=contador+1;
g) n=input('Intoduce un numero=');
h) end
i) med=sumatorio/contador;
j) fprintf('La media vale %f',med)

PROBLEMA N°7: Realizar un programa que sume una serie de números ingresados por el usuario.
Dicha suma se realizara cuando el usuario introduzca el número 0.

a) % programa que suma números mientras no sean 0


b) n=1;
c) sumatoria=0;
d) while(n ~= 0)
e) n=input('ingrese un número, para terminar digite 0:');
f) sumatoria=sumatoria + n;
g) end
h) disp('la suma de los numeros ingresados es :')
i) disp(sumatoria);

PROBLEMA N°5: Hacer un programa que pida un número hasta que este número sea mayor
que 0 indicando con un mensaje que el número introducido es mayor que 0.Caso contrario
que pida reintroducir otro valor.
a) n=input('Dame un valor: ');
b) if n>0
c) disp ('El numero introducido es mayor que cero')
d) else
e) while n<=0
f) n=input('Reintroduce el valor correcto: ');
g) end
h) disp('El numero introducido es mayor que cero')
i) end
j) disp('Fin del programa')
12: este algoritmo permite introducir valores y este calcula si el numero
introducido es menor o mayor a 10.
a) i=input('Escribe un numero ');
b) if i>10
c) disp('Es mayor que 10')
d) elseif i==10
e) disp('Es igual a 10')
f) else
g) disp('Es menor que 10')
h) end
13; este algoritmo permite introducir la edad de un usuario y por medio de
esa le asignara un tipo de licencia mientras estos tenga una edad mayor o
igual a 16 años.
a) age = input('Ingrese su edad: ') ;
b) if age<16
c) disp('no ni vergas puto')
d) elseif age<18
e) disp('Puede obtener un permiso provisional para conducir')
f) elseif age<70
g) disp('Puede obtener una licencia estándar')
h) else
i) disp('Los mayores de 70 requieren una licencia especial ')
j) end
14: algoritmo calcula el costo de un boleto según sea la ciudad de destino.
a) ciudad = input('Ingrese el nombre de una ciudad entre comillas
simples: ');
b) switch ciudad
c) case 'Veracruz'
d) disp('Costo del boleto: $345 ')
e) case 'Puebla'
f) disp('Costo del boleto: $150')
g) case 'Oaxaca'
h) disp('Costo del boleto: $100')
i) otherwise
j) disp('No hay servicio de transporte a esa ciudad.')
k) end

segunda norma euclediana


a) function[norma , suma]= norma2(~)
b) %obtener la 2da norma euclediana del vector 'x'
c) x=[4 5 2 8 -4 6 10 1 -3 12 -5];
d) suma=0;
e) for i=1:length(x)
f) suma=suma+x(i)^2;
g) end
h) norma=sqrt(suma);
segunda norma euclediana en scritp
a) % obtener la 2da norma euclediana del vector 'x'
b) suma=0;
c) for i=1:length(x)
d) suma=suma+x(i)^2;
e) end
f) suma;
g) norma=sqrt(suma);

suma =

440

>> norma

norma =

20.9762

a) calcula las raíces de una función cuadratica

function [r1,r2]=comprobar_raices(a,b,c)
x1=calcula_raiz1(a,b,c);
x2=calcula_raiz2(a,b,c);
r1=x1+x2;
r2=x1*x2;
end

function raiz=calcula_raiz1(a,b,c)
raiz=(-b+sqrt(b*b-4*a*c))/(2*a);
end
[b_a,c_a]=comprobar_raices(1,-1,-6)

Calcular la media y desviación estándar de un vector de datos


a) function [med,des]=estadistica_1(x)
b) n=length(x);
c) media;
d) desviacion;
e) %calcula la media del vector de datos
f) function media
g) med=sum(x)/n;
h) end
i) %calcula la desviación estándar
j) function desviacion
k) xd=x-med;
l) xd_suma=sum(xd.^2);
m) des=sqrt(xd_suma)/(n-1);
n) end
o) end
[med,des]= estadistica_1([1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77])

El siguiente algoritmo recibe un número arbitrario de pares de datos en la forma de


una matriz de 2*n, donde las abcisas se encuentran en la primera fila (o renglón) y
las ordenadas en la segunda fila de la matriz, devolviendo la pendiente m y el
intercepto b de la recta que interpola a los datos y además entrega su gráfica:

function [m,b]=mincuadlin(X)
n=length(X(1,:));
A=0;
B=0;
C=0;
D=0;

for i=1:n;
A=A+X(1,i);
B=B+X(2,i);
C=C+(X(1,i))^2;
D=D+X(1,i)*X(2,i);
end

m=(n*D-A*B)/(n*C-A^2);
b=(C*B-D*A)/(n*C-A^2);
for i=1:n;
hold on;
plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
end

x=X(1,1):1:X(1,n);
y=m*x+b;
plot(x,y,'b');
title('Aproximación lineal por mínimos cuadrados.');

Por ejemplo, para los datos {(1,0),(2,3),(3,4),(4,-6),(5,2),(6,4),(7,0),(8,4),(9,3)}, se


escribe en el Command Window:

>>X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
>>[m,b]=mincuadlin(X)

Y el programa entrega los resultados:

m = 0.2833
b = 0.1389
algorirmo para calcular si un numero es par o impar

a) a=input('Escriba un número: ');

if rem(a,2)==0
disp('El número es Par')
else
disp('El número es Impar')
end

algoritmo para calcular cual numero es mayor de un


conjunto de datos aleatorios
a) A = fix(100 * rand(1));
b) B = fix(100 * rand(1));
c) C = fix(100 * rand(1));
d) disp(A), disp(B), disp(C);
e) if (A>B) && (A>C)
f) disp('El mayor es el A');
g) elseif (B>A) && (B>C)
h) disp('El mayor es el B');
i) else
j) end
k)
Media y desviación estándar de un conjunto de datos
La definición de media y desviación estándar es la siguiente

<x>=n∑1xinσ=

⎷ n∑1(xi−x)2n−1 <x>=∑1nxin σ=∑1n(xi−x)2n−1

Creamos una función denominada estadistica a la que se le pasa un vector x de


datos y devuelve la media med y la desviación, des, y la guardamos en un fichero
con el mismo nombre que la función

function [med,des]=estadistica(x)
n=length(x);
med=sum(x)/n;
des=sqrt(sum((x-med).^2/(n-1)));
end

 La función sum calcula la suma de los elementos de un vector x


 La función length, calcula el número de elementos del vector x.

Calcular la media y la desviación estándar de la altura de los 10 alumnos de una


clase:
1.65, 1.82, 1.72, 1.75, 1.73, 1.85, 1.90, 1.74, 1.76, 1.77.

Escribimos el nombre de la función estadistica en la ventana de comandos y le


pasamos el vector de datos

>> [media, desviacion]=


estadistica([1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77])
media = 1.7690
desviacion = 0.0713
MATLAB dispone de dos funciones que calculan la media mean y la desviación
estándar, std.

>> x=[1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77];
>> mean(x)
ans = 1.7690
>> std(x)
ans = 0.0713
a) multiplicación rusa

Bucles iterativos

Uno de los procesos más comunes en la programación es realizar una tarea una cantidad "n" de
veces. Por ejemplo, imaginemos que queremos sumar los números enteros que hay entre el 1 y el
1000, podemos sumar el 1 con el siguiente, el 2, luego al resultado le sumamos el siguiente número,
el 3, al resultado le sumamos el siguiente, el 4, etc. Para esto disponemos de los bucles iterativos. El
diagrama para un bloque iterativo típico es el siguiente:
Se trata de colocar una condición que dependa de un parámetro (por ejemplo "i"), mientras que
la Condición sea cierta se ejecuta una vez (primera iteración) el bloque de Comandos indicado, a
continuación el flujo del programa vuelve una segunda vez (segunda iteración)a comprobar
la Condición, y si ésta sigue siendo cierta ejecuta nuevamente Comandos, y lo vuelve a ejecutar una
y otra vez mientras la condición sea verdadera. Sólo en el caso de que la condición sea falsa el flujo
salta el bloque de comandos y sigue con el resto del programa.

Por supuesto, tenemos que tener cuidado y no colocar una condición verdadera "per se", como
podría ser: 2 < 5, pues entonces habríamos metido al programa en un bucle sin fin, algo que si nos
ocurriera deberíamos interrumpir el programa. Matlab dispone de dos posibilidades equivalentes
para realizar esta acción, son el bucle while y el bucle for.

* Bucle "while": La estructura de un bucle "while" es la siguiente:

while condición
comandos;
end
Siendo la condición algo así como: i < 100, por ejemplo, lo que obliga al programa a recorrer el
ciclo 99 veces, siempre que tengamos la doble precaución de: a) colocar antesdel bucle la variable
iterativa "i" con un valor inicial de 1; b) colocar dentro del bucle while el comando, i = i + 1, que
nos asegura que la iteración va recorriendo los valores desde el 1 hasta el 99. En el momento de que
"i" pasa a tener el valor de 100, la condición deja ya de cumplirse y el bucle finaliza.

Un ejemplo simple es el siguiente:

Este bucle nos mostraría en pantalla todos los números pares que hay entre el 1 y el 200.
* Bucles "for" anidados:
Se pueden colocar dos, o incluso más, ciclos for, unos en el interior de otros, lo cual es
muy útil en la programación. La estructura de dos ciclos for, por ejemplo, es:

for i = rango_numérico1
for i = rango_numérico2
comandos;
end ;
end;

Como ejemplo, supongamos que tenemos una matriz A de orden (3x5)

De esta manera asignaríamos a la variable A la matriz:

0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2

El orden en que discurren los valores de "i" y los de "j" es el siguiente:


Es decir, por cada paso que da el bucle externo (el "i" en este caso) se completa el bucle
interno (el "j" en este caso).

Operadores relacionales:

< Menor

<= Menor o igual

>= Mayor o igual

> Mayor

== Igualdad

~= Desigualdad

Grafica sofisticada

a) >> t=0:0.001:0.009;
b) v=900:1025;
c) [T V]=meshgrid(t,v);
d) aux1=16*pi^2*(T.^2).*((V-918).^2).*((V-1011).^2);
e) aux2=aux1+(2*V-1929).^2;
f) w=T./aux2;
g) z=35000000*w;
h) surfl(t,v,z) % Dibuja la superficie creada mediante las órdenes anteriores.
i) shading interp % Este comando y el siguiente sirven para modificar el dibujo obtenido.
j) colormap(pink)
k) rotate3d % Sirve para girar la figura mediante el ratón.
l) Ejemplo 1: Calcular la suma de los n primeros términos de la sucesión 1,
2x, 3x^2, 4x^3, ...
m) n=input('¿Cuántos términos quieres sumar? ');
x=input('Dame el valor del numero x ');
suma=1;
for i=2:n
suma=suma+i*x^(i-1);
end
disp('El valor pedido es')
disp(suma)
n) Ejemplo 2: Decidir si un número natural es primo.

Ejemplo 2: Decidir si un número natural es primo.


o) n=input('Número natural que deseas saber si es primo ');
i=2;
primo=1;
while i<=sqrt(n)
if rem(n,i)==0 % Resto de dividir n entre i
primo=0;
break
end
i=i+1;
end
if primo
disp('El número dado es primo.')
else
disp('El número dado no es primo.')
disp('De hecho, es divisible por:')
disp(i)
end

La entrada y la salida puede ser una o varias variables, cada una de ellas puede
ser un escalar, un vector o una matriz de cualquier tamaño.
Definición de una función
Las funciones se crean del mismo modo que un script seleccionado en el
menú New/Function y se guardan en un fichero que tiene el mismo nombre que
la función y extensión .m

La primera línea en el editor es la definición de la función que comienza con la


palabra clave function

function variables_salida=nombre_funcion(variables_entrada)
sentencias
end

 nombre_funcion, es el nombre significativo que se le asigna a la función y


coincide con el nombre del fichero de extensión .m en el que se guarda el
código de dicha función. Las reglas para nombrar un función son las mismas
que para las variables, los nombres no deben de incluir espacios, ni se
pueden utilizar plabras reservadas por MATLAB.
 variables_entrada, es el conjunto de parámetros que se le pasa a la función.
Los nombres de las variables van entre paréntesis y separadas por coma.
 variabales_salida, es el valor o conjunto de valores de las variables
devueltos por la función. Las variables de salida van después de la palabra
reservada function entre corchetes cuadrados y separados por comas si hay
varios.
 sentencias, líneas de código que tomando los valores de los parámetros de
entrada calculan mediante expresiones los valores que devuelve la función.
 end, marca el final de la función es opcional (salvo en las funciones
anidadas) pero es conveniente acostumbrarse a ponerlo al finalizar la
función.

Opcionalmente, en la segunda línea se pone un comentario, en el que se explica la


tarea que realiza la función. A continuación, una explicación detallada sobre las
variables de entrada y de salida

 Cuando una función no devuelve ningún valor, se define

function nombre_funcion(variables_entrada)
 Cuando una funcion no precisa de variables de entrada se define

function variables_salida=nombre_funcion

 Cuando una función devuelve una solo resultado y se puede escribir, de dos
maneras

function [y]=nombre_funcion(a,b,c) function y=nombre_funcion(a,b,c)

 En general, definiremos una función del siguiente modo:

function [y1,y2]=nombre_funcion(a,b,c)

con tres argumentos a, b y c variables de entrada y que devuelve dos


resultados en las variables y1 e y2.

Una función se llama del mismo modo que las funciones predefinidas. Las
funciones se pueden llamar desde la ventana de comandos, desde un fichero script
o desde otra función.

Todas las variables en una función son locales a dicha función, incluyendo las de
entrada y las de salida.

Vamos a ver unos cuantos ejemplos en esta página de funciones.

Ejemplos

Suma de dos números


Empezaremos por una función suma que realiza la siguiente tarea, suma de dos
números x e y y devuelve la suma z=x+y

Definición de la función

function [z] = suma (x,y)


%Esta función suma dos números x e y
%y devuelve el resultado de la suma en z

z=x+y; %efectúa la suma


end
A la función suma se le pasan dos datos en las variables x e y, y devuelve el
resultado en la variable z.

La función se guarda en un fichero

El fichero que guarda la función tiene el mismo nombre que la función, tal como
vemos al seleccionar en el Editor File/Save as...
Llamada a la función

La llamada a la función se puede hacer desde la ventana de comandos

>> suma(2,3)
ans = 5

Вам также может понравиться