Algoritmos_programacion_2015_05_18 (1)

195
Salvaguardar el medio ambiente. . . Es un principio rector de todo nuestro trabajo en el apoyo del desarrollo sostenible; es un componente esencial en la erradicación de la pobreza y uno de los cimientos de la paz”. Kofi Annan

description

algoritmos

Transcript of Algoritmos_programacion_2015_05_18 (1)

Salvaguardar el medio ambiente. . . Es un principio rector de todo nuestro trabajo en el apoyo del desarrollo sostenible; es un componente esencial en laerradicación de la pobreza y uno de los cimientos de la paz”.

Kofi Annan

Facultad de Ingeniería Mecánica y Eléctrica

Ing. Carlos A. Mora Barradas

Algoritmos computacionales y programación

Algoritmos y su representación

Objetivo

Desarrollar algoritmos como herramienta en la

representación la solución matemática de problemas

científicos y de ingeniería.

Definición

ALGORITMO

Procedimiento para la resolución de problemas de

cualquier tipo mediante una determinada secuencia de

pasos simples y no ambiguos.

Utilizado originalmente para el cálculo matemático pero ahora es

ampliamente usado en programación

Estructura de la solución de un problema

Datos de entrada: Datos o condiciones iniciales con los que contamos para resolver el problema.

Proceso: Secuencia de pasos para resolver el problema.

Salida o Resultados: Es la consecuencia de la aplicación del proceso a los datos de entrada.

Características del Algoritmo

Definido: Indica el orden de los paso (secuencia).

Finito: Se integra por un número n de pasos.

Válido: Que haga lo que se pretende y devuelva los resultados esperados.

Eficiente: Da una solución en un tiempo razonable.

Eficaz: Utiliza los recursos mínimos para dar el resultado.

Premisa

¡¡¡EL ALGORITMO DEBE SER

REPRESENTADO PARA SER LEIDO

POR OTRAS PERSONAS!!!

Representación

Pseudocódigo: lenguaje PROPIO para la codificación

Diagrama de flujo: Gráfica de un procedimiento para la resolución de un problema

Algoritmo

Ejemplo de diagramas de flujo

Simbología

Objeto de Inicio de Algoritmo

Objeto de Fin de Algoritmo

Objeto de asignación

Simbología

Objeto Lectura

Objeto Salida

Objeto Decisión

Simbología

Objeto Ciclo Para

Objeto Ciclo Mientras

Objeto de Asignación

El objeto Asignación asigna valores a campos variables.

Objeto de Lectura

• El objeto Lectura permite la entrada de valores desde el teclado y se los asigna a variables.

• Podrá ser leída cualquier cantidad de variables utilizando un solo objeto Lectura.

Objeto de Salida

• El objeto Salida muestra valores en pantalla.

• Puede ser visualizada cualquier cantidad de valores utilizando un solo objeto Salida.

Objeto Decisión

• Selecciona el flujo a seguir de acuerdo al valor lógico de una condición.

• La condición debe ser siempre una expresión que al ser evaluada de como resultado un valor de tipo de dato Lógico.

Objeto Ciclo Para

• Contiene un valor inicial que será asignado para iniciar la ejecución del ciclo, un valor final y un valor de incremento.

• Ejecuta un bloque de objetos mientras que la variable contadora no alcance el límite establecido por el valor final.

• Si el contador excede el valor final, la ejecución continuará a partir del objeto que sigue al Cierre.

• En caso contrario, se ejecutará el cuerpo del ciclo y el contador será incrementado en el valor indicado por el incremento.

Objeto Ciclo Mientras

• Tiene la función de ejecutar un bloque de objetos mientras que una condición sea verdadera.

• La condición debe ser siempre una expresión que al ser evaluada de como resultado un valor de tipo Lógico.

Algoritmo de una suma

1. Inicio

2. Desplegar en pantalla que es lo que realiza la rutina.

3. Solicitar el primer sumando.

4. Introducir el primer sumando.

5. Solicitar el segundo sumando.

6. Introducir el segundo sumando.

7. Realizar la suma, y el resultado asignarlo a una variable llamada suma.

8. Presentar el resultado en pantalla.

9. Fin

Programación

Objetivo

Proporcionar una guía básica para el uso deMatlab como herramienta de alto nivel en lasolución y representación de problemastécnicos, científicos y de ingeniería a través decálculos con vectores y matrices.

Alcance

El alcance y el poder de Matlab muy grande;dispone de un código básico y de varias libreríasespecializadas (toolboxes).

En este curso se hará referencia exclusivamenteal código básico. Sin embargo, se pretende que elalumno sea capaz de resolver problemas máscomplejos haciendo uso del entorno intuitivoque ofrece Matlab.

Contenido

1. Primera parte. Conociendo MATLAB

2. Segunda parte. El entorno de trabajo de MATLAB

3. Tercera parte. Los objetos de MATLAB

4. Cuarta parte. Inicialización de variables en MATLAB

5. Quinta parte. Operaciones con MATLAB

6. Sexta parte. Funciones en MATLAB

7. Séptima parte. Graficación en MATLAB

8. Octava parte. Métodos Numéricos en MATLAB

Primera parteCONOCIENDO MATLAB

Conociendo Matlab

• Desarrollado por la Compañía Mathworks, Inc.

• MATLAB es la abreviatura de “MATrix LABoratory”

• Programa para realizar cálculos numéricos con vectores y

matrices.

• Puede también trabajar con números escalares (reales y

complejos), cadenas de caracteres y otras estructuras.

• Puede trazar una amplia variedad de gráficas en 2D y 3D.

• Posee un leguaje de programación propio.

Conociendo Matlab

Entorno de Matlab

Debido a lo anterior:

Lenguaje de programación.

Entorno de visualización

Gráfica.

Sistema interactivo de

cómputo científico.

Conociendo Matlab

Matlab presenta varias pantallas al usuario: entre las más

importantes están la ventana de comandos (command window), la

ventana gráfica (graphics window) y la ventana del editor (M-file

editor).

Conociendo Matlab

Como se puede observar, en laventana de comandos apareceun indicador (prompt) (>> óEDU>>) que nos dice queMatlab está listo y a la esperade que el usuario teclee uncomando ó dato.

Conociendo Matlab

La ventana Gráficaaparece cuando elusuario introducecomandos propiosde la graficación.

Conociendo Matlab

La ventana del m-fileeditor aparece cuando elusuario crea o modificaun archivo .m (programao script Matlab)

Conociendo Matlab

Ventanas auxiliares de más uso:

• Historial de comandos (command history)

• Entorno de trabajo (workspace)

• Directorio de trabajo actual (current directory)

• Ayuda (help window).

Conociendo Matlab

También podemos accesar al menú helptecleando la instrucción:

>>help

Ó

>>help tópico

Conociendo Matlab

Comencemos a trabajar con MATLAB.

Escribamos la siguiente línea. Al final hay que pulsar Enter.

» A=rand(6), B=inv(A), B*A

Conociendo Matlab

Conociendo Matlab

Explicación de los comandos anteriores:

En la línea de comandos anterior, en realidad, se han escrito tres instrucciones diferentes, separadas por comas. Como consecuencia, la respuesta del programa tiene tres partes también, cada una de ellas correspondiente a su respectiva instrucción.

1. Se define una matriz cuadrada (6x6) llamada A, formada por números aleatorios entre cero y uno (calculados con 16 cifras).

2. Se define una matriz B que es igual a la inversa de A.

3. Se multiplica B por A, y se comprueba que el resultado es la matriz...

Conociendo Matlab

Otra de las fortalezas de MATLAB es la graficación, que

se verá posteriormente con más detalle.

Ejemplo:

» x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Función seno(x)')

Conociendo Matlab

Explicación de los comandos anteriores:

• Se crea un vector x con valores desde -4 hasta 4 separados cada 0.01.

• Se crea un vector y, cuyos elementos son el seno del correspondiente elemento del vector x.

• Se dibujan los valores de x y y en pares ordenados.

• Las dos últimos comandos activan la cuadrícula y el título de la gráfica.

Conociendo Matlab

Segunda parteEL ENTORNO DE TRABAJO DE

MATLAB

Ventana Directorio activo (actual)

• Los archivos de comandos de matlab (*.m) se ejecutan escribiendo

su nombre en la línea de comandos (sin la extensión .m).

• Si se trata de funciones, después del nombre van los argumentos

entre paréntesis.

Ventana Directorio activo (actual)

Pero…

¿Qué pasa si los programas o funciones no están guardados

en el directorio activo?Para que un archivo *.m se pueda ejecutar, es necesario que se cumpla una de las dos condiciones siguientes:

Que esté en el directorio actual. Es el primer sitio en el que MATLAB busca cuando se ordena que ejecute un archivo.

Que esté en uno de los directorios indicados en el Path de MATLAB

Ventana Directorio activo (actual)

Aquí se establece el directorio actual

Ventana Directorio activo (actual)

Para establecer una carpetadentro del Path de Matlab,entramos al menu archivo(file) y seleccionamos laopción Set path…

Con lo que se abrirá unaventana como la mostradaen la figura, que es donde seseleccionará la carpeta aagregar.

Tercera parteLOS OBJETOS DE MATLAB

Escalares, vectores y matrices en Matlab

• MUY IMPORTANTE, para Matlab todo se considera

como una matriz.

• Un escalar se considera un matriz de una fila y una

columna.

• Recordar que cuando nos referimos a los elementos de

una matriz lo hacemos mediante subíndices.

Escalares, vectores y matrices en Matlab

• Para localizar un elemento se recurre al número de fila y

columna en donde se encuentre el elemento buscado.

• Este par de números son como “coordenadas” y se les conoce

como subíndices.

• Si se tiene una matriz, para hacer referencia a toda ella

usaremos sólo su nombre, sin subíndices (Ej: A, B, etc.).

• Si queremos referirnos sólo a un elemento que está en la fila 4,

columna 3 de la matriz A en Matlab, los subíndices se

indicarán entre paréntesis, ejemplo: A(4,3).

Nombres de variables en Matlab

Para realizar cálculos en Matlab lo más común es darle nombre a las variables o a los archivos de comandos; estos nombres serán usados para llamar el valor de esa variable, o bien para ejecutar un archivo de comandos. Dichos nombres tendrán que ajustarse a las reglas que siguen para su asignación:

• Los nombres deben comenzar con una letra.

• Los nombres pueden contener letras, dígitos y el guión bajo (_).

• Los nombres no pueden contener espacios.

• Los nombres pueden tener cualquier longitud, pero sólo los primeros 63 caracteres son reconocidos para diferenciarlas.

Nombres de variables en Matlab

¡¡¡¡ NOTA!!!!

Matlab es

Sensible

a las mayúsculas

y minúsculas.

Formato de salida

Respecto a los formatos numéricos con que MATLAB muestra los resultados, estos se pueden cambiar desde la línea de comandos.

• Por ejemplo, para ver matrices en formato long:

>> format long

Nota: Matlab siempre calcula con doble precisión (16 cifras decimales)

short coma fija con 4 decimales (defecto)long coma fija con 15 decimalesbank números con dos cifras decimalesshort e notación científica con 4 decimalesshort g notación científica o decimal, dependiendo del valorlong e notación científica con 15 decimaleslong g notación científica o decimal, dependiendo del valorrat expresa los números racionales como cocientes de enteros

Cuarta parteINICIALIZACION DE VARIABLES EN

MATLAB

Inicialización de variables en Matlab

Tres métodos para asignar valores:

1. Listas de valores explícitos

2. El Operador Dos-Puntos

3. Entrada interactiva del usuario

Listas de valores explícitos

>>A = [ 2 ] ; ó >>A = 2 (escalar)

>>B = [ 3 , -6.2 ] ; (vector)

>>C = [1 2 3;4 5 6 ;7 8 9] ; (matriz)

Lado Receptor Lado Emisor

Asignación

Listas de valores explícitos

Matrices:

• Se encierran entre corchetes ordenados por fila.

• Los valores de los elementos de cada fila (columnas) se separan

mediante comas o espacios.

• Las filas se separan con signos de punto y coma.

NOTA: Cuando se define un escalar, vector o matriz por este método, Matlab despliega

los valores introducidos a menos se introduzca un signo de punto y coma colocado al

final de la instrucción.

Otros ejemplos de introducción de valores explícitos

Usando otros datos definidos previamente

>>A1 = [2 3 4] ;>>A2 = [1 A1] ;Que equivale a:

>>A2 = [1 2 3 4] ;

Podemos modificar o agregar nuevos valores usando subíndices:

>>A2(3) = 5;Cambia el valor del tercer elemento de la matrizA2 de 3 a 5. Veamos otro ejemplo:>>A2(8) = 6;

¿Qué ocurre con A2(5), A2(6) y A2(7) para los que no se dieron valores?

Otros ejemplos de introducción de valores

Si tomamos a la matriz A1 tal como se definió anteriormente e

inicializamos al elemento:

>>A1(2,3) = 7.7

¿Qué ocurre?

Inicialización de variables en Matlab

Tres los métodos para asignar valores:

1. Listas de valores explícitos

2. El Operador Dos-Puntos

3. Entrada interactiva del usuario

El Operador Dos-Puntos (:)

Usos típicos:

• Crear vectores o matrices a partir de matrices.

• Referirse a toda una fila de una matriz.

• Referirse a toda una columna de una matriz.

• Generar matrices nuevas.

• Seleccionar una submatriz de otra matriz.

El Operador Dos-Puntos (:) (Cont)

>>C = [-1 4 2 ; 5 2 -3 ; 4 -4 0 ; 0 0 2] ;

Entonces:

>>X = C(:,1) Almacena la primera columna de C en el nuevo vector columna X.

>>Y = C(2,:) Almacena la segunda fila de C en el nuevo vector fila Y.

>>Z = C(:,:) Crea la matriz Z como una copia íntegra de C (es igual que Z = C).

El Operador Dos-Puntos (:) (Cont)

>>R = 1 : 10 ; Genera el nuevo vector R que contiene los números del 1 al 10.

>>T = 0.0 : 0.5 : 5.0 ; Generará un nuevo vector T con valores de 0.0, 0.5, 1.0, 1.5, ... , 4.5 y 5.0.

>>V = 1.5 : -0.25 : 0.0 ; Resulta en un nuevo vector V con los elementos 1.5, 1.25, 1.0, ... , 0.25 y 0.0.

Sea C la siguiente matriz:

>>C = [ -1 4 2 ; 5 2 -3 ; 4 -4 0 ; 0 0 2 ] ;

Si ejecutamos los siguientes comandos:

>>S1 = C ( : , 2 : 3 ) ;

>>S2 = C ( 3 : 4 , 1 : 2 )

Obtendríamos respectivamente…

El Operador Dos-Puntos (:) (Cont)

El Operador Dos-Puntos (:) (Cont)

S1 =

4 2

2 -3

-4 0

0 2

S2 =

4 -4

0 0

El Operador Dos-Puntos (:) (Cont)

Si el operador Dos-Puntos hace referencia a una matriz con subíndices no válidos, como C ( 5 : 6 , : ) , se desplegará un mensaje de error:

“??? Index exceeds matrix dimensions.”

En Matlab es válido la existencia de matrices vacías (sin elementos). Por ejemplo, las siguientes órdenes generan matrices vacías:

>>A = [ ] ;

>>B = 3 : -1 : 5 ;

Inicialización de variables en Matlab

Tres los métodos para asignar valores:

1. Listas de valores explícitos

2. El Operador Dos-Puntos

3. Entrada interactiva del usuario

Entrada interactiva del usuario

Los valores pueden ser introducidos a través del tecladousando el comando:

>>x = input (‘mensaje’ ) ;

Este comando despliega el ‘mensaje’ en pantalla y esperaa que el usuario introduzca información. Después, él olos valores introducidos son asignados a la variable quese especifique a la izquierda de la igualdad.

Si el usuario va a introducir más de un valor, debeencerrarlos entre corchetes. Si el usuario oprime [enter]sin introducir valores, se generará una matriz vacía.

Entrada interactiva del usuario

Otra opción es cuando el usuario va a introducir texto en lugar de valores. Entonces se usará esta versión del comando:

>>x = input ( ‘mensaje’, ‘s’ ) ;

La opción ‘s’ indica que la entrada de datos serán caracteres en lugar de números. Para terminar de teclear la cadena de caracteres deberá de oprimirse [enter] al final.

Los espacios intermedios de la cadena si son tomados en cuenta y forman parte de su longitud total.

Quinta parteOPERACIONES CON MATLAB

Operaciones básicas con escalares, vectores y matrices en Matlab

Suma +

Resta -

Multiplicación *

División /

Transposición ‘

Potenciación ^

Radicación

Agrupación ( )

Asignación =

Operaciones con vectores y matrices como ARREGLOS

Para indicar que queremos realizar operaciones de tipoarreglo (elemento a elemento) entre vectores o matricesutilizamos un punto que precede al operadoraritmético:

Suma +

Resta -

Multiplicación .*

División ./

Potenciación .^

Operaciones básicas con escalares, vectores y matrices en Matlab

¡¡MUY IMPORTANTE!!

En programación, cuando se hace una asignación siempre, primero,

se evalúa la parte derecha y, segundo, el resultado se asigna a la

parte de la izquierda. Aplicando esto último podríamos usar una

expresión como:

x = x + 5 ;

Precedencia de las operaciones aritméticas

Usualmente combinamos varias operaciones en una sola expresiónaritmética, por lo tanto es importante conocer en que orden serealizarán las operaciones (por prioridad)

Agrupación ( ) (prioridad 1)Exponenciación ^ (prioridad 2)Mult. y div. * / (prioridad 3)Suma y resta + - (prioridad 4)

Valores y operaciones especiales en Matlab

pi Almacena el valor de

i , j Representan la unidad imaginaria √-1

inf Representa infinito y es la división entre cero (x/0)

NaN Indica Not-a-Number (No-es- número) 0/0

ans Es la respuesta más reciente derivada de un cálculo, que nofue almacenada en ninguna variable.

% Representa comentario. Sirve para documentar lasoperaciones y programas. Lo que se escriba a la derecha del %se ignora por Matlab como cálculo.

Operadores Relacionales

< Menor que

> Mayor que

<= Menor o igual que

>= Mayor o igual que

== Igual. Idéntico.

~= Distinto.

Si una comparación se cumple el resultado es 1 (true), si no cumplees 0 (false). Cualquier valor distinto de cero es considerado comotrue y el cero como false. Los operadores relacionales se aplican ados matrices o vectores del mismo tamaño, la comparación se realizaelemento a elemento, y el resultado es otra matriz de unos y cerosdel mismo tamaño que recoge el resultado de cada comparaciónentre elementos .

Operadores Relacionales

Ejemplo:

x<=y donde x y y son escalares, el valor que regresaesta expresión será 1 (verdadero) sólo si x es menor o

igual que y; de lo contrario, se obtiene 0 (falso)cuando x es mayor que y.

Si en lugar de escalares x y y fueran vectores, por ejemplo:

x = [ 2 4 6 ] ; y = [ 1 4 3 ] ;

Entonces, el resultado de la expresión x<=y, es el vector [ 0 1 0 ],

en tanto que el resultado de x~=y es el vector [ 1 0 1 ],

y el de x>=y proporciona [ 1 1 1 ].

Operadores Lógicos

También con precedencia:

~ Not. Negación ( no )

& And. Conjunción ( y )

&& And Breve. Si el 1er. Operador es falso ya no se realiza.

| Or. Disyunción ( o )

|| Or Breve. Si el 1er. Operador es true ya no se realiza.

xor(x,y) Or exclusivo. Si los dos son 1 o 0 regresa 0.

A B ~A ~B A | B A & B

0 0 1 1 0 0

0 1 1 0 1 0

1 0 0 1 1 0

1 1 0 0 1 1

Séptima parteFUNCIONES CON MATLAB

Funciones en Matlab

• Función algebraica

• Función predefinida o de biblioteca

• Funciones definidas por el usuario

Función algebraica

El concepto función lo conocemos todosy = f(x) ó z = f(x, y);

que es cuando existe una relación dependencia entre variables y queda lugar a valores en un dominio y su contradominio. Para Matlabambos son vectores o matrices de las mismas dimensiones.

Función algebraica

y = Sen(x)

z = x^2-3x+2

var = exp(y)

F = 1.8C + 32

Función predefinida o de biblioteca

Se refiere a un procedimiento o programa que ha sidoalmacenado previamente en Matlab. Operan recibiendoargumentos ó parámetros (Datos de entrada) y regresandocomo resultado algún tipo específico de dato (valores deretorno).

Estas funciones pueden tener cero, uno ó múltiples argumentos. Porejemplo, pi (no recibe ningún argumento) regresa 3.141592...

>>nombre_de_función( arg1, arg2, ... ) ;

>>y = sin( abs( x ) ) ;

Las funciones matemáticas comunes en Matlab

• Valor Absoluto de x >>abs ( x ) ;

• Raíz cuadrada de x >>sqrt ( x ) ;

• Exponencial base e ( ex ) >>exp ( x ) ;

• Redondear x al entero mas cercano >>round ( x ) ;

• Truncar decimales de x >>fix ( x ) ;

• Redondear al entero inferior a x >>floor ( x ) ;

• Redondear al entero superior a x >>ceil ( x ) ;• Residuo entero de x/y. >>rem ( x , y ) ; ó mod ( x , y ) ;

• Logaritmo natural de x >>log ( x ) ;

• Logaritmo base diez de x >>log10 ( x ) ;• Signo indicador del valor de x >>sign ( x ) ; (devuelve –1 si x es

menor que cero, 0 si x es igual a cero y 1 si x es mayor que cero)

Las funciones matemáticas comunes en Matlab

• Seno de x >>sin ( x ) ;

• Arco seno de x >>asin ( x ) ;

• Coseno de x >>cos ( x ) ;

• Arco coseno de x >>acos ( x ) ;

• Tangente de x >>tan ( x ) ;

• Arco tangente de x >>atan ( x ) ;

• Secante de x >>sec ( x ) ;

• Arco secante de x >>asec ( x ) ;

• Cosecante de x >>csc ( x ) ;

• Arco cosecante de x >>acsc ( x ) ;

• Cotangente de x >>cot ( x ) ;

• Arco cotangente de x >>acot ( x ) ;

Funciones Especiales de Matlab

Para obtener las dimensiones de una matriz:

>>size ( matriz ) ;

El comando size regresa dos argumentos de tipo escalar que representan al número de filas y al número de columnas de la matriz.

el comando :

>>length ( vector ) ;

Nos proporciona el tamaño del vector especificado. Si se aplica el comando length a una matriz de tamaño (m,n); se devuelve el número de filas, es decir m.

Funciones Especiales de Matlab

Para generar matrices de ceros:

>>zeros (dimensión);

En donde dimensión es un número escalar. El comando zeros generará una matriz cuadrada de ceros

También dimensión podría referirse a dos argumentos escalares como en zeros(m, n). Entonces, se generará una matriz de ceros con m filas y n columnas.

Podemos usar el comando size para generar una matriz de ceros que tenga el mismo tamaño que otra matriz mediante la orden:

>>D = zeros (size(C)) ;

Funciones Especiales de Matlab

Para generar matrices con unos:

>>ones (dimensión) ;

Generación de matrices identidad:

>>eye (dimensión) ;

Funciones Especiales de Matlab

Números aleatorios en Matlab:

>>rand ( n ) ; genera una matriz de n x n que

contiene números aleatorios entre 0 y 1

ó

>>rand ( m, n ) ; genera una matriz de tamaño m x n que contiene números aleatorios entre 0 y 1

Funciones matemáticas adicionales

Sumar los elementos de un vector o matriz x

>>sum ( x ) ;

Ordenar los elementos de un vector o matriz x

>>sort ( x ) ;

Valor del elemento más grande de un vector o matriz x

>>max ( x ) ;

Valor del elemento más pequeño de un vector o matriz x

>>min ( x ) ;

Máximo común divisor de los enteros x y y

>>gcd ( x , y ) ;

Funciones matemáticas adicionales

Mínimo común múltiplo de los enteros x e y

>>lcm ( x , y ) ;

Parte real del número complejo x

>>real ( x ) ;

v Parte imaginaria del número complejo x

>>imag ( x ) ;

Angulo de fase del complejo x

>>angle ( x ) ;

Obtener la magnitud del número complejo x

>>abs ( x ) ;

Octava parteGRAFICACION EN MATLAB

Graficación en Matlab

• De gran importancia.

• Nos ayuda a complementar los análisis matemáticos

• Gráficas de alta calidad y sencillez en su elaboración.

• Los gráficos están fundamentalmente orientados a la

representación gráfica de vectores (y matrices).

• Nos da la posibilidad de observar gráficamente las relaciones

entre series de datos, funciones y ecuaciones,

• Hace que el aprendizaje de las matemáticas sea más amigable.

Entorno gráfico

• El entorno gráfico genera una ventana aparte de laventana para la visualización de los comandos gráficos.

• Es posible generar una o varias ventanas de entornográfico de forma simultánea.

>>figure ;ó

>>figure( handle ) ;

handle = identificador (número entero positivo)

Más comandos de graficación

Para cerrar ventanas de entorno gráfico:

>>close ; ó >>close( handle ) ;

Para borrar la pantalla de entorno gráfico activa

>>clf ; ó >>clf reset ;

Graficación 2-D de funciones XY

Para la graficación en 2D:

• Necesitamos dos vectores, x y y que son de igual longitud

• El vector x contiene los valores de la variable independiente (Dominio)

• El vector y los de la variable dependiente (Contradominio)

Comandos básicos de graficación XY

Cinco funciones básicas para crear gráficas 2-D.

Plot() Crea una gráfica a partir de vectores y/o columnas dematrices, con escalas lineales sobre ambos ejes.

plotyy() Dibuja dos funciones con dos escalas diferentes para lasordenadas, una a la derecha y otra a la izquierda de lafigura.

loglog() Gráficas con escala logarítmica en ambos ejes

semilogx() Gráficas con escala lineal en el eje de ordenadas ylogarítmica en el eje de abscisas

semilogy() ídem con escala lineal en el eje de abscisas y logarítmica enel eje de ordenadas

Comandos básicos de graficación XY

Para graficar vectores o matrices en XY

>>plot ( x , y ) ;

ó

>>plot ( x , y , ‘características’ ) ;

• Los Vectores pueden ser del mismo número de elementos.

• Sin son vector y matriz deben de coincidir el numero de elementosen cada columna.

• Sin son matrices ambas deben de coincidir en sus dimensiones.

error: “Matrix dimensions must agree”.

Ejemplo de graficación xy

>> x=[1 3 2 4 5 3];

>> plot(x);

El resultado de este comando es:

Ejemplo de graficación xy

>> x=[1 2 3];

>> y=[3 5 7];

>> plot(x,y);

El resultado de este comando es:

Ejemplo de graficación xy

>>% definimos el dominio para el vector x

>>% se calcula la función en cada punto

>>% graficamos

>>x = 0 : .1 : 10 ;

>>y = exp ( .1 * x ) – sin ( 3 * x ) ;

>>plot ( x, y )

Modificando las Características del gráfico

1. Tipos de marcas en las líneas:. (puntos)+ (signos +)* (asteriscos)o (círculos)x (cruces)

2. Tipos de estilos de líneas:- (continua. por defecto)- - (guiones): (punteada)-. (guiones y puntos)

3. Tipos de color de líneas:Amarillo (yellow) ‘y’ Rojo (red) ‘r’Azul (blue) ‘b’ Turquesa (cyan) ‘c’Blanco (white) ’w’ Verde (green) ‘g’Negro (black) ‘k’ Violeta (Magenta) ‘m’

Modificando las Características del gráfico

>>x = 0 : .1 : 10 ;

>>y = exp ( .1 * x ) – sin ( 3 * x ) ;

>>plot ( x, y , ‘ g* ’)

Obtenemos:

Títulos, Rótulos, Leyendas y Texto

Para poner un título a la gráfica:

>>title ( ‘texto’ ) ;

Para colocar rótulos en los ejes:

>>xlabel ( ‘texto’ ) ; Con xlabel off y ylabel off

>>ylabel ( ‘texto’ ) ; desaparecen

Para añadir una leyenda al gráfico:

>>legend ( ‘texto’ , pos ) ; pos representa la posición de la leyenda en la pantalla:0 dentro del cuadro del gráfico (si hay lugar) y –1 fuera del cuadro del gráfico.

Títulos, Rótulos, Leyendas y Texto

Para desplegar texto en una gráfica:

>>text ( x , y , ‘texto’ ) ; Los valores x y y son las

coordenadas del punto en

donde se desea que

comience a desplegarse la

cadena ‘texto’

>> gtext('texto') Introduce texto con ayuda del ratón: el cursor

>> legend(‘texto’) Define rótulos para las distintas líneas o ejes

utilizados en la figura.

Ejemplo completo

>>%graficamos

>>x = 0 : .1 : 10 ;>>y = exp ( .1 .* x ) – sin ( 3 .* x ) ;>>plot ( x, y , ‘ g-. ’)>>%ponemos título y rótulos

>>title ( ‘Gráfica XY’ , ‘fontname’, ‘arial’ , ‘fontsize’, 16, ‘color’, ‘c’ )>>xlabel ( ‘Abscisas de 0 a 10’, ’color’, ’y’, ‘fontsize’, 12, ‘fontname’, ‘verdana’)>>ylabel ( ‘y = exp ( .1 .* x ) – sin ( 3 .* x )’, ’color’, ’y’, ‘fontsize’, 12, ‘fontname’,

‘verdana’ )

>>%ponemos leyenda fuera de la gráfica>>legend ( ‘y = f(x)’, -1)>>%colocamos el texto en las coord. (2,3)>>text ( 2, 3, ‘Pendiente moderada’, ’color’, ’g’, ‘fontsize’, 12, ‘fontname’, ‘comic

sans’ )

Ejemplo completo

Comandos adicionales para gráficos XY

Para mantener activa la pantalla gráfica actual

>>hold on ; ó >>hold off ;

Para visualizar una retícula guía en la gráfica

>>grid on ; ó >>grid off ;

Para manipular los ejes coordenados XY

>>axis ( ‘on’ ) ; ó >>axis ( ‘off’ ) ;

ó

>>axis ( [ x_min, x_max, y_min, y_max ] ) ;

Más ejemplos

>>hold on ;

>>grid on ;

>>axis ( [0, 20, 0, 12 ] ) ;

Más ejemplos

>>axis ( [ 0, 4.5, 0, 3.5 ] ) ;

Comandos adicionales para gráficos XY

Comando de zoom en el entorno gráfico

>>zoom on ; ó >>zoom off ;

ó

>>zoom out ; ó >>zoom in ;

Desplegando múltiples gráficas

Son tres las opciones:

• Múltiples gráficas usando un vector columna

• Múltiples gráficas usando una variante de plot

• Múltiples gráficas mediante el uso de subgráficas

Múltiples gráficas usando un vector columna

Se puede crear un vector columna que contenga en cadarenglón a cada una de las funciones que se deseangraficar. Por ejemplo:

>>%creamos el rango de abscisas

>>x = -2*pi : 0.1 : 2*pi ;

>>%se generan los puntos de ambas f(x)

>>f1 = .5 * sin ( x ) ;

>>f2 = 2 * cos ( x ) ;

>>%se crea el vector columna

>>V = [ f1 ; f2 ] ;

Múltiples gráficas usando un vector columna

>>%se grafica la relación de x con el vector V

>>plot ( x , V ) ;

>>%se ajustan los ejes al tamaño deseado

>>axis ( [ -2*pi , 2*pi , -3 , 3 ] ) ;

>> %colocamos título, rótulos y leyenda

>>title ( ‘Dos gráficas simultáneas mediante un vector columna ‘ ) ;

>>xlabel ( ‘Abscisas desde –2*pi hasta 2*pi’ ) ;

>>ylabel ( ‘Valor de la función y=f(x)’ ) ;

>>legend ( ‘.5*sin(x)’ , ‘2*cos(x)’ ) ;

Múltiples gráficas usando un vector columna

NOTA.- No existe laposibilidad de escoger nitipo de línea nicolor para cada una de lascurvas;

Múltiples gráficas usando una variante de plot

>>plot ( x , f1 , ‘y—‘ , x , f2 , ‘m+’ ) ;

Por ejemplo:

>>x = -2*pi : 0.1 : 2*pi ;

>>f1 = .5 * sin ( x ) ;

>>f2 = 2 * cos ( x ) ;

>>plot ( x , f1 , ‘y—‘ , x , f2 , ‘m+’ ) ;

>>axis ( [ -2*pi , 2*pi , -3 , 3 ] ) ;

>>title ( ‘Dos gráficas simultáneas con variante de plot ‘ ) ;

>>xlabel ( ‘Abscisas desde –2*pi hasta 2*pi’ ) ;

>>ylabel ( ‘Valor de la función y=f(x)’ ) ;

>>legend ( ‘.5*sin(x)’ , ‘2*cos(x)’ ) ;

Múltiples gráficas usando una variante de plot

NOTA.- Se podríangraficar más de doscurvas simultáneamente.

Múltiples gráficas mediante el uso de subgráficas

La pantalla total del entorno gráfico puede ser dividida en pequeñasregiones, como si se tratara de una matriz, de tal forma que esposible graficar una subgráfica independiente en cada una de dichasáreas.

>>subplot ( m , n , k ) ;

Donde:

m y n Son dos números enteros que indican el tamaño de lamatriz en que se dividirá el entorno gráfico.

K también Es un entero que indica el número secuencial (porrenglón) de subpantalla que se va a utilizar comopantalla activa.

Múltiples gráficas mediante el uso de subgráficas

>>x = -2*pi : 0.1 : 2*pi ;

>>f1 = .5 * sin ( x ) ;

>>f2 = 2 * cos ( x ) ;

>>subplot ( 3 , 1, 1 ) ;

>>plot ( x , f1 , ‘y—‘ , x , f2 , ‘m+’ ) ;

>>axis ( [ -2*pi , 2*pi , -3 , 3 ] ) ;

>>title ( ‘Subgráfica 1‘ ) ;

>>xlabel ( ‘–2*pi <= x <= 2*pi’ ) ;

>>ylabel ( ‘y=f(x)’ ) ;

Múltiples gráficas mediante el uso de subgráficas

>>legend ( ‘.5*sin(x)’ , ‘2*cos(x)’ ) ;

>>subplot ( 3 , 1, 3 ) ;

>>plot ( f1 , f2 , ‘c’ ) ;

>>axis ( [ -pi , pi , -pi , pi ] ) ;

>>title ( ‘Subgráfica 3‘ ) ;

>>xlabel ( ‘pi <= x <= pi’ ) ;

>>ylabel ( ‘y=f(x)’ ) ;

>>legend ( ‘.5*sin(x) vs 2*cos(x)’ ) ;

Múltiples gráficas mediante el uso de subgráficas

Otras opciones de graficado

Gráficas semilogarítmicas y logarítmicas

>>semilogx ( x , y ) ;

>>semilogy ( x , y ) ;

>>loglog ( x , y ) ;

Otras opciones de graficado

Por ejemplo:y = e 0.25 x * sin ( x )

>>x = linspace(0 , 10 ) ;>>y = exp ( 0.25 * x .* sin ( x ) ) ;>>subplot ( 2 , 2, 1 ) ;>>plot ( x , y , ‘y‘ ) ;>>title ( ‘exp ( 0.25 * x .* sin ( x ) ) con plot’ ) ;>>subplot ( 2 , 2, 2 ) ;>>semilogx ( x , y , ‘r‘ ) ;>>title ( ‘con semilogx‘ ) ;>>subplot ( 2 , 2, 3 ) ;>>semilogy ( x , y , ‘g‘ ) ;>>title ( ‘con semilogy‘ ) ;>>subplot ( 2 , 2, 4 ) ;>>loglog ( x , y , ‘m‘ ) ;>>title ( ‘con loglog‘ ) ;

Otras opciones de graficado

Otras opciones de graficado

Gráficas polares

Las instrucciones son:

>>x = 0 : .1 : 2*pi ;

>>y = exp ( -.25 * x ) .* sin ( 3 * x ) ;

>>polar ( x , y ) ;

>>title ( 'Gráfica polar de y = exp ( -.25 * x ) .* sin ( 3 * x ) ' ) ;

Otras opciones de graficado

Otras opciones de graficado

Gráficas de tipo estadístico

Por ejemplo: Si, y = [ 8 3 5 6 2 9 4 1 ] , entonces:

>> y = [ 8 3 5 6 2 9 4 1 ] ;

>>bar ( y , ‘g’ ) ;

>>title ( ‘Gráfica de barras del vector y’) ;

Graficación 3-D en Matlab

Esta clase de graficas se refiere al hecho de poderrepresentar en un entorno gráfico a las funcionesmatemáticas que están definidas en dos variables, porejemplo:

z = f (x, y)

Dos modalidades de gráficas 3-D:

Graficación tridimensional de una curva ó gráfica en x, y y z

Graficación tridimensional de superficies y contornosbidimensionales.

Graficación 3-D de una curva en x, y y z

Versión tridimensional del comando plot>>plot3 ( x , y , z ) ;ó>>plot3 ( x , y , z , ‘características’ ) ;

Rótulo para el nuevo eje z de la gráfica tridimensional>>zlabel ( ‘texto’ ) ;ó>>zlabel ( [ ‘texto’ , ‘prop1’ , valor1 , ... ] ) ;

Comando axis versión plot3>>axis ( [ x_min, x_max, y_min, y_max, z_min, z_max ] )

otras opciones de axis>>axis ( ‘auto’ ); Esta opción de axis sirve para volver a colocar a la

escala de ejes en automático, es decir, para que se autoajusten

Ejemplo de plot3

>>% preparamos los vectores

>>% de igual tamaño

>>z = linspace ( 0, 6*pi ) ;

>>x = sin ( z ) ;

>>y = cos ( z ) ;

>>%graficamos

>>plot3 ( x, y, z ) ;

>>xlabel ( ‘Eje X’ ) ;

>>ylabel ( ‘Eje Y’ ) ;

>>zlabel ( ‘Eje Z’ ) ;

>>title ( 'Gráfica en 3-D de una curva en x,y,z' ) ;

>>text ( .5, .5, 20, 'Tres vueltas de una hélice' ) ;

Ejemplo de plot3

Ejemplo 2

>>clear

>>z = linspace ( 0 , 6*pi ) ;

>>x = cos ( z * pi/2 ) .* exp ( -0.2 * z ) ;

>>y = sin ( z * pi/2 ) * exp ( -0.2 * z ) ;

>>plot3 ( x, y, z ) ;

>>plot3 ( [1,1] , [-0.5,0] , [0,0] ) ;

>>title ( ‘Gráfica de una Curva en 3-D’ ) ;

>> text ( .7 , -.7 , 0 , 'Inicio' ) ;

>> text ( 0 , 0 , 20 , 'Fin' ) ;

>>xlabel ( ‘Eje X’ ) ;

>>ylabel ( ‘Eje Y’ ) ;

>>zlabel ( ‘Eje Z’ ) ;

>>grid on

Ejemplo 2

Gráficas 3-D de malla y de superficie

Para poder graficar una función dos variables del tipo de z = f ( x, y),se necesita:

1. Crear una malla ó retícula bidimensional en el plano XY.

2. Evaluar la función z en los puntos de dicha retícula para determinarpuntos en la superficie tridimensional que se define.

En Matlab, una retícula bidimensional en el plano XY quedadefinida cuando se utilizan dos matrices. Una matriz contendrátodas las coordenadas x de todos los puntos de la retícula y de igualforma, la otra contendrá las coordenadas y de todos los puntos dedicha malla.

Ejemplo

Dos vectores x y y, cuyos valores son los siguientes: x = -3 : 5 y y = -1 : 3.

Generación de las matrices que constituyen una retícula bidimensional

>>[ X Y ] = meshgrid ( x, y ) ;

Donde:

• x y y son dos vectores de tamaño m y n, respectivamente.

• El comando proporciona las matrices X y Y donde ambas tendrán una dimensión de n x m.

La matriz X contiene los valores de x repetidos en cada fila, y la matriz Y contiene los valores de y repetidos en cada columna.

Ejemplo

Supongamos que se desea evaluar la función:

z = x * e-X^2-Y^2

>>x = linspace ( -2 , 2 , 32 ) ;

>>y = linspace ( -2 , 2 , 32 ) ;

>>[ X Y ] = meshgrid ( x , y ) ;

>>Z = X .* exp ( - X .^ 2 – Y .^ 2 ) ;

>>mesh ( X , Y , Z ) ;

>>title ( ‘Gráfica 3-D de Malla’ ) ;

>>xlabel ( ‘X’ ) ; ylabel ( ‘Y’ ) ; zlabel ( ‘Z’ ) ;

Ejemplo

Gráfica de Malla y Contorno

>>meshc ( X, Y, Z ) ;

>>x = linspace ( -2 , 2 , 32 ) ;

>>y = linspace ( -2 , 2 , 32 ) ;

>>[ X Y ] = meshgrid ( x , y ) ;

>>Z = X .* exp ( - X .^ 2 – Y .^ 2 ) ;

>>meshc ( X , Y , Z ) ;

>>title ( ‘Gráfica 3-D de Malla’ ) ;

>>xlabel ( ‘X’ ) ; ylabel ( ‘Y’ ) ; zlabel ( ‘Z’ ) ;

Gráfica de Malla y Contorno

Gráfica de Superficie

>>surf ( X, Y, Z ) ;

>>x = linspace ( -2 , 2 , 32 ) ;

>>y = linspace ( -2 , 2 , 32 ) ;

>>[ X Y ] = meshgrid ( x , y ) ;

>>Z = X .* exp ( - X .^ 2 – Y .^ 2 ) ;

>>surf ( X , Y , Z ) ;

>>title ( ‘Gráfica 3-D de Superficie’ ) ;

>>xlabel ( ‘X’ ) ; ylabel ( ‘Y’ ) ; zlabel ( ‘Z’ ) ;

Gráfica de Superficie

Gráfica de Superficie y Contorno

>>surfc ( X, Y, Z ) ;

>>x = linspace ( -2 , 2 , 32 ) ;

>>y = linspace ( -2 , 2 , 32 ) ;

>>[ X Y ] = meshgrid ( x , y ) ;

>>Z = X .* exp ( - X .^ 2 – Y .^ 2 ) ;

>>surfc ( X , Y , Z ) ;

>>title ( ‘Gráfica 3-D de Superficie y Contorno’ ) ;

>>xlabel ( ‘X’ ) ; ylabel ( ‘Y’ ) ; zlabel ( ‘Z’ ) ;

Gráfica de Superficie y Contorno

Gráficas 3-D de contorno

>>contour ( X , Y , Z ) ;

>>x = linspace ( -2 , 2 , 32 ) ;

>>y = linspace ( -2 , 2 , 32 ) ;

>>[ X Y ] = meshgrid ( x , y ) ;

>>Z = X .* exp ( - X .^ 2 – Y .^ 2 ) ;

>>contour ( X , Y , Z ) ;

>>title ( ‘Gráfica 3-D de Contorno’ ) ;

>>xlabel ( ‘X’ ) ; ylabel ( ‘Y’ ) ;

Gráficas 3-D de contorno

>>contour ( X , Y , Z , n ) ;ó>>contour ( X , Y , Z , n , ‘características’ ) ;

Gráficas 3-D de contorno

>>clabel ( CS ) ;

ó

>>clabel ( CS , ‘manual’ ) ;

Gráficas 3-D de contorno

>>contour3 ( X , Y , Z ) ;

ó>>contour3 ( X , Y , Z , n ) ;ó>>contour3 ( X , Y , Z , n , ‘características’ ) ;

Gráficas 3-D de contorno

>>pcolor ( X , Y , Z ) ;

Cambiando el punto de vista (Viewpoint)

Azimuth = - 37.5 º

Elevación = 30 º

>>view ( Az , El ) ;

Cambiando el punto de vista (Viewpoint)

Az=-90 El=0 Vista lateral

Az=180 El=0 Vista posterior

Az=0 El=0 Vista frontal

Octava parteMETODOS NUMERICOS EN

MATLAB

Métodos Numéricos en Matlab

Ventajas

• Una programación más sencilla y estructurada.• Mayor amplitud y exactitud numérica.• Una biblioteca de funciones matemáticas muy completa.• Opción de crear funciones de usuario.• Capacidades de graficación muy eficientes.• Vinculación con lenguajes de programación tales como C

/ C++, Java y Fortran.• Transportabilidad de datos y programas con otras

aplicaciones.

Métodos Numéricos en Matlab

• Suma y resta de matrices

C = A + B ; ¿Condición?X = Z – Y ;

• Multiplicación de matrices

C = A * B ; ¿Condición?

• Trasposición de matrices’ (Apóstrofe)

A’ ¿Propiedades?

• Potencias de matricesA^2 equivale a: A * A, ¿Condición?B^3 equivale a: B * B * B

Métodos Numéricos en Matlab

Matriz inversa y Rango de una matriz

>>inv ( A ) ; ¿Todas tienen inversa?

Determinante de una matriz

>>det ( A ) ;

Métodos Numéricos en Matlab

Solución a sistemas de ecuaciones linealesA * x = bDonde:

A = Matriz de coeficientesx = Vector columna de las n incógnitas b = Vector columna de los términos independientes del sistema.

Para su solución basta con:

A

bx

Métodos Numéricos en Matlab

Equivale a:

x = A-1 * b

>>x = inv ( A ) * b ;

>>x = A \ b ;

Polinomios

Un polinomio es una relación de una serie de potencias; expresada en

forma de una función en una sola variable y que usualmente se

denota como:

f(x) = c1 xn + c2 xn-1 + c3 xn-2 +...+ cn-1 x2 + cn x + cn+1

Representación de polinomios

Por ejemplo:

P = - 4.7x5 + 8.2x4 – 9.6x3 – 5x2 + 4.8x - 6

Se representa como:

P = [ -4.7 8.2 -9.6 -5 4.8 -6 ] ;

Operaciones con polinomios

• Suma y resta de polinomios

¿Hay alguna restricción para esto?

¿Si los vectores de polinomios a sumarse o restarse son de diferente

tamaño? Por ejemplo:

f(x) = 3x4 – 2x3 + 5x2 + 3x - 6

+ g(x) = 2x3 + x + 4

Operaciones con polinomios

En Matlab:

>>p1 = [ 3 -2 5 3 -6 ] ;

>>p2 = [ 0 2 0 1 4 ] ;

>>pr = p1 + p2 ;

¿Que resulta?

Operaciones con polinomios

pr = [ 3 0 5 4 -2 ]

Que equivale a:

h(x) = 3x4 + 5x2 + 4x – 2.

Operaciones con polinomios

• Multiplicación y División de polinomios

La multiplicación y división de polinomios son operaciones de unmayor grado de complejidad y que en reiteradas ocasiones sonsusceptibles a errores por la cantidad de operaciones que se realizan enellas y la cantidad de términos que se manejan.

Matlab tiene las funciones correspondientes a las operaciones demultiplicación y división de polinomios a través de comandos.

Operaciones con polinomios

Multiplicación

>>conv ( a , b ) ;

Donde:a = Vector de coeficientes del polinomio 1.

b = Vector de coeficientes del polinomio 2.

¿Tienen que ser del mismo tamaño los polinomios?

Operaciones con polinomios

Por ejemplo, la multiplicación de

f(x) = 2x3 + 2x2 - 5x + 3

* g(x) = x2– 3x + 1

En Matlab:

>>a = [ 2 2 -5 3 ] ;

>>b = [ 1 -3 1 ] ;

>>p = conv ( a , b ) ;

Operaciones con polinomios

Proporciona el producto

p = [ 2 -4 -9 20 -14 3 ],

que equivale a:

h (x) = 2x5 - 4x4 – 9x3 + 20x2 - 14x + 3.

Operaciones con polinomios

División

>>[ c , r ] = deconv ( a , b ) ;

Por ejemplo, la división de

f(x) = 3 x4 – 2 x3 + 5 x2 + 3 x - 6

g(x) 2 x3 + x + 4

En Matlab:

>>p1 = [ 3 -2 5 3 -6 ] ;

>>p2 = [ 2 0 1 4 ] ;

>>[ c , r ] = deconv ( p1 , p2 ) ;

Operaciones con polinomios

Genera los vectores

c = [ 1.5 -1 ] que equivale al

cociente: 1.5 x – 1.5

Y

r = [ 0 0 3.5 -2 -2 ]

Equivalente al residuo: 3.5 x2 - 2 x – 2.

Operaciones con polinomios

• Raíces de polinomios

>>roots ( a ) ;

Por ejemplo, las raíces de

f(x) = x4 – 2.75x3 + 1.5x2 + 16x - 12

En Matlab:

>>p1=[ 1 -2.75 1.5 16 -12 ] ;

>>r = roots ( p1 ) ;

Operaciones con polinomios

Regresa:

r =

2.0000 + 2.0000i

2.0000 - 2.0000i

-2.0000

0.7500

Operaciones con polinomios

• Obtención del polinomio a partir de sus raíces

>>poly ( r ) ;

Por ejemplo, si originalmente se tiene

f(x) = 4x3 + x2 - 51x + 36

Sus raíces obtenidas con la función roots son:

r = [ -4.0000 3.0000 0.7500 ]

Si ahora, tenemos dichos valores y les aplicamos la

función poly tenemos que:

>>p = poly ( r ) ;

ó

>>p = poly ( [ -4 3 0.75 ] ) ;

Operaciones con polinomios

El comando regresa

p = [ 1 0.25 -12.75 9 ]

Que equivale a:

g(x) = x3+0.25x2 – 12.75x + 9.

Operaciones con polinomios

Evaluación de polinomios

>>polyval ( p , x ) ;

Donde:

p = Es el polinomio a evaluar

x = La abscisa en donde se quiere calcular f (x).

Operaciones con polinomios

Por ejemplo, si se tiene el polinomio

f(x) = 4x3 + x2 - 51x + 36

Y se quiere evaluar y(0.5), se tiene que:

En Matlab:

>>p = [ 4 1 -51 36 ] ;

>>s = polyval ( p, 0.5 ) ;

ó

>>s = polyval ( [ 4 1 -51 36 ] , 0.5 ) ;

Dá por resultado s = 11.25; es decir que el valor de

y(0.5) = 11.25.

¿Y si se quiere evaluar la función en varios valores de x?

Operaciones con polinomios

>>p = [ 4 1 -51 36 ] ;

>>x = [ .5 1.5 2.4 3.8 ] ;

>>s = polyval ( p, x ) ;

ó

>>s = polyval ( [ 4 1 -51 36 ] , [ .5 1.5 2.4 3.8 ] ) ;

El resultado es:

s = [ 11.25 -24.75 -25.344 76.128 ]

Que indican:

y(.5) = 11.25

y(1.5) = -24.75

y(2.4) = -25.344

y(3.8) = 76.128

Operaciones con polinomios

Derivación de un polinomio

Matlab nos brinda una función cuyo objetivo es proporcionar un

vector con los coeficientes correspondientes a la primera derivada de

un polinomio dado. Dicha función es:

>>polyder ( x ) ;

Operaciones con polinomios

Por ejemplo si se quiere derivar a:

f(x) = 4x3 + 2x2 - 5x + 6

En Matlab:

>>p = [ 4 2 -5 6 ] ;

>>s = polyder ( p ) ;

O también podemos escribir:

>>s = polyder ( [ 4 2 -5 6 ] ) ;

El comando regresa s = [ 12 4 -5 ],

Operaciones con polinomios

• Interpolación

• Ajuste de polinomios a datos tabulares

• Integración numérica en Matlab

Matemáticas simbólicas

• Agrupar términos semejantes

• Expandir una expresión

• Factorizar una expresión

• Simplificar una expresión

• Convertir de simbólico a valor numérico

• Realizar operaciones aritméticas simbólicas

• Resolución de ecuaciones

• Solución de ecuaciones diferenciales

• Derivación de expresiones simbólicas

• Integración de expresiones simbólicas

Programación en Matlab

Tipos de Archivos *.m

1. Archivos de comandos (scripts).- Conjunto

de comandos que se ejecutan

sucesivamente cuando se teclea el

nombre del archivo en la línea de

comandos de MATLAB.

2. Funciones.- Permiten definir funciones análogas a las

de MATLAB, con su nombre, sus

argumentos y sus valores de retorno.

Comandos de Programación

Asignación de valores a variables

N=N+1;

X=0

y=sin(x)≈

Entrada de valores desde teclado

x = input(‘Dame x’);≈

Entrada de valores desde teclado

Variante de la sentencia input

• Permite imprimir un mensaje en la línea de comandos de MATLAB y recuperar como valor de retorno un valor alfanumérico (texto).

• » nombre = input('¿Cómo te llamas?','s')

Salida de mensajes

disp(‘Mensaje’)

fprintf(‘Mensaje’)≈

Salida de resultados

fprintf(‘Result = %d’,x)≈

Sentencia fprintf

• Nos da una salida formateada• fprintf('El número de ecuaciones es: %d\n',n)• fprintf('El determinante es: %lf10.4\n',n)

• %s para cadenas de caracteres• %d para variables enteras• %f para variables de punto flotante• %lf para variables de doble precisión

• fprintf('\n\nSe cumplió el Error Permisible.\n');• fprintf('Método de Newton-Bayle\n\n');

Decisión

if Condición

Bloque de

objetos 1

else

Bloque de

objetos 2

end

12 ≈

Sentencia elseif (Bifurcación Múltiple)

if Cond 1

bloque 1

elseif Cond 2

bloque 2

elseif Cond 3

bloque 3

else (% opción por defecto)

bloque 4

end

bloque 1

bloque 2

bloque 3bloque 4

Ciclo for

for Var = Ini:1:Fin;

Bloque de

objetos

end

Ciclo while

while (N ~= 0) & (x>0)

Bloque de

objetos

end

Declaración de Funciones

function [vret_1,vret_2,etc.] = nombre(arg_1,arg2,etc)

Operaciones declaradas para la función

Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor de

retorno no hace falta poner corchetes. Tampoco hace falta poner paréntesis si no hay argumentos

Lista devalores

de retorno

Nombre querecibe la

nueva función

Lista deargumentos

a usar

Funciones definidas por el usuario

• El usuario tiene que escribir sus propios procedimientos oprogramas para resolver sus problemas particulares. A esto sele llama función definida por el usuario.

• El usuario define que parámetros o argumentos recibirá sufunción y los valores de retorno (resultados).

• Las funciones definidas por el usuario se almacenan en unarchivo de tipo texto que Matlab identifica con la extensión .mcreado con el m-file editor, y son usadas como las funciones debiblioteca.

Ejemplo de declaración de Funciones

function[sumita]=lasuma(a,b)

sumita=a+b;%esta es una muestra de como se crean scripts (funciones definidas por el%usuario)

Después de teclear estas sentencias en el editor de archivos m, el archivo sedebe de guardar en una de las carpetas de trabajo previamente definida paraMatlab.

Ahora, en la ventana de comandos ejecutarlo siguiente:

>>lasuma(1,2)

>>Help lasuma

HELP para las funciones de usuario

Las primeras líneas de comentarios de cada fichero de función son muy

importantes, pues permiten construir un help sobre esa función.

• » help mi_func

Referencias

• Rafael Campillo Rodríguez

Notas del Curso de Programación

Xalapa, 2002

• Javier García de Jalón, José Ignacio Rodríguez, Jesús Vidal

Aprenda Matlab 7.0 como si estuviera en primero

Madrid, 2005

• Carlos A. Mora Barradas

Notas del Curso de Programación

Xalapa, 2006

GRACIAS POR SU ATENCIÓN

Carlos Alberto Mora Barradas

[email protected]