Está en la página 1de 44

Programación en Matlab

Continuación
FUNCIONES
Una función 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 función seno.

Podemos tener funciones con dos, tres o más argumentos:

plot(x, y) ,

es una función interna que posee el Matlab para trazar gráficos


bidimensionales, que necesita de dos argumentos, uno para la
coordenada x, otro para la y.
Estructura de una función

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 más general

- function v1 = nombre(lista de argumentos)


 - function         nombre(lista de argumentos)
Funciones pre-construidas
Funciones trigonométricas:
  sin(x)
  cos(x)
  tan(x)
  asin(x)
  acos(x)
  atan(x)
  exp(x)
  log(x)
  log10(x)
 Funciones matemáticas 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 más próximo 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 raíz cuadrada de x.
VECTORES Y MATRICES
Matrices: Una matriz es una tabla ordenada de números, 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:  5*A


 * Suma de matrices:    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 número 7:


De esta forma podemos operar con elementos específicos de una
matriz, o podemos, por ejemplo, cambiar un elemento de la
matriz A, asignándole un nuevo valor numérico.

Por ejemplo, si ahora ponemos


A(2, 3) = 6,
lo que hacemos es cambiar el 7 que había antes por el nuevo valor
de 6. Entonces la matriz A quedará modificada:
Vectores
Un vector fila de cinco componentes (por ejemplo), no es
más que una matriz de orden (1x5), mientras que un
vector columna de cinco componentes es una matriz de
orden (5x1).

Ejemplos de asignación:
Vector fila: v1 = [2 0 -3 5 -8].
  Vector columna: v2 = [2; 0; -3; 5; -8].
Rangos numéricos

Por rango numérico entendemos los valores numéricos


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 numérico 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:

Expresión Equivale a ... .

1: 0.5 :5 → 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 gráfico que


sirve para describir un algoritmo sin necesidad de
escribir el código de programación. 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.
Símbolos más comunes
Ejemplo 1:   Queremos construir un algoritmo para resolver
ecuaciones de segundo grado. Como sabemos, dado una
ecuación del tipo a x2 + b x + c = 0, las dos raíces vienen
expresadas por la fórmula:

Para que haya raíces reales la cantidad b2 - 4ac,


llamada "discriminante", debe ser positiva. 

Podemos diseñar un programa que tenga el


siguiente diagrama de flujo:
Forma de introducir datos iniciales
1. Por asignación directa de datos iniciales al comienzo
del programa.
Forma de introducir datos iniciales
2. Por medio de la instrucción “input” de asignación
diferida de datos.
variable = input(“mensaje de texto”);
En nuestro
ejemplo:
Bifurcaciones condicionales
Es muy común que necesitamos hacer una bifurcación condicional:
Si se cumple una condición hacer una cosa, si no se cumple hacer otra. 
Para ello colocaremos las llamadas "bifurcaciones", que las hay de tres
tipos:

-Bifurcación simple.
-Bifurcación completa.
-Bifurcación múltiple.
Bifurcación simple

if  (condición)
             comandos;
end;
Ejemplo:
Bifurcación completa

if  (condición)
             comandos(1);
else
comandos(2);

end;
EJEMPLO:
Bifurcación multiple

 if  (condición1)
                      comandos(1);
         elseif (condición2)
                       comandos(2);
else
                       comandos(3);
end;
EJEMPLO:
Forma de presentación de resultados finales o
intermedios.

1. Por medio del comando disp(), ya utilizado.


Colocando como argumento una frase o una
variable.
disp(‘la solución es = ‘);
disp(x);

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


Colocando como argumento una frase o una
variable.

fprintf('Dos raíces reales: Raiz1 = %14.8f\n', Raiz1);


fprintf(' Raiz2 = %14.8g\n', Raiz2);
Ejecución del programa cuadratica.m (con el disp)
Ejecución del programa cuadratica.m (con el fprintf)
Bucles iterativos
Sirven para realizar una tarea –de forma repetitiva - una cantidad "n"
de veces (Mientras la condición , dependiente de un parámetro, sea
verdad)

-Bucle while
-Bucle for
(ambos son equivalentes)
Bucle while

while condición
comandos;
end              

Como condición podemos poner p. ejemp.: i < 100 .

Siempre debemos tener la doble precaución:


a) Inicializar (i = 1) el parámetro ántes del bucle.
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.      
Un ejemplo:

Este bucle obtiene el “valor doble” de todos los


números entre 1 y 99.
Bucle for

for  i = rango_numérico
comandos;
end                              

La condición es el rango numérico 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 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  j = rango_numérico2
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