Está en la página 1de 6

La sentencia if

La sentencia if, acta como cabra esperar. Si la condicin es verdadera, la


sentencia se ejecuta, de otro modo, se salta dicha sentencia, continuando la
ejecucin del programa con otras sentencias a continuacin de sta. La
forma general de la sentencia if es:
if condicion
sentencias
end

Ejemplos

if a < b
if a >= 3
if b ~= 0
if (x>=2) & (x<10)

La sentencia if...else

La sentencia if...else completa la sentencia if, para realizar una accin


alternativa
if condicion
sentencias_1
else
sentencias_2
end

Las dos primeras lneas indican que si la condicin es verdadera se ejecuta


las sentencias 1. La palabra clave else, significa que si la condicin no es
verdadera se ejecuta las sentencias 2, tal como se ve en la figura.
Definicin de funciones
La funcin que calcula el signo de un nmero se define de la siguiente
forma: sign(x) devuelve -1 si x es menor que 0, 1 si x es mayor que 0, y 0
en el otro caso. Creamos nuestra propia funcin que
denominaremos signo(x)que se comporta igual que la funcin
MATLAB sgn(x)
Creamos una funcion denominada signo, a la que se le pasa un escalar
como argumento en su parmetro x y devuelve 1, 0 -1. La guardamos en
el fichero signo.m
function sgn = signo(x)
if x > 0
sgn = 1;
elseif x < 0
sgn = -1;
else
sgn = 0;
end
end

Probamos la funcin signo en la ventana de comandos

>> signo(-2)
ans = -1
>> signo(0)
ans = 0
>> signo(4)
ans = 1

Definimos la siguiente funcin


f(x)=0x<0x0x12x1<x20
x>2f(x)={0x<0x0x12x1<x20x>2

Vamos a trasladar la definicin matemtica a cdigo,escribiendo en el


editor de funciones
function y=f(x)
if x>=0 & x<=1
y=x;
elseif x>1 & x<=2
y=2-x;
else
y=0;
end
end

Probamos la funcin en la ventana de comandos


>> f(-1)
ans = 0
>> f(0.5)
ans = 0.5000
>> f(1.8)
ans = 0.2000

Sistemas de ecuaciones lineales


En la pgina Matrices consideramos un sistema de ecuaciones lineales que
podemos escribir Ax=b, donde A es una matriz de
dimensin mn, y x y b son dos vectores columna de
longitudes n y m respectivamente. Tenemos un sistema de m ecuaciones
con n incgnitas.
1.

El sistema tiene solucin si y solo si el rango de la matriz A es igual al


rango de la matriz aumentanda A|b.

2.

Si el rango es igual al nmero n de incgnitas el sistema tiene una


solucin nica.

3.

Si el rango es menor que el nmero n de incgnitas entonces hay un


nmero infinito de soluciones

Vamos a escribir una funcin denominada sistema_ecuaciones, al cual le


pasamos las matrices A y b y nos imprime un mensaje si el sistema de

ecuaciones no tiene solucin o hay un nmero infinito de soluciones y nos


devuelve la solucin si es nica.
function x =sistema_ecuaciones(A,b)
rango_A=rank(A);
rango_Ab=rank([A b]);
[m,n]=size(A);
fprintf('Sistema de %i ecuaciones con %i incgnitas\n',m,n);
if rango_A~=rango_Ab
disp('El sistema no tiene solucin')
elseif rango_A==n
disp('Hay una solucin nica')
x=A\b;
elseif rango_A<n
disp('Hay infinitas soluciones');
end
end

En la ventana de comandos probamos la funcin sistema_ecuaciones, con


los mismos ejemplos utilizados en la pgina Matrices.

WHILE
La sentencia while (mientras que) se usa para que MATLAB repita un bloque
de instrucciones mientras que se cumpla una condicin dada, la cual es
evaluada cada que se termina la ultima instruccin del bloque.
while condicin
Bloque de instrucciones que se repiten mientras se cumpla la condicin.
End

Bucle for
< Matlab

La sentencia for repite un conjunto de sentencias un nmero predeterminado de veces. La


sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de
C/C++/Java. La siguiente construccin ejecuta sentencias con valores de i de 1 a n,
variando de uno en uno.

for i=1:n
sentencias
end

o bien,

for i=vectorValores
sentencias
end

donde vectorValores es un vector con los distintos valores que tomar la variable i. En el
siguiente ejemplo se presenta el caso ms general para la variable del bucle (valor_inicial:
incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va
reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se
termina:

for i=n:-0.2:1

sentencias
end

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados.


La variable j es la que vara ms rpidamente (por cada valor de i, j toma todos sus
posibles valores):

for i=1:m
for j=1:n
sentencias
end
end

Una ltima forma de inters del bucle for es la siguiente (A es una matriz):

for i=A
sentencias
end

en la que la variable i es un vector que va tomando en cada iteracin el valor de una de las
columnas de A. Cuando se introducen interactivamente en la lnea de comandos, los
bucles for se ejecutan slo despus de introducir la sentencia end que los completa.

También podría gustarte