Está en la página 1de 44

Programacin en Matlab

Continuacin

FUNCIONES
Una funcin es un programa pero con la particularidad,
necesita de uno o varios argumentos de entrada.

sin(x) , cos(x), tan(x)


x es el argumento de la funcin seno.
Podemos tener funciones con dos, tres o ms argumentos:
plot(x, y) ,
es una funcin interna que posee el Matlab para trazar grficos
bidimensionales, que necesita de dos argumentos, uno para la
coordenada x, otro para la y.

Estructura de una funcin

function [v1, v2] = nombre(x, y, z)


INICIO
BLOQUE GENERAL
FINAL

EJEMPLO

Uso de asin2(x)

Estructura general de las funciones

function [ variables de retorno] = nombre(lista de argumentos)

Caso ms general

function v1 = nombre(lista de argumentos)


function
nombre(lista de argumentos)

Funciones pre-construidas
Funciones trigonomtricas:
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
exp(x)
log(x)
log10(x)
Funciones matemticas diversas:
abs(x)
: Retorna el valor absoluto de x.
fix(x)
: Retorna la parte entera de x.
rem(x,y) : Retorna el resto (remainder) de dividir x entre y.
round(x) : Redondea x al ms prximo entero.
sign(x)
: Retorna -1 si x es menor que 0, 0 si x es 0, +1 si x es mayor
que 0.
sqrt(x)
: Retorna la raz cuadrada de x.

VECTORES Y MATRICES
Matrices: Una matriz es una tabla ordenada de nmeros, por
ejemplo:

Para asignar a la variable "A" la matriz anterior, debemos poner en Matlab:

A = [2 0 5 8; 1 3 7 4; 6 9 0 2]

OPERACIONES TIPICAS
* Producto por un escalar:
* Suma de matrices:

5*A
A + B (siempre que en B haya almacenada
una matriz del mismo orden que A).
* Producto de matrices:
A * B (siempre que el orden de B sea el
adecuado).
Y para matrices cuadradas :
* Potencias de matrices cuadradas: C^3 (equivale a).
* Transpuesta de una matriz A: A'
* Inversa de una matriz A (si inversible): inv(A).
* Determinante de A:
det(A).

Elementos de una matriz:


Para referirnos a el elemento concreto de A que se halla
en la fila i, y columna j, pondremos:
A(i, j)
Por ejemplo, el elemento A(2, 3) es el nmero 7:

De esta forma podemos operar con elementos especficos de una


matriz, o podemos, por ejemplo, cambiar un elemento de la matriz
A, asignndole un nuevo valor numrico.

Por ejemplo, si ahora ponemos


A(2, 3) = 6,
lo que hacemos es cambiar el 7 que haba antes por el nuevo valor
de 6. Entonces la matriz A quedar modificada:

Vectores
Un vector fila de cinco componentes (por ejemplo), no es
ms que una matriz de orden (1x5), mientras que un
vector columna de cinco componentes es una matriz de
orden (5x1).
Ejemplos de asignacin:
Vector fila:
Vector columna:

v1 = [2 0 -3 5 -8].
v2 = [2; 0; -3; 5; -8].

Rangos numricos

Por rango numrico entendemos los valores numricos


comprendidos entre a y b, recorrido con un paso de p.

Por ejemplo, el rango entre 1 y 10 (con paso de 1) es:


1, 2, 3 , 4, 5, 6, 7, 8, 9, 10.

En Matlab un rango numrico se expresa as:


a: p : b
Equivale al rango que va desde a hasta b con un paso de p. Si
no expresamos el paso p, esto es a : b, equivale a un paso de 1.

Ejemplos:
Expresin

1: 0.5 :5

Equivale a

...

1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5. 5.

1 : 10 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
-1: 0.1: 1 -1, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1,
0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.

10: -1 : 1 10, 9, 8, 7, 6, 5, 4, 3, 2, 1.

Diagramas de flujo

Un diagrama de flujo es un esquema grfico que


sirve para describir un algoritmo sin necesidad de
escribir el cdigo de programacin. Su utilidad
fundamental es mostrar que el algoritmo que
tenemos previsto programar funciona .

Una vez que el diagrama de flujo es coherente,


podemos pasar a codificarlo en Matlab o en
cualquier otro lenguaje.

Smbolos ms comunes

Ejemplo 1: Queremos construir un algoritmo para resolver


ecuaciones de segundo grado. Como sabemos, dado una
ecuacin del tipo a x2 + b x + c = 0, las dos races vienen
expresadas por la frmula:

Para que haya races reales la cantidad b2 - 4ac,


llamada "discriminante", debe ser positiva.

Podemos disear un programa que tenga el


siguiente diagrama de flujo:

Forma de introducir datos iniciales


1. Por asignacin directa de datos iniciales al comienzo
del programa.

Forma de introducir datos iniciales


2. Por medio de la instruccin input de asignacin
diferida de datos.

variable = input(mensaje de texto);


En nuestro
ejemplo:

Bifurcaciones condicionales
Es muy comn que necesitamos hacer una bifurcacin condicional:
Si se cumple una condicin hacer una cosa, si no se cumple hacer otra.
Para ello colocaremos las llamadas "bifurcaciones", que las hay de tres
tipos:

-Bifurcacin simple.
-Bifurcacin completa.
-Bifurcacin mltiple.

Bifurcacin simple

if (condicin)
comandos;
end;

Ejemplo:

Bifurcacin completa

if (condicin)
comandos(1);

else
comandos(2);
end;

EJEMPLO:

Bifurcacin multiple

if (condicin1)
comandos(1);
elseif (condicin2)
comandos(2);
else
comandos(3);
end;

EJEMPLO:

Forma de presentacin de resultados finales o


intermedios.
1. Por medio del comando disp(), ya utilizado.
Colocando como argumento una frase o una
variable.
disp(la solucin es = );
disp(x);

2. Por medio del comando fprintf(), ya utilizado.


Colocando como argumento una frase o una
variable.
fprintf('Dos races reales: Raiz1 = %14.8f\n', Raiz1);
fprintf('
Raiz2 = %14.8g\n', Raiz2);

Ejecucin del programa cuadratica.m (con el disp)

Ejecucin del programa cuadratica.m (con el fprintf)

Bucles iterativos
Sirven para realizar una tarea de forma repetitiva - una cantidad "n"
de veces (Mientras la condicin , dependiente de un parmetro, sea
verdad)

-Bucle while
-Bucle for
(ambos son equivalentes)

Bucle while

while condicin
comandos;
end
Como condicin podemos poner p. ejemp.: i < 100 .
Siempre debemos tener la doble precaucin:
a) Inicializar (i = 1) el parmetro ntes del bucle.
b) colocar dentro del bucle while el comando, i = i + 1, que nos asegura
que la iteracin va recorriendo los valores desde el 1 hasta el 99.

Un ejemplo:

Este bucle obtiene el valor doble de todos los


nmeros entre 1 y 99.

Bucle for
for i = rango_numrico
comandos;
end

La condicin es el rango numrico que se ha de completar para


que el bucle termine, y pueden ser expresados rangos tales como:

1: 100,

1:0.2:1000,

-5:0.25:100,

Un ejemplo:

Bucles "for" anidados:


Se pueden colocar dos, o incluso ms, ciclos for, unos en el interior de otros,
lo cual es muy til en la programacin. La estructura de dos ciclos for, por
ejemplo, es:

for i = rango_numrico1
for j = rango_numrico2
comandos;
end ;
end;

EJEMPLO:
Supongamos la matriz: A = zeros(3, 5);
La siguiente secuencia:

Poduce el siguiente resultado:

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

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).

También podría gustarte