Vous êtes sur la page 1sur 65

Captulo 1: Fundamentos

Captulo 1: Fundamentos
Clculo Numrico Cristian G. Prez Toledo
Departamento de Ciencias Bsicas Campus Los ngeles Universidad de Concepcin

Segundo Semestre 2012

1 / 65

Captulo 1: Fundamentos

1 Introduccin

2 Octave

2 / 65

Captulo 1: Fundamentos Introduccin Algunos conceptos bsicos

El anlisis numrico o clculo numrico es el estudio de los mtodos que utilizan aproximacin numrica para la resolucin de los problemas de la matemtica aplicada. Algunos problemas de la matemtica aplicada son: resolucin de ecuaciones no lineales resolucin de sistemas lineales interpolacin de funciones aproximacin de funciones derivacin de funciones integracin de funciones resolucin de ecuaciones diferenciales ordinarias
3 / 65

Captulo 1: Fundamentos Introduccin Algunos conceptos bsicos

Un mtodo numrico es un procedimiento mediante el cual es posible transformar un problema matemtico en un problema numrico.

Un mtodo numrico tambin es un procedimiento mediante el cual un problema numrico se puede resolver utilizando un nmero nito de clculos puramente aritmticos y lgicos.

4 / 65

Captulo 1: Fundamentos Introduccin Algunos conceptos bsicos

Un problema numrico es una descripcin precisa de la relacin funcional entre un conjunto nito de datos numricos de entrada, y un conjunto nito de datos numricos de salida.

Un algoritmo es un conjunto de instrucciones o reglas bien denidas y ordenadas, que transforman los datos de entrada de un problema numrico en los datos de salida, para obtener la as llamada solucin numrica de un problema matemtico.
5 / 65

Captulo 1: Fundamentos Introduccin Ejemplos de problemas tpicos en clculo numrico

Resolver el sistema lineal Ax = b, donde A Rnn , x Rn y b Rn . Este es un problema tanto matemtico como numrico. Los datos de entrada son los elementos de la matriz (aij ) y los elementos del vector (bi ). Los datos de salida son los elementos del vector (xi ). Un forma de resolver este problema puede ser utilizando el mtodo de eliminacin de Gauss.
6 / 65

Captulo 1: Fundamentos Introduccin Ejemplos de problemas tpicos en clculo numrico

Resolver el problema de valores iniciales y (t) = y (t), y (0) = 1. t [0, 1],

Este es un problema esencialmente matemtico, pues el dato de salida es la funcin y (t) la cual no se puede especicar completamente por medio de un nmero nito de valores.

7 / 65

Captulo 1: Fundamentos Introduccin Ejemplos de problemas tpicos en clculo numrico

El problema matemtico anterior se puede aproximar por un problema numrico si consideran como datos de salida los valores y (ti ), con ti = ih, i = 1 : n, h = 1/n, y y (ti ) = De donde yi+1 = yi + yi h, y0 = 1. i = 0 : n, () y (ti+1 ) y (ti ) yi+1 yi = . h h

El mtodo de aproximacin utilizado para obtener el problema numrico () se llama mtodo de Euler.

8 / 65

Captulo 1: Fundamentos Introduccin Pasos a seguir para la resolucin de un problema de clculo numrico

El clculo numrico se utiliza cuando no se puede resolver de manera exacta o analtica un problema matemtico. Los pasos a seguir son: 1 Estudio terico del problema
Existencia y unicidad de solucin
2

Aproximacin
Eleccin del mtodo numrico Existencia y unicidad de solucin Estabilidad y convergencia

Resolucin
Eleccin del algoritmo Costo y estabilidad numrica Codicacin del algoritmo (lenguaje de programacin) Ejecucin del programa en el computador
9 / 65

Captulo 1: Fundamentos Octave Qu es Octave

Octave es un lenguaje interpretado de alto nivel, orientado al clculo numrico. Tambin es un programa capaz de interpretar este lenguaje y realizar los clculos. Octave ofrece una interfaz de usuario interactiva, orientada a la lnea de comandos (terminal). En este modo acta como una calculadora. Tambin se puede utilizar en modo no interactivo, leyendo los comandos desde un archivo (guin). A la gran cantidad de funciones que tiene Octave, se le pueden agregar aqullas denidas por el usuario. Octave es en su mayor parte compatible con Matlab. Se distribuye libremente bajo los trminos de la Licencia Pblica General de GNU.
10 / 65

Captulo 1: Fundamentos Octave QtOctave

QtOctave es una interfaz grca para Octave.

En el curso se utilizar la versin 0.7.2.


11 / 65

Captulo 1: Fundamentos Octave QtOctave

Diferentes secciones
1

En el terminal se pueden ejecutar comandos de Octave y ver, en una ventana, la salida correspondiente. En el editor se pueden crear guiones y funciones que se guardan como archivos con extensin m. En el navegador se puede crear o elegir la carpeta de trabajo en curso. En la lista de variables se muestran la variables creadas en la sesin de trabajo. En el historial se tiene un registro de los comandos ingresados a travs del terminal.

12 / 65

Captulo 1: Fundamentos Octave QtOctave

Otras utilidades Ejecuta un guin Detiene un proceso Borra los contenidos del terminal Abre una matriz en una hoja de clculo Abre la ayuda de Octave Ayuda dinmica de comandos segn se van escribiendo Busca comandos similares al que se haya escrito

13 / 65

Captulo 1: Fundamentos Octave El entorno Octave

Tras pulsar la tecla Intro, todo lo que se escribe despus del prompt >>, Octave lo interpreta comprobando si corresponde con el nombre de una variable o instruccin (guin, comando, funcin) previamente denida. Cuando lo que se escribe coincide con uno de los tipos de datos, o clases, de Octave (double, char, logical), stos son devueltos como salida en la variable por defecto ans. Por ejemplo, >> casa ans = casa Es posible escribir varias instrucciones en la misma lnea, separndolas con una coma o con un punto y coma. Las instrucciones que terminan con un punto y coma no producen salida de resultados por pantalla.
14 / 65

Captulo 1: Fundamentos Octave El entorno Octave

Octave conserva un historial de lo ingresado en la lnea de comandos, lo cual se puede recuperar usando las teclas de echas arriba y abajo. Con las teclas de echas izquierda y derecha es posible desplazarse horizontalmente sobre la lnea de comandos para hacer modicaciones. El comando help muestra una lista de todos los comandos y funciones disponibles en Octave. Para obtener la descripcin de uno de estos comandos y funciones, basta escribir help seguido por el nombre del comando o funcin. Por ejemplo, >> help abs Octave distingue entre maysculas y minsculas.
15 / 65

Captulo 1: Fundamentos Octave El entorno Octave

Mediante el comando save todas las variables de la sesin de trabajo se guardan en un archivo especicado. Por ejemplo, >> save variables.mat El comando load restaura en la sesin en curso todas las variables almacenadas en variables.mat Para guardar en un archivo todo lo ingresado en la lnea de comandos y la salida de resultados de una sesin de trabajo, basta escribir >> diary sesion.txt Para cerrar una sesin de Octave se debe ingresar el comando quit (o exit) y pulsar la tecla Intro. Lo anterior no cierra el programa QtOctave.
16 / 65

Captulo 1: Fundamentos Octave Tipos de datos

Los tipos de datos (o clases) ms comunes son:


double (nmeros reales) >> a = 2, class(a) a = 2 ans = double char (cadenas de caracteres) >> b = hola, class(b) b = hola ans = char logical (valores lgicos) >> c = (3 >= 0), class(c) c = 1 ans = logical

Octave los considera como matrices (arrays) de 1 1.


17 / 65

Captulo 1: Fundamentos Octave Tipos de datos

Otros tipos de datos, formados a partir de los anteriores, son los nmeros complejos, las matrices (en el sentido matemtico usual), las clulas, las clases Java, etc. >> z = 1+3i, class(z) z = 1 + 3i ans = double Los objetos bsicos de trabajo en Octave/Matlab son las matrices bidimensionales cuyos elementos son nmeros reales o complejos. Escalares y vectores son considerados casos particulares de matrices. Tambin se pueden manipular matrices de cadenas de caracteres y valores lgicos.
18 / 65

Captulo 1: Fundamentos Octave Variables

En Octave las variables nunca se declaran, y se crean automticamente al asignarles un valor. El tipo y tamao de una variable se puede cambiar en forma dinmica segn los valores que le son asignados. >> x = 2; size(x) ans = 1 1 >> x = [3,5]; size(x) ans = 1 2 Para conocer en cualquier momento el valor guardado en una variable, basta con escribir su nombre. >> x x = 3 5
19 / 65

Captulo 1: Fundamentos Octave Variables

Algunos comandos relacionados con la inspeccin y eliminacin de variables son: who whos class(a) size(a) isvarname a iskeyword a which a clear clear a b lista todas las variables en uso como el anterior, pero ms detallado devuelve la clase de la variable a devuelve el tamao de la variable a devuelve 1 si a es un nombre vlido devuelve 1 si a es un nombre reservado muestra el tipo de a elimina todas las variables elimina las variables a y b

20 / 65

Captulo 1: Fundamentos Octave Variables

Algunas variables predenidas, que no conviene cambiar, son las siguientes: pi 3.1416 e 2 .7183 ioj 1 eps 2.2204 1016 inf NaN Not a Number

>> warning off % Sin mensajes de advertencia >> 5/0 ans = Inf >> 0/0 ans = NaN >> NaN == NaN % NaNs no son iguales ans = 0 >> eps ans = 2.2204e-016
21 / 65

Captulo 1: Fundamentos Octave Formatos

Por defecto, los nmeros se muestran en el formato de punto jo con 5 dgitos. Esto se puede modicar con el comando format. Por ejemplo, para el nmero 1/7, algunos posibles formatos de salida son: format format format format format format format devuelve short short e long long e bank rat 0.14286 0.14286 1.4286e-001 0.142857142857143 1.42857142857143e-001 0.14 1/7

format short g elige entre los formatos short o short e dependiendo de la magnitud del nmero. Anlogamente, para format long g.
22 / 65

Captulo 1: Fundamentos Octave Octave como calculadora

Operadores aritmticos: +, -, *, /, ^. >> 1+2*1.25 ans = 3.5000 Parntesis para modicar la prioridad. >> (1+2)*1.25 ans = 3.7500 El resultado se guarda en la variable ans. >> ans/2^3 ans = 0.46875 Tres puntos para continuacin de lnea. >> 1+2+... 3 ans = 6
23 / 65

Captulo 1: Fundamentos Octave Funciones matemticas

Los nombres de las funciones elementales son prcticamente los habituales. Los argumentos pueden ser reales o complejos, y el resultado de devuelve en el tipo apropiado. Funciones exponenciales exp log log10 log2 sqrt exponencial logaritmo natural logaritmo decimal logaritmo en base 2 raz cuadrada

24 / 65

Captulo 1: Fundamentos Octave Funciones matemticas

Funciones trigonomtricas sin csc asin acsc cos sec acos asec tan cot atan acot Funciones hiperblicas sinh csch asinh acsch cosh sech acosh asech tanh coth atanh acoth

25 / 65

Captulo 1: Fundamentos Octave Funciones matemticas

Funciones aritmticas lcm(n,m,...) gcd(n,m,...) factor(n) nchoosek(n,k) factorial(n) sign(x) round(x) fix(x) ceil(x) floor(x) rem(x,y) mod(x,y) mnimo comn mltiplo de n, m, . . . mximo comn divisor de n, m, . . . factores primos de n coeciente binomial n sobre k factorial de n signo de x redondeo de x al entero ms prximo redondeo de x hacia 0 redondeo de x hacia + redondeo de x hacia resto de x/y usando x-y*fix(x/y) resto de x/y usando x-y*floor(x/y)
26 / 65

Captulo 1: Fundamentos Octave Funciones matemticas

Funciones complejas abs(z) angle(z) conj(z) real(z) imag(z) compass(z) mdulo o valor absoluto de z argumento de z (en radianes) complejo conjugado de z parte real de z parte imaginaria de z representacin polar de z

27 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

La forma ms elemental de crear matrices es elemento por elemento, por las y entre corchetes. Los elementos de una misma la se separan por comas (o un espacio en blanco), y una la de la siguiente se separa por un punto y coma. >> A = [1,2,3,4;5,6,7,8] A = 1 2 3 4 5 6 7 8

28 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

Se pueden modicar algunos de los elementos de la matriz, accediendo a cualquiera de sus posiciones. >> A = [1 2 3 4; 5 6 7 8]; A(2,4) = -1 A = 1 2 3 4 5 6 7 -1 Se pueden crear nuevos elementos y el tamao de la matriz cambia automticamente. >> A = [1 2 3 4; 5 6 7 8]; A(3,3) = 9 A = 1 2 3 4 5 6 7 8 0 0 9 0
29 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

Un vector la >> v = [1 -1 pi] v = 1.0000 -1.0000 3.1416 Un vector columna >> v = [1; -1; pi] v = 1.0000 -1.0000 3.1416 Un vector de caracteres >> a = [Cmo ,ests?] a = Cmo ests?
30 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

El operador : (dos puntos) permite crear un vector la especicando su primera componente, un incremento y una cota superior para la ltima componente. v = a:h:b Vector la de nmeros desde a hasta c b tal que c + h > b, con incremento h. >> v = 2:0.25:2.8 v = 2.0000 2.2500 2.5000 2.7500 v = a:b Como el anterior, con h = 1. >> v = 3.5:6.9 v = 3.5000 4.5000 5.5000 6.5000
31 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

Las funciones linspace y logspace crean un vector la especicando las primera y ltima componentes, y el nmero de componentes. v = linspace(a,b,n) Vector la de n nmeros uniformemente espaciados desde a hasta b. Es decir, v = [a a+h a+2h a+3h ... b] ba donde h = . n1 >> v = linspace(1,4,3) v = 1.0000 2.5000 4.0000 v = linspace(a,b) Como el anterior, con n = 100.
32 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

v = logspace(a,b,n) Vector la de n nmeros logartmicamente espaciados desde 10a hasta 10b . Es decir, v = [10a 10a+h 10a+2h 10a+3h . . . 10b ] ba . n1 >> v = logspace(1,4,3) v = 1.0000e+001 3.1623e+002 donde h =

1.0000e+004

v = logspace(a,b) Como el anterior, con n = 50.

33 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

Se pueden tambin utilizar vectores y matrices como objetos para construir otros vectores y matrices. >> v = 1:4; A = [v 5; 6 7:2:13] A = 1 2 3 4 5 6 7 9 11 13 >> A = [1:5; 6:10]; B = [A; 11:15; 16:20] B = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

34 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

Existe un buen nmero de funciones especiales para la creacin de matrices y vectores. A = diag(v) >> v = 1:3; A = diag(v) A = 1 0 0 0 2 0 0 0 3 >> v = 1:3; A = diag(v,-1) A = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0
35 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

v = diag(A) >> A = [1 2 3; 4 5 6; 7 8 9]; v = diag(A) v = 1 5 9 >> A = [1 2 3; 4 5 6; 7 8 9]; v = diag(A,-1) v = 4 8

36 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

B = triu(A) >> A = [1 2 3; 4 5 6; 7 8 9]; B = triu(A) B = 1 2 3 0 5 6 0 0 9 B = tril(A) >> A = [1 2 3; 4 5 6; 7 8 9]; B = tril(A) B = 1 0 0 4 5 0 7 8 9

37 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

A = zeros(m,n) >> A = zeros(2,3) A = 0 0 0 0 0 0 >> A = zeros(3) A = 0 0 0 0 0 0 0 0 0

38 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

A = ones(m,n) >> A = ones(2,3) A = 1 1 1 1 1 1 >> A = ones(3) A = 1 1 1 1 1 1 1 1 1

39 / 65

Captulo 1: Fundamentos Octave Creacin de matrices

A = eye(m,n) >> A = eye(2,3) A = 1 0 0 0 1 0 >> A = eye(3) A = 1 0 0 0 1 0 0 0 1

40 / 65

Captulo 1: Fundamentos Octave Operaciones con matrices

Los operadores aritmticos representan las correspondientes operaciones matriciales (siempre que tengan sentido). Sean A = (aij ) y B = (bij ) matrices y c un escalar. A+B es la matriz de elementos aij + bij A-B es la matriz de elementos aij bij A*B es la matriz de elementos
n k=1

aik bkj

A+c es la matriz de elementos aij + c A-c es la matriz de elementos aij c c*A es la matriz de elementos caij A/c es la matriz de elementos aij /c
41 / 65

Captulo 1: Fundamentos Octave Operaciones con matrices

A^c si c > 0 es un entero, es la matriz Ac si c < 0 es un entero, es la matriz (A1 )c A es la matriz transpuesta de elementos aji Precedidos de . (un punto) se deben entender en el sentido de que la operacin se efecta elemento a elemento. c./A es la matriz de elementos c/aij A.^c es la matriz de elementos ac ij c.^A es la matriz de elementos caij A.*B es la matriz de elementos aij bij A./B es la matriz de elementos aij /bij
ij A.^B es la matriz de elementos aij 42 / 65

Captulo 1: Fundamentos Octave Operaciones con matrices

La mayora de las funciones de Octave estn diseadas de forma tal que admiten matrices como argumentos. Esto se aplica en particular a las funciones matemticas elementales, y su utilizacin se debe entender en el sentido de elemento a elemento. >> u = [0 pi/2 pi 3*pi/2 2*pi]; >> v = sin(u) v = 0.00000 1.00000 0.00000 -1.00000 >> w = log(u) w = -Inf 0.45158 1.14473 1.55019

-0.00000

1.83788

43 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

n = sum(v) Suma de las componentes de v. >> v = [1 2 3 4]; n = sum(v) n = 10 v = sum(A,1) Vector la cuyas componentes son las sumas de los elementos de cada columna de A. >> A = [1 2; 3 4]; v = sum(A,1) v = 4 6 v = sum(A,2) Vector columna cuyas componentes son las sumas de los elementos de cada la de A. >> A = [1 2; 3 4]; v = sum(A,2) v = 3 7
44 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

n = prod(v) Producto de las componentes de v. >> v = [1 2 3 4]; n = prod(v) n = 24 v = prod(A,1) Vector la cuyas componentes son los productos de los elementos de cada columna de A. >> A = [1 2; 3 4]; v = prod(A,1) v = 3 8 v = prod(A,2) Vector columna cuyas componentes son los productos de los elementos de cada la de A. >> A = [1 2; 3 4]; v = prod(A,2) v = 2 12
45 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

n = trace(A) Traza de A, es decir, sum(diag(A)). >> A = [1 2; 3 4]; n = trace(A) n = 5 n = min(v) Mnimo de las componentes de v. >> v = [1 2 3 4]; n = min(v) n = 1 n = max(v) Mximo de las componentes de v. >> v = [1 2 3 4]; n = max(v) n = 4 n = mean(v) Promedio de las componentes de v. >> v = [1 2 3 4]; n = mean(v) n = 2.5000
46 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

v = min(A) Vector la cuyas componentes son el mnimo elemento de cada columna de A. A = [1 2; 3 4]; v = min(A) v = 1 2 v = max(A) Vector la cuyas componentes son el mximo elemento de cada columna de A. >> A = [1 2; 3 4]; v = max(A) v = 3 4 v = mean(A) Vector la cuyas componentes son el promedio de los elemento de cada columna de A. >> A = [1 2; 3 4]; v = max(A) v = 2 3
47 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

n = norm(v) Norma euclidiana de v. >> v = [1 2 3 4]; n = norm(v) n = 5.4772 n = norm(A,p) Norma p, sum(abs(v).^p)^(1/p) >> v = [1 2 3 4]; n = norm(v,3) n = 4.6416 n = norm(v,inf) Norma , max(abs(v)) >> v = [1 2 3 4]; n = norm(v,inf) n = 4 n = norm(v,-inf) Norma , min(abs(v)) >> v = [1 2 3 4]; n = norm(v,-inf) n = 1
48 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

n = norm(A) Mximo valor propio de A. >> A = [1 2; 3 4]; n = norm(A) n = 5.4650 n = norm(A,1) Norma 1, max(sum(abs(A),1)) >> A = [1 2; 3 4]; n = norm(A,1) n = 6 n = norm(A,inf) Norma , max(sum(abs(A),2)) >> A = [1 2; 3 4]; n = norm(A,inf) n = 7

49 / 65

Captulo 1: Fundamentos Octave Funciones matriciales

v = size(A) Tamao de A. >> A = [1 2; 3 4; 5 6]; v = size(A) v = 3 2 >> [m n] = size(A) m = 3 n = 2 >> m = size(A,1), m = size(A,2) m = 3 m = 2 n = length(A) Mayor dimensin de A, max(size(A)) >> A = [1 2; 3 4; 5 6]; n = length(A) n = 3
50 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Para extraer los elementos de una matriz o vector, se utiliza la sintaxis siguiente: v(i) Si v es un vector, se obtiene vi . A(i,j) Si A es un matriz, se obtiene aij . A(k) Si A es un matriz, se obtiene el k-simo elemento de A, en el orden en que est guardada en memoria (es decir, por columnas). >> A = [1 2; 3 4; 5 6]; A(2,1), A(4), A(end) ans = 3 ans = 2 ans = 6 Los subndices siempre comienzan en 1.
51 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Existe un buen nmero de facilidades para extraer globalmente un conjunto de elementos de una matriz o vector, sean estos consecutivos o no. >> v = [11 12 13 14 15 16 17 18 19 20]; >> ind = [2 5 1 8]; >> u = v(ind) u = 12 15 11 18 >> ind = [2 5; 1 8]; >> u = v(ind) u = 12 15 11 18
52 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Utilizando la sintaxis A(v) o A(M), donde v es un vector de ndices y M es una matriz de ndices, se obtiene un vector o una matriz con los elementos de A indicados en los ndices. >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> v = [1 3 5 8]; u = A(v) u = 1 7 5 6 >> M = [1 3; 5 8]; B = A(M) B = 1 7 5 6
53 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Utilizando la sintaxis A(i:j,k:l) se obtiene la submatriz de A que contiene las las i hasta j y las columnas k hasta l. >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> B = A(2:3,1:2) B = 4 5 7 8

54 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Utilizando la sintaxis A(u,v), donde u y v son vectores, se obtiene la submatriz de A que contiene las las indicadas en u y las columnas indicadas en v. >> A = [1 2 3 4; 5 6 7 8; 9 10 11 12] A = 1 2 3 4 5 6 7 8 9 10 11 12 >> u = [1 3]; v = [1 4]; B = A(u,v) B = 1 4 9 12

55 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Se pueden combinar los mtodos de extraccin anteriores. >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> B = A(1:2,[2 2 2 2]) B = 2 2 2 2 5 5 5 5

56 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

El operador : (dos puntos) en el lugar de un ndice indica que se toman todos. >> A = [1 2 3; v = 2 5 8 >> A = [1 2 3; B = 4 5 6 7 8 9 >> A = [1 2 3; v = 1 4 7 4 5 6; 7 8 9]; v = A(:,2)

4 5 6; 7 8 9]; B = A(2:end,:)

4 5 6; 7 8 9]; v = A(:) 2 5 8 3 6 9
57 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Extraccin

Si v es un vector con valores lgicos (sus elementos son true y false, que Octave muestra como 1 y 0), entonces A(v) es un vector que se obtiene considerando o no cada elemento de A en funcin del valor verdadero o falso en el vector v. >> A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> v = [true true false true false true] v = 1 1 0 1 0 1 >> u = A(v); w = u w = 1 4 5 6
58 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Insercin y eliminacin

Se pueden insertar valores determinados a partes de una matriz, lo cual a veces modica el tamao de la matriz. >> A = [1 2 3; 4 5 6]; A(2,2) = -1 A = 1 2 3 4 -1 6 >> A(3,2) = -2 A = 1 2 3 4 -1 6 0 -2 0

59 / 65

Captulo 1: Fundamentos Octave Manipulacin de los elementos de una matriz Insercin y eliminacin

>> A = [1 2 3; 4 5 6; 7 8 9]; A(1:2,2:3) = 0 A = 1 0 0 4 0 0 7 8 9 >> A(3,:) = [] % Se elimina la fila 3 A = 1 0 0 4 0 0 >> A = [A [1 2]] % Se agrega una columna A = 1 0 0 1 4 0 0 2
60 / 65

Captulo 1: Fundamentos Octave Guiones

Un guin es un conjunto de comandos, guardados en un archivo de texto, que son ejecutados por un interprete. Un guin es til para automatizar algunas tareas y puede hacer las veces de un programa principal al desarrollar una aplicacin. En Octave los guiones se deben guardar en un archivo con extensin m para ser reconocidos. Un guin que est en la carpeta de trabajo en curso, se ejecuta escribiendo su nombre (sin la extensin) en la lnea de comandos del terminal. Todas las variables usadas en un guin son tambin las variables de la sesin de trabajo (variables globales).
61 / 65

Captulo 1: Fundamentos Octave Funciones

Una funcin es un programa con una interfaz de entrada y salida bien denida. Una funcin debe tener el siguiente formato: function [y_1,...,y_n] = nombre(x_1,...,x_m) % documentacin y comentarios comandos; end La funcin se debe guardar en un archivo con su mismo nombre y la extensin m, es decir, nombre.m Los comandos dentro de una funcin no se pueden referir a las variables globales. Las variables creadas por una funcin son locales.
62 / 65

Captulo 1: Fundamentos Octave Funciones

Se pueden denir varias funciones en un mismo archivo. Por ejemplo,


Se dene el archivo biblioteca.m function y = cuadrado(x) y = x^2; end function y = raiz(x) y = sqrt(x); end Se puede acceder a las dos funciones >> source(biblioteca.m) >> cuadrado(raiz(2)) ans = 2.0000

63 / 65

Captulo 1: Fundamentos Octave Funciones reales

El comando fplot(fun,lims) dibuja la grca de la funcin fun (que se almacena como una cadena de caracteres) en el intervalo [lims(1),lims(2)]. Por ejemplo, fun = 1/(1+x^2); lims = [-5 5]; fplot(fun,lims); o, ms directamente, fplot(1/(1+x^2),[-5 5]); Octave obtiene la grca muestreando la funcin sobre un conjunto de abscisas no equiespaciadas con una tolerancia de 0.2 %. Para mejorar la precisin se puede usar fplot(fun,lims,tol) Al escribir grid on se obtiene una grilla de fondo.
64 / 65

Captulo 1: Fundamentos Octave Funciones reales

Una funcin se pude denir de varias maneras. 1 Como una cadena de caracteres. fun = 1/(1+x^2); 2 Mediante el comando inline fun = inline(1/(1+x^2),x); 3 Como una funcin annima. fun = @(x) 1/(1+x^2); 4 Como un archivo con extensin m. function y = fun(x) y = 1/(1+x^2); end En los tres ltimos casos la funcin se evala como y = fun(x)
65 / 65

Vous aimerez peut-être aussi