método de la bisección

38
Método de la bisección Esta técnica se basa en el teorema del valor intermedio y parte del supuesto que y tienen signos opuestos. Aunque el procedimiento funciona bien para el caso en el que existe más de una solución en el intervalo , se considera por simplicidad que es única la raíz en dicho intervalo. Básicamente, el método consiste en dividir a la mitad repetidamente los subintervalos de y en cada paso, localizar la mitad que contiene a la solución, . Para empezar, hacemos y y calculamos el punto medio del intervalo y lo llamamos Si , entonces ; si no, tiene el mismo signo que o . Si y tienen el mismo signo, entonces , y tomanos y . Si y tienen el mismo signo, entonces , y tomanos y . Luego repetimos este proceso al intervalo . Esto produce el método descrito en el algoritmo de la figura 3 .

Upload: yeral-pabon-moreno

Post on 22-Dec-2015

242 views

Category:

Documents


4 download

DESCRIPTION

Método de La Bisección

TRANSCRIPT

Page 1: Método de La Bisección

Método de la bisección

 

Esta técnica se basa en el teorema del valor intermedio y parte del supuesto que y

tienen signos opuestos. Aunque el procedimiento funciona bien para el caso en el que

existe más de una solución en el intervalo , se considera por simplicidad que es única la raíz en dicho intervalo.

Básicamente, el método consiste en dividir a la mitad repetidamente los subintervalos de

y en cada paso, localizar la mitad que contiene a la solución, .

Para empezar, hacemos y y calculamos el punto medio del intervalo y lo llamamos

Si , entonces ; si no, tiene el mismo signo que o . Si

y tienen el mismo signo, entonces , y tomanos y

. Si y tienen el mismo signo, entonces , y tomanos

y . Luego repetimos este proceso al intervalo . Esto produce el método descrito en el algoritmo de la figura 3.

Page 2: Método de La Bisección

Figura 3: Algoritmo de la bisección.

 

Page 3: Método de La Bisección

Observación: como en cada iteración el intervalo es la mitad del intervalo anterior, podemos concluir que en la iteración la solución se encuentra en un intervalo de longitud

   Error Absoluto

para . Esto nos permite tener una idea de que tan cerca estamos de la solución real, incluso podemos usar esto para estimar el número de iteraciones necesarias para alcanzar una presición dada.

La implementación de este algoritmo con Excel es muy sencillas, como veremos.

Ejemplo

Para ilustar la forma en que podemos usar Excel, vamos a aproximar la solución de la ecuación

Lo primero es hallar un intervalo en el cual podamos garantizar la existencia de una solución. Por el teorema de las cotas sabemos que esta ecuación tiene sus soluciones dentro

del intervalo . Ahora, podemos usar el teorema del valor intermedio para refinar el

intervalo a y el teorema de Sturm para garantizar la unicidad de la solución real ([Childs 1995], [Kurosch 1987]). El próximo paso es usar Excel.

 

Page 4: Método de La Bisección

1. En las celdas A4 y B4 escribimos los valores de

y , respectivamente.2. En la celda C4 escribimos la fórmula que

calculará los puntos medios del intervalo:

3. En la celda D4 escribimos la fórmula que

calculará :

4. En la celda E4 escribimos la fórmula que calculará

:

5. En la celda F4 escribimos la fórmula que calculará

:

6. En la celda G4 escribimos la fórmula que calculará el error

7. En la celda A5 escribimos la fórmula que

calculará el nuevo extremo :

8. En la celda B5 escribimos la fórmula que calculará

el nuevo extremo :

Page 5: Método de La Bisección

 

Y por último, lo único que debemos hacer es ir generando las aproximaciones, para esto arrastramos cada columna una a una. El resultado de esto se muestra en la figura 4.

 

Figura 4: Método de la bisección:

Page 6: Método de La Bisección

El método de la bisección, aunque es conceptualmente claro, tiene inconvenientes importantes. Es muy lento en su convergencia (es decir, tiene que ser muy grande para

que sea pequeño, por ejemplo, se requiere de iteraciones para obtener un error absoluto menor a en el ejemplo anterior), además una buena aproximación intermedia puede ser descartada inadvertidamente. Sin embargo, el método tiene la importante propiedad de que siempre converge a una solución, además de que lo único que se requiere

es que sea continua, es por estas razones que se usa con frecuencia como punto de partida de métodos más eficientes.

 

5.1. MÉTODO DE BISECCIÓN

Ver Animación...

Si f es una función continua sobre el intervalo [a,b] y si f(a) f(b)<0, entonces f debe tener un cero en (a,b). Dado que f(a)f(b)<0, la función cambia de signo en el intervalo [a,b] y por lo tanto tiene por lo menos un cero en el intervalo. (Véase la figura 5.1)

Esta es una consecuencia del teorema del valor intermedio para funciones continuas, que establece que si f es continua en [a,b] y si k es un número entre f(a) y f(b) , entonces existe por lo menos un c (a,b) tal que f(c)=k.(para el caso en que f(a)f(b)<0 se escoge k=0, luego f(c)=0, c (a,b)).

El método de bisección consiste en dividir el intervalo en 2 subintervalos de igual magnitud, reteniendo el subintervalo en donde f cambia de signo, para conservar al menos una raíz o cero, y repetir el proceso varias veces.

Por ejemplo, suponga que f tiene un cero en el intervalo [a,b].

Primero se calcula el punto medio del intervalo ; después se averigua sí f(a)f(c)<0. Si lo es, entonces f tiene un cero en [a,c].

A continuación se renombra a c como b y se comienza una vez más con el nuevo intervalo [a,b], cuya longitud es igual a la mitad del intervalo original.

Si f(a)f(c)>0 , entonces f(c)f(b)<0 y en este caso se renombra a c como a.

En ambos casos se ha generado un nuevo intervalo que contiene un cero de f, y el proceso puede repetirse.

Page 7: Método de La Bisección

Ejemplo.

La función f(x) = xsenx – 1 tiene un cero en el intervalo [0,2], porque f(0) = -1 y f(2)=0.818595.

Si se denota con entonces c1 = 1. Ahora f(c1) = f(1) = -0.158529, luego la función tiene un cero en el intervalo [c1, b1] = [1,2] ; se renombra a2=c1 y b2=b1 .

El nuevo punto medio es y f(c2) = f(1.5) = 0.496242, el cero esta en el intervalo [a2, c2] y se renombra como [a3,b3].

En la tabla de abajo se muestran las primeras nueve iteraciones del método de bisección para f(x)= xsenx –1 con a=0 b=2.

nExtremo

izquierdo an

Extremo derecho bn

Punto medio cn

Valor de la función f(cn)

Error Relativo

1 0 2 1 -0.158529

2 1 2 1.5 0.496242 0.333333

3 1 1.5 1.25 0.186231 0.2

4 1 1.25 1.125 0.015051 0.111111

5 1 1.125 1.0625 -0.071827 0.0588235

6 1.0625 1.125 1.09375 -0.028362 0.0285714

7 1.09375 1.125 1.109375 -0.006643 0.0140845

8 1.1093750 1.125 1.1171875 0.004208 0.0069930

9 1.1093750 1.1171875 1.11328125 -0.001216 0.0035087

(c = 1.114157141 es el cero de f(x) = xsenx - 1)

Para detener el método de bisección y dar una aproximación del cero de una función se pueden usar varios criterios (llamados criterios de parada).Uno de los criterios de parada consiste en examinar si |f(cn)| < , donde es una tolerancia previamente establecida (por ejemplo = 10-3). Otro criterio que puede utilizarse es

examinar sí También se puede usar como criterio de parada el error relativo entre dos aproximaciones

Page 8: Método de La Bisección

del cero de f , En el ejemplo anterior si =0.005, el procedimiento se pararía en la octava iteración con el criterio |f(cn)|< , ya que:          |f(c8)| = |f(1.1171875)| = 0.004208 < = 0.005,

pero si se usa el criterio , el procedimiento se detendría en la novena iteración porque:

Cuando se generan aproximaciones por medio de una computadora, se recomienda fijar un número máximo de iteraciones N que debería realizar la máquina. Esto con el fin de contar con un resguardo para evitar la posibilidad de que el proceso de cálculo caiga en un ciclo infinito cuando la sucesión diverge (o cuando el programa no esta codificado correctamente). Un algoritmo para el método de bisección es:

Teorema. (Error en el método de bisección).

Si f es continua en [a, b] y f(a) f(b) < 0, el método de bisección genera una sucesión que

aproxima un cero c de f con la propiedad que: , n 1 (Prueba)

Page 9: Método de La Bisección

Ejemplo.

Para determinar el número de iteraciones necesarias para aproximar el cero de f(x) = xsen x - 1 con una exactitud de 10-2en el intervalo [0,2], se debe hallar un número n tal que:

< 10-2, es decir , n > 7.643...

se necesitan aproximadamente unas 8 iteraciones.

Observe en la tabla de aproximaciones que el cero de f(x) = xsen x - 1 es c=1.114157141 y c8=1.1171875.

El error real es = 0.003030359 3x10-3. El error real es menor que el error dado por el teorema; en la mayoría de casos la cota de error dada por el teorema es mayor que el número de iteraciones que realmente se

necesitan. Para este ejemplo, = 0.004782141<10-2 = 0.01

Notas:

El método de bisección tiene la desventaja que es lento en cuanto a convergencia (es decir que se

necesita un n grande para que sea pequeño). Otros métodos requieren menos iteraciones para alcanzar la misma exactitud, pero entonces no siempre se conoce una cota para la precisión.

El método de bisección suele recomendarse para encontrar un valor aproximado del cero de una función, y luego este valor se refina por medio de métodos más eficaces. La razón es porque la mayoría de los otros métodos para encontrar ceros de funciones requieren un valor inicial cerca de un cero; al carecer de dicho valor, pueden fallar por completo.

Resolver una ecuación en una variable como por ejemplo: xex=1 es equivalente a resolver la ecuación xex-1=0 , o a encontrar el cero de la función f(x) = xex-1. Para aproximar el cero de f o la raíz de la ecuación se puede hacer la gráfica de f en una calculadora o usar matlab para determinar un intervalo donde f tenga un cero. También se pueden ensayar números a y b de tal manera que f(a)f(b)<0. Para el caso de f(x) = xex-1 por ejemplo f(0) = -1, f(1) = e-1 1.71828 entonces f tiene un cero en el intervalo [0,1].

Cuando hay raíces múltiples, el método de bisección quizá no sea válido, ya que la función podría no cambiar de signo en puntos situados a cualquier lado de sus raíces. Una gráfica es fundamental para aclarar la situación. En este caso sería posible hallar los ceros o raíces trabajando con la derivada

Metodo newton

Este método, el cual es un método iterativo, es uno de los más usados y efectivos. A diferencia de los métodos anteriores, el método de Newton-Raphson no trabaja sobre un intervalo sino que basa su fórmula en un proceso iterativo.

Supongamos que tenemos la aproximación    a la raíz    de 

Page 10: Método de La Bisección

,

Trazamos la recta tangente a la curva en el punto  ; ésta

cruza al eje    en un punto   que será nuestra siguiente

aproximación a la raíz  .

Para calcular el punto  , calculamos primero la ecuación de la recta tangente. Sabemos que tiene pendiente

Y por lo tanto la ecuación de la recta tangente es:

Hacemos  :

Y despejamos  :

Que es la fómula iterativa de Newton-Raphson  para calcular la siguiente aproximación:

,   si

Note que el método de Newton-Raphson  no trabaja con intervalos donde nos asegure que encontraremos la raíz, y de hecho no tenemos ninguna garantía de que nos aproximaremos a dicha raíz. Desde

Page 11: Método de La Bisección

luego, existen ejemplos donde este método no converge a la raíz, en cuyo caso se dice que el método diverge. Sin embargo, en los casos donde si converge a la raíz lo hace con una rapidez impresionante, por lo cual es uno de los métodos preferidos por excelencia.

También observe que en el caso de que  , el método no se puede aplicar. De hecho, vemos geométricamente que esto significa que la recta tangente es horizontal y por lo tanto no intersecta al

eje   en ningún punto, a menos que coincida con éste, en cuyo

caso   mismo es una raíz de  !

Ejemplo 1Usar el método de Newton-Raphson, para aproximar la raíz de

, comenzando con    y hasta que  .SoluciónEn este caso, tenemos que

De aquí tenemos que:

Comenzamos con  y obtenemos:

En este caso, el error aproximado es,

Continuamos el proceso hasta reducir el error aproximado hasta donde se pidió.Resumimos los resultados en la siguiente tabla:

Aprox. a la raíz Error aprox.1

1.268941421 21.19%1.309108403 3.06%1.309799389 0.052%

Page 12: Método de La Bisección

De lo cual concluímos que  , la cual es correcta en todos sus dígitos!La misma idea puede aplicarse para crear algoritmos que aproximen

raíces -ésimas de números reales positivos.Observe que cuando el método de Newton-Raphson converge a la raíz, lo hace de una forma muy rápida y de hecho, observamos que el error aproximado disminuye a pasos agigantados en cada paso del proceso. Aunque no es nuestro objetivo establecer formalmente las cotas para los errores en cada uno de los métodos que hemos estudiado, cabe mencionar que si existen estas cotas que miden con  mayor precisión la rapidez ó lentitud del método en estudio.

Veremos a continuación un ejemplo del metódo de Newton Raphson, con la siguiente ecuación:

# Fxn Dfxn Nuevo Xm1 18 4 -3.52 -30.375 37.75 -2.69536423841063 -6.2771541041392 22.794965133108 -2.4199896516334 -0.59229583988115 18.569049742033 -2.38809271301155 -0.0073539466744812 18.108960417816 -2.38768661865246 -1.1814129692311E-6 18.103142166676 -2.3876865533923

Hemos terminado de analizar el método de la Newton Rapshon, en este ejemplo con un error de 0.0001; se encuentra la última raiz(Xm): -2.3876865533923 con 6 iteracciones.

Algoritmo de la Secante Programar en Matlab el algoritmo de la secante

clcF=input('Ingrese la funcion entre comillas: ');x0=input('Ingrese el valor de X0: ');x1=input('Ingrese el valor de X1: ');e=input('Ingrese el error: ');n=input('Ingrese el numero maximo de Iteraciones: ');f=inline(F);

for i=2 : n    if f(x0) < f(x1)

Page 13: Método de La Bisección

       aux=x0;       x0=x1;       x1=aux;    end    x2=x1-(((x1-x0)/(f(x1)-f(x0)))*f(x1));    if f(x2)<e        i=n+1;    end    x1=x0;    x0=x2;end

fprintf('La raiz de la funcion es: ');disp(x2);

Empezamos con un conjunto de n+1 puntos en el plano (que tengan diferentes coordenadas x):

(x0, y0), (x1, y1), (x2, y2),....,(xn, yn).

Nuestro objetivo es encontrar una función polinómica que pase por esos n+1 puntos y que tengan el menor grado posible. Un polinomio que pase por varios puntos determinados se llama un polinomio de interpolación.

Vamos a ver una forma de la solución que es el llamado polinomio de interpolación de Lagrange. (Lagrange publicó su fórmula en 1795 pero ya había sido publicada en 1779 por Waring y redescubierta por Euler en 1783).

La fórmula general para el polinomio de interpolación de Lagrange es

Donde usamos polinomios básicos de Lagrange:

Expandiendo el producto para verlo mejor:

Page 14: Método de La Bisección

Estos polinomios básicos de Lagrange se construyen con una propiedad:

Entonces es muy fácil comprobar que estos polinomios pasan por todos los n+1 puntos dados (es decir, es un polinomio de interpolación):

El grado del polinomio de interpolación de Lagrange es igual o menor que n. Es el menor grado posible. El polinomio encontrado es único. Hay otras maneras de calcular este polinomio (con sus ventajas e inconvenientes). La forma de Lagrange es sencilla y se comprueba con facilidad que es un polinomio de interpolación y su grado. Pero para conocer los coeficientes del polinomio hay que simplificar los términos. Otra característica de esta forma de encontrar el polinomio es que si añadimos o quitamos puntos hay que recalcularlo otra vez.

Vamos a ver algunos ejemplos. El más sencillo es una recta. Dados dos puntos (x0, y0) y (x1, y1) hay exactamente una recta que pasa por esos dos puntos:

Page 15: Método de La Bisección

Dados tres puntos (x0, y0), (x1, y1) y (x2, y2), con coordenadas x diferentes, o bien los tres puntos están en una recta o hay un polinomio de segundo grado (una parábola) que pasa por esos tres puntos. En cualquier caso, hay un polinomio de grado como mucho 2 que pasa por esos tres puntos.

Page 16: Método de La Bisección

Si tenemos 4 puntos, podemos encontrar un polinomio de grado 3 (o quizás una parábola o una línea recta en algunos casos) que pasa por esos 4 puntos:

Page 17: Método de La Bisección

Un función polinómica de grado 4 pasa a través de 5 puntos:

Page 18: Método de La Bisección

Usaremos los polinomios de interpolación de Lagrange para construir aplicaciones interactivas relacionadas con funciones polinómicas, sus derivadas e integrales.

Las funciones polinómicas con coeficientes reales o complejos de grado n tienen siempre n raíces (reales o complejas)(Teorema fundamental del Álgebra):

Comandos en matlab

Una primera mirada a MATLAB

Cargue el programa MATLAB en su computador.

El entorno de MATLAB está organizado mediante ventanas

Command Window: es la ventana de comandos para ejecución de instrucciones

Command History: es el registro de los comandos que han sido ingresados.

Workspace: contiene la descripción de las variables usadas en cada sesión.

Inicialmente, se sugiere dejar activa únicamente la ventana de comandos, cerrando las otras ventanas con el botón x.

Para restaurarlas use la opción view de la barra de herramientas de MATLAB.

Los ejemplos de este manual debe probarlos en la ventana de comandos

El símbolo >> indica que el programa está listo para recibir sus instrucciones.

Escriba cada ejemplo y presione la tecla de ingreso para finalizar.

MATLAB muestra el resultado inmediatamente, o un mensaje si hubo algún error.

Al final de cada ejemplo hemos incluido con letra azul una breve explicación.

Por supuesto, usted no tiene que escribir en el computador estas explicaciones.

>> exp(2)/3 calcule y muestre inmediatamente el resultado

ans =

2.4630 respuesta mostrada por Matlab, ans proviene de answer

>> x=exp(2)/3; calcule y asigne el resultado a la variable x

Page 19: Método de La Bisección

>> x escriba la variable para conocer su contenido

x =

2.4630 respuesta mostrada por MATLAB

>> x=exp(2)/3 al omitir ; el resultado se muestra inmediatamente

x =

2.4630 respuesta mostrada por MATLAB

>> y=2*x+1 puede usar el contenido de las variables

y =

5.9260 respuesta mostrada por MATLAB

>> x=x+1 puede modificar el contenido de las variables

x =

3.4630 respuesta mostrada por MATLAB

Puede reutilizar comandos con las teclas del cursor ¯ . Pruébelo.

>> x=exp(2)/3; y=2*x+1, z=3*x Puede escribir y ejecutar varios

comandos en una misma línea

y =

5.9260 respuestas mostradas por MATLAB

z =

7.3891

El sistema de ayuda de MATLAB

Ofrece una descripción detallada del uso de cada comando.

>> help despliega temas de ayuda

>> help ops despliega comandos de un tema. Ej. lista de operadores

>> help exp uso de un comando específico. Ej. función exponencial

Adicionalmente, presionando el ícono Help usted puede entrar al sistema de ayuda de MATLAB organizado por contenido, índice, búsqueda y demostraciones.

Page 20: Método de La Bisección

Algunos ejemplos para apreciar el poder de MATLAB

2x + 3y = 4

5x – 2y = 6

>> a=[2, 3; 5, -2]; ingrese la matriz de coeficientes

>> b=[4; 6]; ingrese el vector columna de constantes

>> x=inv(a)*b; obtenga la solución con la función para invertir

>> x muestre el vector solución

Resuelva el sistema:

>> ezplot('sin(x)*exp(x)', 0, pi); escriba la función entre comillas simples

>> grid on; muestre cuadrículas en el gráfico

Grafique la función f(x)=sen(x) ex en el intervalo 0 £ x £ p

>> a=[5, 2, -3, 1]; ingrese los coeficientes de la ecuación

>> x=roots(a) obtenga y muestre las raíces de la ecuación

Resuelva la ecuación cúbica 5x3 + 2x2 - 3x + 1 = 0;

>> y=dsolve('Dy-x-y=0','y(0)=1', 'x'); defina la ecuación, condición y variable

>> y muestre la solución analítica obtenida

>> ezplot(y, 0, 2); grafique la solución para 0 £ x £ 2

>> grid on muestre cuadrículas

Obtenga la solución de la ecuación diferencial ordinaria: y´-x-y = 0, y(0)=1

>> f=int('x*sin(x)') obtenga el resultado analítico

>> s=int('x*sin(x)',0,pi) integre entre 0 y p

Integre la función f(x) = x sen(x)

Manejo simbólico de expresiones

>> syms x defina x con tipo simbólico

>> y=x^3-8 una expresión con x

>> t=factor(y) factorar la espresión asignada a y

Page 21: Método de La Bisección

>> e=taylor(exp(x), 5); expandir ex con 5 términos de la serie de Taylor

Símbolos especiales que usa MATLAB

[ ] para definir vectores y matrices

( ) para definir precedencia en expresiones y para subíndices

, para separar elementos de un vector use comas o espacios

; para separar filas y para evitar mostrar contenido de variables

% para iniciar un comentario (programas y funciones)

... para continuar un comando en la siguiente línea

CÁLCULO NUMÉRICO

Formatos de exhibición de números en la pantalla

>> format long muestra 14 decimales

>> x=exp(2) un ejemplo para visualizar

>> format bank 2 decimales

>> x

>> format rat notación racional (fracciones)

>> x

>> format short e notación científica

>> x

>> format long e notación científica con 14 decimales

>> x

>> format + muestra signos +, , -

>> x

>> format short 4 decimales (MATLAB lo usa por omisión)

>> x

>> format compact suprime líneas adicionales en la salida

>> x

Page 22: Método de La Bisección

>> format loose inserta líneas en blanco en la salida(recomendado)

>> x

>> format hex formato hexadecimal

>> x

>> vpa(sqrt(2), 100) variable precision arithmetic

(muestra la raíz cuadrada de 2 con 100 dígitos

>> format short regrese al formato normal de MATLAB

Operadores aritméticos

+ - * / \ ^ ( ) ^ se usa para potenciación

/ es división a la derecha

\ es división a la izquierda

>> help ops liste los operadores y caracteres especiales

Funciones matemáticas

exp, log, sqrt, sin, cos, tan, .....

>> help elfun liste las funciones matemáticas elementales

Practique con expresiones aritméticas

>> x=sin(3)+3*exp(2)

Operadores relacionales y lógicos

< <= > >= == ~= & | ~ los tres últimos corresponden a: Ù Ú ù

== representa al símbolo =

~= representa al símbolo ¹

Practique con operadores relacionales y lógicos

>> t=sin(2) < 0.8 & log(2) > 0.5 el resultado es un valor lógico (0 o 1)

Símbolos numéricos especiales

>> 2/0

Inf es el símbolo ¥

Page 23: Método de La Bisección

>> 0/0

NaN significa "Not A Number" (valor indeterminado)

>> pi contiene la constante p

>> eps es la precisión del tipo real en MATLAB

>> realmin el menor número real en MATLAB

>> realmax el mayor número real en MATLAB

>> i representa al símbolo complejo Ö -1

Practique con números complejos

>> x=3+2i asigne un número complejo

>> t=2*x + 3 - 5i operación con números complejos

>> y=exp(x) el resultado también es complejo

>> y=log(-2) el referencial de MATLAB son los complejos

Funciones adicionales para números complejos

conj, real, imag, abs, angle, complex

>> z=3+2i;

>> t=conj(z) obtenga el conjugado

Variables

No requieren ser declaradas

Su tipo depende del valor asignado

Pueden ser redefinidas

Sensible al tipo de letra (mayúsculas o minúsculas)

ans es la variable por omisión provista por MATLAB

Matlab realiza la asignación de memoria a variables durante la ejecución.

>> x=3 x es de tipo real

>> x='mensaje' x es de tipo literal (use comillas simples)

>> syms x x es un símbolo

Page 24: Método de La Bisección

>> x=[2 7 4] x es un vector

>> x=2+3i x es de tipo complejo

>> x muestre el contenido actual de la variable

>> whos x muestre el tipo actual de la variable

>> disp(x) muestre solamente el contenido

>> x=input('¿dato?'); ingrese un valor para una variable desde el teclado

>> exp(x)/3

>> ans la variable ans contiene el último resultado

>> y=2*ans la puede usar

Algunos comandos del Sistema Operativo

>> help general lista de comandos

>> who lista las variables en uso

>> whos lista las variables en uso y su descripción

clear borra variables.

>> clear a b c ejemplo

>> clc despeja la ventana de comandos

>> pwd muestra cual es el directorio actual

cd cambia la ruta del directorio actual

>> cd c:\matlab\work ejemplo

>> dir lista el contenido del directorio actual

save almacena las variables en un archivo .mat

>> save prueba ejemplo

load carga variables y su contenido

>> load prueba ejemplo

delete elimina archivo

>> delete prueba.mat ejemplo

Page 25: Método de La Bisección

>> quit para terminar la sesión con MATLAB (no lo digite)

Comandos especiales

>> date fecha

>> clock fecha hora, vea su uso con help.

>> format rat para visualizar la fecha con mas claridad

>> clock

>> format short vuelva al formato normal

Cadenas de caracteres

>> x='Matematica'; asignación de una cadena (use comillas simples)

>> x(4) manejo de un carácter de la cadena, use un indice

En MATLAB los índices se escriben entre

paréntesis y son numerados desde 1

>> t=x(2:5); manejo de una subcadena, use: (inicio: final)

>> n=length(x) longitud de la cadena

>> c=strcat(x, t) concatenación de cadenas

>> help strfun liste las funciones para cadenas

Vectores y Matrices

>> x=[3, -1, 4, 7, -2] asignación directa de un vector fila

>> x=[3 -1 4 7 -2] puede separar con comas o con espacios

>> x(2)=5 manejo de un componente del vector.

En MATLAB los índices se escriben entre

paréntesis y son numerados desde 1

>> y=x(2: 4) para asignar parte de un vector use (inicio: final)

>> t=[3; -1; 4; 5] para asignar un vector columna use ;

>> t=x' para obtener la transpuesta de un vector use '

x' es la transpuesta del vector x

Page 26: Método de La Bisección

>> y=[3, x, -6, 7] puede asignar un vector usando otro vector

>> y=[2:1:10] puede asignar un vector mediante una secuencia

En MATLAB las secuencias se escriben:

valor inicial : incremento : valor final

si el incremento es 1 puede omitirlo

>> y=[2, 5, 4, ... Para continuar en la siguiente línea use ...

7, -3] escriba la continuación de la línea anterior

>> x=[3, 5, 2, 0]

>> y=2*x puede realizar operaciones escalares

>> y=exp(x) o crear vectores con funciones

>> a=[6 3 ; 5 1] asignación directa de una matriz 2x2

separe elementos con espacios o comas

separe filas con punto y coma

>> a(2,1) manejo de los componentes de una matriz con índices numerados desde 1: (fila, columna)

>> a=[2, -3; 5, 1; 0, 7] una matriz 3x2

>> x=[7, 3]

>> a=[x; x] una matriz 2x2

>> b=[5, 6]

>> c=[a; b] c es una matriz aumentada 3x2

>> d=[a, b'] c es una matriz aumentada 2x3

>> x=c(1, :) asigne a x la primera fila de c

>> x=c(: ,1) asigne a x la primera columna de c

>> c(:,2)=[ ] elimine la segunda columna de c

Matrices especiales

>> a=ones(5) matriz 5x5 iniciada con unos

Page 27: Método de La Bisección

>> a=ones(3,5) matriz 3x5 iniciada con unos

>> a=zeros(4,5) matriz 4x5 iniciada con ceros

>> a=eye(5) matriz identidad 5x5

>> a=magic(4) cuadrado mágico 4x4

>> a=hilb(5) matriz de Hilberth 5x5

>> x=[2, 5, 3, 7];

>> a=vander(x) matriz de Vandermonde 4x4 usando un vector

>> a=[ ] matriz nula

Generación de números aleatorios

>> x=rand genera un número aleatorio entre 0 y 1

>> a=rand(5) genera una matriz 5x5 con números aleatorios

>> b=rand(4,5) genera una matriz 4x5 con números aleatorios

>> d=fix(rand*10)+1 transfomación para obtener un entero aleatorio

entre 1 y 10

Una matriz puede componerse con otras matrices

>> a=rand(3); matriz 3x3 con números aleatorios

>> b=[5 3 9]; vector de tres componentes

>> e=diag(b); matriz 3x3 con b en la diagonal

>> c=eye(3); matriz identidad 3x3

>> d=zeros(3); matriz con ceros 3x3

>> t=[a e; c d] matriz compuesta 9x9

Editor de matrices

En la ventana workspace puede activar el editor de arreglos, similar a una

hoja electrónica, con el cual puede modificar con facilidad las dimensiones y

el contenido de vectores y matrices.

Elementos de vectores y matrices pueden manejarse con otro vector o matriz

Page 28: Método de La Bisección

>> x=[ 8 7 9 5 6];

>> p=[2 4 1]; vector para direccionar al vector x

>> t=x(p) t contiene los elementos 2, 4 y.1 del vector x

>> a=[4 7 3; 5 7 8; 6 0 9];

>> p=[1 3]; vector para direccionar las filas de la matriz a

>> q=[2 3]; vector para direccionar las columnas de la matriz a

>> t=a(p, q) t contiene las filas 1 y 3, columnas 2 y 3 de a

Operaciones con matrices

>> a=[3, 2; 1, 4];

>> b=[8, 6; 5, 7];

>> c=a' transpuesta de a

>> c=2*a producto de un escalar por matriz

>> c=a+b suma de matrices

>> c=a*b producto de matrices

>> c=a.*b producto elemento por elemento de matrices

para operar elemento a elemento use un punto

antes del operador

>> c=a^2 matriz al cuadrado, equivale a: a*a

>> c=a.^2 cada elemento de la matriz a, elevar al cuadrado

>> c=a==b compare igualdad entre matrices (de igual tamaño)

el resultado es una matriz binaria (ceros y unos)

>> c=a~=b compare si dos matrices no son iguales

el resultado es una matriz binaria (ceros y unos)

>> c=a>3 compare si cada elemento de a es mayor a 3

el resultado es una matriz binaria (ceros y unos)

Funciones para matrices

Page 29: Método de La Bisección

>> x=[-2, 0, 6, 5]; un vector para los ejemplos

>> a=[1, 2, 3; 4, 5, 6;7, 8, 9]; una matriz para los ejemplos

>> n=length(x) longitud del vector x

>> [n,m]=size(a) tamaño de la matriz a: el resultado es un vector

>> n número de filas: 3

>> m número de columnas: 3

>> exist('c') chequea si la variable existe

>> isempty(a) chequea si un vector o matriz está vacío

>> any(x) determina si el vector contiene algún valor no cero

>> any(a) igual que arriba, pero por columnas de la matriz

>> t=find(x) obtiene índices de elementos del vector no ceros

>> t=find(x>3) obtiene los índices de cada elemento > 3

>> [f,c]=find(a) obtiene los índices de filas y columnas de la matriz

cuyos elementos son no ceros

>> t=dot(x, x) producto punto entre dos vectores

>> k=rank(a) rango de a

>> t=trace(a) traza de a

>> d=det(a) determinante de a

>> b=inv(a) inversa de a

>> h=norm(a, 1) norma de columna de la matriz a

>> h=norm(a, inf) norma de fila de la matriz a

>> h=norm(x, inf) norma de fila o columna del vector x

>> c=cond(a) número de condición de la matriz a

>> t=diag(a) vector con la diagonal de la matriz a

>> t=diag(x) matriz con x en la diagonal

>> t=rot90(a) rote a 90 grados (sentido opuesto al reloj)

Page 30: Método de La Bisección

>> t=fliplr(a) voltee horizontalmente la matriz a

>> t=tril(a) obtenga la matriz triangular inferior de a

>> t=triu(a) obtenga la matriz triangular superior de a

>> b=[5,-1; 3, 4; 2, 7];

>> b=reshape(b, 2, 3) reconfigura la matriz b de 3x2 a 2x3

>> [t,s]=lu(a) descomposición triangular de a en las matrices

>> t triangulares t y s tales que t*s es igual que a

>> s

>> t*s se obtiene la matriz a

>> t=cov(a) matriz de covarianza de a

>> e=eig(a) valores propios de a

>> p=poly(a) polinomio característico de a

>> r=roots(ans) valores propios de a

>> help matfun liste las funciones para matrices

Ingreso de puntos desde la pantalla con el mouse

>> ezplot('sin(x)'); ejemplo para tomar puntos desde un gráfico

>> grid on

>> [x,y]=ginput(5); ingrese 5 puntos desde la pantalla .

Presione el botón del mouse para

ingresar cada punto

>> x observe las abscisas

>> y y las ordenadas ingresadas

>> plot(x, y, 'o') grafique los puntos ingresados

Funciones adicionales para manejo de datos con vectores y matrices

>> x=[2, 5, 4]; un vector

>> a=[5,-1; 3, 4; 2, 7]; una matriz

Page 31: Método de La Bisección

>> t=max(x) el mayor valor del vector x

>> v=max(a) el mayor valor por columnas de la matriz a

>> t=sum(x) suma de componentes

>> v=sum(a) suma de componentes por columnas

>> t=prod(x) producto escalar

>> v=prod(a) producto escalar por columnas

>> t=cumsum(x) suma acumulada

>> v=cumsum(a) suma acumulada por columnas

>> t=cumprod(x) producto acumulado

>> v=cumprod(a)

>> t=mean(x) media aritmética

>> v=mean(a)

>> t=median(x) mediana

>> v=median(a)

>> t=std(x) desviación estándar

>> v=std(a)

>> t=sort(x) ordenamiento ascendente

>> v=sort(a)

>> t=dsort(x) ordenamiento descendente

>> bar(x) diagrama de barras

>> bar(a)

>> hist(x) histograma

>> stairs(x) dibuja x mediante escalones

>> pie(x) gráfico tipo pastel

>> pie3(x) pastel en relieve

>> v=[0,1,0] vector para extraer sectores del pastel

Page 32: Método de La Bisección

>> pie3(x,v) gráfico tipo pastel con un sector separado

Polinomios

>> a=[2, -3, 0, 5}, define el polinomio 2x3 – 3x2 + 5

>> y=polyval(a,4) evaluación del polinomio con un valor

>> x=roots(a) obtenga un vector con raíces (reales y complejas)

>> t=polyval(a, x(1)) verifique una raíz

>> p=poly(x) producto de todas las raíces

>> b=[3, 4, -2]; define el polinomio 3x2+ 4x - 2

>> c=conv(a,b) producto de polinomios

>> [c, r]=deconv(a,b); división de polinomios

>> c cociente

>> r residuo

>> x=[2 3 5 7 8]; abscisas de puntos (x,y)

>> y=[3.2 4.1 5.8 6.4 6.3]; ordenadas de los puntos

>> z=3.2; valor para interpolar, z puede ser un vector

>> u=interp1(x,y,z,’linear’) resultado de la interpolación lineal

>> u=spline(x,y,z) interpolación con un trazador cúbico

>> a=polyfit(x, y, 2); polinomio de mínimos cuadrados de grado 2

>> a el vector a contiene los coeficientes

Practique: Obtenga y grafique el polinomio de interpolación, la recta de mínimos cuadrados y el trazador cúbico para un conjunto de datos dados

>> x=[1 2 4 5 7]; cinco puntos (x, y) para el ejemplo

>> y=[5 3 6 7 4];

>> plot(x,y,'o') grafique los datos con círculos

>> grid on poner cuadrículas

>> hold on superponer los siguientes gráficos

Page 33: Método de La Bisección

>> a=polyfit(x,y,4); polinomio de interpolación, 5 puntos: grado 4

>> a coeficientes a(1)x^4 + a(2)x^3 + a(3)x^2 + ...

>> z=[1: 0.1: 7]; puntos para evaluar el polinomio

>> p=polyval(a,z); evalúe el polinomio con z obtenga puntos p

>> plot(z,p) grafique el polinomio de interpolación

>> b=polyfit(x,y,1); recta de mínimos cuadrados (grado 1)

>> b coeficientes de la recta: b(1)x + b(2)

>> t=[1 7]; puntos extremos de la recta (abscisas)

>> q=polyval(b,t); obtenga las ordenadas respectivas de la recta

>> plot(t,q,'r') grafique la recta en color rojo

>> s=spline(x,y,z); evalúe con z el trazador cúbico y obtenga s

>> plot(z,s,'g') grafique el trazador cúbico con verde

>> hold off deshabilite la superposición de gráficos

Leer más: http://www.monografias.com/trabajos36/matlab-programacion/matlab-programacion2.shtml#ixzz3KeNXoOQV