SlideShare una empresa de Scribd logo
1 de 127
Universidad Nacional Agraria
La Molina
Introducción al Software Octave
Alessandri Canchoa Quispe
1
OCTAVE
Octave o GNU Octave, fue desarrollado por GNU Octave –
http: // www.octave.org
Es una herramienta de comandos en línea para resolver
problemas numéricamente y es muy compatible con MATLAB.
MATLAB es una marca comercial de The MathWorks y, como
tal, es un software patentado sujeto a licencia.
Mientras que Octave comparte muchas de las capacidades de
MATLAB con el mérito adicional de ser distribuido libremente
bajo la Licencia Pública General de GNU.
2
OCTAVE
 Octave Packages available at
http://octave.sourceforge.net/packages.php
 MATLAB Toolboxes available at
http://www.mathworks.co.uk/ products/
3
4
5
6
VENTANA DE COMANDOS
 El indicativo “>>”, indica que
Octave/MATLAB espera una orden
 La tecla <ENTER> se pulsa para
ejecutar la orden
 Las teclas <>, <> permiten recuperar
los textos escritos anteriormente.
 “%” antecede a un comentario
6
VARIABLES Y CONSTANTES EN MATLAB
Asignación de valores a los nombres de las variables
>> x = 4 <ENTER>
x = 4
>> X = 5 <ENTER>
X = 5
>> d=-7; <ENTER>
7
8
OPERACIONES ARITMETICAS
Las operaciones con cantidades
escalares se manejan de manera directa como
en otros lenguajes de computación. Los
operadores comunes en orden de precedencia
son
^ a^b ab
*,/ a*b, a/b ab, a/b
 AB A-1B
+,- a+b, a-b a+b, a-b 9
>> 2+2
ans = 4
>> 5+7
ans = 12
>> x=3;
>> X=7;
>> suma=x+X
suma = 10
>> resta=x-X
resta = -4
>> producto=x*X
producto = 21
>> division=x/X
division = 4.285714285714285e-01
10
Todos los cálculos en MATLAB y Octave se realizan con doble
precisión, es decir, se utilizan unas 15 cifras significativas.
El formato mostrado de la salida es manejado por el formato del
comando. Si se cambia el formato y desea volver al valor
predeterminado, simplemente use el comando sin más argumentos
de entrada.
Un formato común es el dado por
format compact
que suprime las líneas en blanco en la salida y le permite un mejor
uso del estado real del espacio de trabajo. 11
12
>> 2^5
ans = 32
>> pi % constante pi
ans = 3.1416
>> format long
>> pi
ans = 3.141592653589793
>> format short
>> pi
ans = 3.1416
>> format long
13
>> 1e-5
ans = 1.000000000000000e-05
>> realmax % Mayor número real
ans = 1.797693134862316e+308
>> realmin % Menor positivo
ans = 2.225073858507201e-308
>> pi
ans = 3.141592653589793
>> eps % eps de la máquina
ans = 2.220446049250313e-16
>> 1+eps>1 % 1 == Verdadero
ans = 1
>> 1+(eps/2)>1 % 0 == Falso
ans = 0
14
15
16
FUNCIONES MATEMATICAS
PREDETERMINADAS EN MATLAB
abs(x) Devuelve el valor absoluto de x
sqrt(x) Devuelve la raíz cuadrada de x
nthroot(x,n) Devuelve n-ésima raíz real de x
sign(x) Función signo
rem(x,y) Calcula el residuo de x/y
exp(x) Calcula ex
log(x) Calcula ln(x), el logaritmo natural de x
log10(x) Calcula log10(x)
FUNCIONES MATEMATICAS
PREDETERMINADAS EN MATLAB
sin(x) Encuentra sen(x), x en radianes
cos(x) Encuentra cos(x), x en radianes
tan(x) Encuentra tan(x), x en radianes
sinh(x) Encuentra senh(x), x en radianes
cosh(x) Encuentra cosh(x), x en radianes
asin(x) Encuentra arcsen(x), x[-1,1]
sind(x) Encuentra sen(x), x en grados sexagesimal.
asind(x) Encuentra arcsen(x) en grados sexagesimal.
17
» pi
ans =
3.1416
» sin(pi/2)
ans =
1
» tan(pi/4)
ans =
1.0000
» exp(1.0)
ans =
2.7183 18
19
>> abs(-5)
ans = 5
>> sqrt(64)
ans = 8
>> nthroot(-32,5)
ans = -2
>> sign(-4)
ans = -1
>> sign(0)
ans = 0
>> sign(45)
ans = 1
20
>> rem(13,4)
ans = 1
>> exp(1)
ans = 2.718281828459046
>> exp(2)
ans = 7.389056098930650
>> log(exp(1))
ans = 1
>> log(10)
ans = 2.302585092994046
>> log10(10)
ans = 1
21
Funciones matemáticas predeterminadas en Octave/MATLAB
factor(x) Encuentra los factores primos de x
gcd(x,y) Encuentra el mcd de x
lcm(x,y) Encuentra el mcm de x
rats(x) Representa x como fracción
factorial(x) Devuelve x!
primes(x) Encuentra todos los números primos menores de x
isprime(x) Devuelve 1 si x es primo sino 0
round(x) Redondea x al entero más cercano
fix(x) Redondea (o trunca) x al entero más cercano a cero.
floor(x) Redondea x al entero  x más cercano
ceil(x) Redondea x al entero  x más cercano
22
>> factor(18)
ans = 2 3 3
>> gcd(6,9) % mcd de 6 y 9
ans = 3
>> lcm(6,9) % mcm de 6 y 9
ans = 18
>> rats(0.2)
ans = 1/5
>> factorial(3)
ans = 6
23
>> primes(30)
ans =
2 3 5 7 11 13 17 19 23 29
>> isprime(111)
ans = 0
>> isprime(101)
ans = 1
24
ARREGLOS :
Variables del tipo arreglos unidimensionales :
Puede crear un vector fila (renglón fila) con :
» d =[ 2 3 4 45] <ENTER>
d =
2 3 4 45
o también puede con : d =[ 2, 3, 4, 45]
Elementos de d son: d(1),d(2),d(3), d(4)
» d(1) <ENTER>
ans =
2
Puede crear un vector columna con :
» a=[ 2<ENTER>
4<ENTER>
5<ENTER>
8]<ENTER>
a =
2
4
6
8
o también puede con : a=[ 2 ;4; 6; 8] o con
a=[ 2 4 6 8]'.
El símbolo ' (TECLA <?/'> ) representa al
símbolo T
de la transpuesta de una matriz. 25
El tamaño de un vector se ajusta
automáticamente.
El número puede incrementarse definiendo
elementos adicionales.
» z = [2 4 6 8] <ENTER>
z =
2 4 6 8
Insertando un quinto elemento con
contenido 3:
» z(5) = 3<ENTER>
z =
2 4 6 8 3
26
Insertando un séptimo elemento con contenido 12:
» z(7) = 12<ENTER>
z =
2 4 6 8 3 0 12
Insertando un elemento al final de z:
» z = [z 15] <ENTER>
z =
2 4 6 8 3 0 12 15
Insertando un vector fila después del
final de z:
» z = [z [2 6]] <ENTER>
z =
2 4 6 8 3 0 12 15 2 6
27
Insertando un vector fila al inicio de
z de la siguiente manera:
» z = [ [-2 -6] z] <ENTER>
z =
-2 -6 2 4 6 8 3 0 12 15 2 6
Esto también es válido para vectores
columna.
28
Para el caso de un vector columna.
>>w=[ 2 ;4] <ENTER>
w =
2
4
Insertando el vector columna [5;3] al
inicio y 7 después del último elemento
del vector w:
>> w=[[5;3];w;7] <ENTER>
w =
5
3
2
4
7
29
Otra manera de crear vectores fila
Ejemplo: a) Para definir el vector fila
y =[ 2.0000 2.4000 2.8000 3.2000 3.6000 4.0000]
» y=2:0.4:4<ENTER>
y =
2.0000 2.4000 2.8000 3.2000 3.6000 4.0000
30
Ejemplo: b) Para definir el vector fila
w =[ 2.0000 1.9000 1.8000 1.7000 1.6000 1.5000]
» w=2:-0.1:1.5<ENTER>
w =
2.0000 1.9000 1.8000 1.7000 1.6000 1.5000
Ejemplo: c) Vamos a definir en t los
elementos : 0.0, 0.1, 0.2, 0.3, ... , 2.0.
» t=0:0.1:2<ENTER> 31
32
Ejemplo: d) Para definir un vector columna
>> y=(2:0.4:4)'<ENTER>
y =
2.0000
2.4000
2.8000
3.2000
3.6000
4.0000
También se puede escribir:
y=[2:0.4:4]'
33
>> x=[2, 7, 3, 7, -9]
x =
2 7 3 7 -9
>> min(x)
ans = -9
>> max(x)
ans = 7
S
sort(x)
format compact
34
>> x=[2, 7, 3, 7, -9]
x =
2 7 3 7 -9
>> sort(x,'ascend')
ans =
-9 2 3 7 7
>> sort(x)
ans =
-9 2 3 7 7
>> sort(x,'descend')
ans =
7 7 3 2 -9
35
>> sum(x)
ans = 10
>> mean(x)
ans = 2
>> length(x)
ans = 5
>>
>> size(x)
ans =
1 5
Variables del tipo arreglos bidimensionales:
Ejemplo:La matriz









 

1
7
8
5
3
2
7
5
4
A
,
en MATLAB se puede definir como sigue:
» A=[4 -5 7<ENTER>
2 3 5<ENTER>
8 7 1] <ENTER>
A =
4 -5 7
2 3 5
8 7 1
También se puede definir con:
» A=[4 -5 7; 2 3 5; 8 7 1] <ENTER>
36
o también con:
» A(1,1)=4;
» A(1,2)=-5;
» A(1,3)=7;
» A(2,1)=2;
» A(2,2)=2;
» A(2,3)=5;
» A(3,1)=8;
» A(3,2)=7;
» A(3,3)=1;
37
La segunda fila se obtiene con:
» A(2,:)
ans =
2 3 5
La tercera columna se obtiene con:
» A(:,3)
ans =
7
5
1 38
OPERACIONES DE MATRICES Y VECTORES EN MATLAB
» a=[1 4 6 7]
a =
1 4 6 7
» b=[4 8 9 2]
b =
4 8 9 2
La suma se obtiene con
» c=a+b
c =
5 12 15 9
» d=[2 6]
d =
2 6
» a+d
??? Error using ==> +
Matrix dimensions must agree.
39
» a
a =
1 4 6 7
» b
b =
4 8 9 2
La diferencia de a y b se obtiene con:
» g=a-b
g =
-3 -4 -3 5
40
» A=[1 4 -2; 2 5 7]
A =
1 4 -2
2 5 7
» B=[3 5; 1 -2; 5 -6]
B =
3 5
1 -2
5 –6
El producto de A con B, se obtiene con:
» A*B
ans =
-3 9
46 -42
41
Nota : C*C = C^2
» C=[1 -2; 5 7]
C =
1 -2
5 7
» C*C
ans =
-9 -16
40 39
» C^2
ans =
-9 -16
40 39 42
Nota : C*C = C^2
» C=[1 -2; 5 7]
C =
1 -2
5 7
» C*C
ans =
-9 -16
40 39
» C^2
ans =
-9 -16
40 39 43
Inversa de una matriz:
» A=[-1 2 3; 2 3 4; 5 7 8]
A =
-1 2 3
2 3 4
5 7 8
» AA=inv(A)
AA =
-0.4444 0.5556 -0.1111
0.4444 -2.5556 1.1111
-0.1111 1.8889 -0.7778
Verificando:
» AA*A
» A*AA
44
Producto de una matriz por un escalar:
» a=[3 5 6 ;8 2 5; 4 7 1]
a =
3 5 6
8 2 5
4 7 1
» a*2
ans =
6 10 12
16 4 10
8 14 2
» 2*a
ans =
6 10 12
16 4 10
8 14 2
45
Operaciones elemento por elemento:
X.^Y, X.*Y, Y.X
» a=[1 5 2;3 -1 7]
a =
1 5 2
3 -1 7
» b=[2 -1 2;1 2 1]
b =
2 -1 2
1 2 1
» a.*b
ans =
2 -5 4
3 -2 7
46
» a./b
ans =
0.5000 -5.0000 1.0000
3.0000 -0.5000 7.0000
» a.^2
ans =
1 25 4
9 1 49
» a^2
??? Error using ==> ^
Matrix must be square.
47
48
Cadenas (Strings )
Una cadena en Octave/MATLAB esta definido por apostrofes:
>> nombre = ' La Molina'
nombre = La Molina
>> nombre(2)
ans = L
Tamaño de una cadena
>> long1=length(nombre)
long1 = 10
Longitud o tamaño de una cadena
>> size(nombre)
ans =
1 10
49
Listando en orden inverso las
componentes de la cadena nombre
>> for i=long1:-1:1
nomb1(i)=nombre(long1+1-i);
end
>> nomb1
nomb1 = aniloM aL
50
Los apostrofes de una cadena deben ser digitados dos veces:
>> 'John''s cat'
ans = John's cat
Las cadenas pueden componerse justamente como matrices
numéricos
>> nomb1='Julio'
nomb1 = Julio
>> apellido='Cardenas'
apellido = Cardenas
51
>> nombre=[nomb1,apellido]
nombre = JulioCardenas
>> nombre=[nomb1, ' ',apellido]
nombre = Julio Cardenas
>> nombre=[nomb1,apellido]
nombre = JulioCardenas
Se puede extraer una parte de una cadena:
>> apellido=nombre(6:length(nombre))
apellido = Cardenas
52
COMANDOS STRING
abs(cad) : retorna un vector con el código ASCII para los caracteres en la
cadena.
>> abs('1')
ans = 49
>> abs('012')
ans = 48 49 50
char(x): convierte los enteros (código ASCII) en el vector x a caracteres de
acuerdo al conjunto elegido de caracteres.
>> char(94)
ans = ^
>> char(91)
ans = [
>> char(93)
ans = ]
>> char(92)
ans =
53
num2str (f) : convierte el escalar f en una representación en formato
punto-flotante, convirtiendo a 4 dígitos y exponencial fuera es requerido.
>> num2str(13.5555555)
ans = 13.5556
num2str(f, k) : convierte el escalar f en una representación en formato
punto-flotante con k dígitos.
>> num2str(135.12345678,7)
ans = 135.1235
int2str(n) : convierte el entero n en un representación del tipo cadena.
>> cad1=int2str(657)
cad1 = 657
str2num(cad) :retorna el valor numérico de la cadena cad.
>> str2num('234')+1
ans = 235
>> str1='t';
>> str2='abc';
>> str3=[str1,str2] % Concatena (une) las cadenas str1 y str2
str3 = tabc
>> str3=[str1,' ',str2]
str3 = t abc
>> nombre =['El nombre es:'; nomb, ' ' , apell]
nombre =
El nombre es:
Juan Campos
>> s1='Continuar';
>> s2='Parar';
>> strcmp(s1,s2) % Compara las cadenas s1 y s2
ans = 0
>> strcmp(s1,'Continuar') % Compara las cadenas s1 y s2
ans = 1
54
Definición de funciones en línea
55
 >> format compact
 >> g = inline( 'x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)')
 g = f(x) = x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)
 >> g(1)
 ans = 2.906093942819682
 Otra manera: g = @(x) x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)
 >> f = inline( 'x+2+y')
 f = f(x, y) = x+2+y
 >> f(3,7)
 ans = 12
 Otra manera: f = @(x,y) x+2+3*y
>> fplot(g,[-1.5 1.5],160)
-1.5 -1 -0.5 0 0.5 1 1.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
56
GRAFICAS CON MATLAB
Comando plot:
Sintaxis: plot (X,Y)
Plotea el vector Y vs el vector X.
Si X o Y es una matriz, entonces el vector
es ploteado vs las filas o columnas de la
matriz, dependiendo si el vector es fila o
columna.
57
Ejemplo: Para graficar f(t) = tSen t, 0  t  6
» t=0:0.1:6;
» y=t.*sin(t);
» plot(t,y)
0 1 2 3 4 5 6
-5
-4
-3
-2
-1
0
1
2
58
Ejemplo: Para graficar las funciones
f(t)=t Sen t, 0  t  6, y g(t)=t^2, 0  t  6
» t=0:0.1:6;
» y=[t.*sin(t); t.^2];
» plot(t,y)
0 1 2 3 4 5 6
-5
0
5
10
15
20
25
30
35
40
59
Lo mismo se obtiene si se escribe
» t=0:0.1:6;
» plot(t,t.*sin(t),t, t.^2)
Sintaxis plot (X,Y,S):
S es un carácter o cadena (string)
compuesto de uno o de todos los
elementos de las siguientes tres
columnas:
60
Color Tipo de marca Tipo de línea
y yellow . punto - línea continua
m magenta o círculo : línea punteada
c cyan x marca-x -. línea raya y punto.
r red + más -- línea …
g green * estrella .- línea continua con
b blue s cuadrado puntos en los datos
w white d diamante
k black v triángulo (abajo)
^ triángulo (arriba)
< triángulo (izquierdo)
> triángulo (derecho)
p estrella de 5 puntas
h estrella de 6 puntas
61
Ejemplo: Gráficar g(x) = xex
, -3  x  5
» x=-3:0.1:5;
» y=x.*exp(x);
» plot(x,y,'c+:')
62
» plot(x,y,'r.-')
63
plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...)
combina las gráficas definidos por las
ternas (Xk, Yk, Sk),
Ejemplo: Graficar las funciones
f(x) = x Sen x , 0  x  6,
g(x) = x^2 , 1  x  5,
» x1=0:0.1:6;
y1=x1.*sin(x1)
x2=1:0.1:5;
y2=x2.^2;
plot(x1,y1,'g.-', x2,y2,'y*') 64
65
Para etiquetar los ejes:
xlabel('texto') adiciona el texto junto al eje X.
ylabel('texto') adiciona el texto junto al eje Y.
Para colocar un título a un gráfico:
Title ('text')
adiciona texto como titulo en la parte superior
Para anotar un texto:
text(X,Y,'string')
adiciona el texto entre comillas en la posición
(X,Y) donde las unidades son las usadas
actualmente.
66
Ejemplo: Para graficar las
funciones
f(x) = x Cos x , -3  x  4,
» x=-3:0.2:4;
» y=x.*cos(x);
» plot(x,y,'g.-')
» xlabel('X')
» ylabel('Y')
» title('G R A F I C O')
» text(2,0,'f')
» text(-2,-3,'f(x) = x cosx')
67
68
grid on : para agregar una retícula a la
gráfica.
grid off : para desactivar(eliminar) la retícula
de la gráfica.
» grid on
Se puede redibujar una figura en forma
cuadrada con:
» axis('square')
Los ejes coordenados y las marcas de escala
pueden omitirse con:
» axis('off')
Este efecto se cancela con
» axis('on') 69
70
El máximo y el mínimo de las coordenadas
en la gráfica
se pueden especificar con
» axis([x_min, x_max, y_min, y_max])
» legend('cadena 1', 'cadena 2', etc)
Le permite agregar una leyenda a su
gráfica. La leyenda muestra un modelo
de la línea y menciona la cadena que
especificó.
71
>> x=-2:0.1:3;
>> plot(x,x,':ok',x,x.^2,'--xr',x,x.^3,'-b')
>> legend('y = x','y = x^{2}','y = x^{3}')
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3
-10
-5
0
5
10
15
20
25
30
y = x
y = x2
y = x3
72
Ejemplo:
x = -pi:.1:pi;
y = sin(x);
plot(x,y)
set(gca,'XTick',-pi:pi/2:pi)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
xlabel('-pi leq Theta leq pi')
ylabel('sin(Theta)')
title('Grfica de sen(Theta)')
text(-pi/4,sin(-pi/4),'leftarrow sen(-pidiv4)',...
'HorizontalAlignment','left')
73
74
Gráfica de relaciones
Se quiere solucionar el sistema no lineal y²-x²-1 =
0, x²+y²-4 = 0
Graficando para obtener un punto inicial.
>> ezplot('y^2-x^2-1')
>> hold on
>> ezplot('y^2+x^2-4')
>> ezplot('x*y') % para graficar los ejes
>> hold off
75
-6 -4 -2 0 2 4 6
-6
-4
-2
0
2
4
6
x
y
x y = 0
76
>> ezplot('x^2-8*x-4*y+8',[-15,15]); axis equal
-15 -10 -5 0 5 10 15 20
-15
-10
-5
0
5
10
15
x
y
x2
-8 x-4 y+8 = 0
77
>> ezplot('x^2/4-(y-3)^2/5-1',[-15,15, -10, 10])
>> axis equal; axis([-15,15, -10, 10])
-15 -10 -5 0 5 10 15
-10
-8
-6
-4
-2
0
2
4
6
8
10
x
y
x2
/4-(y-3)2
/5-1 = 0
78
>> ezplot('sin(t)','cos(t)',[-pi/2,pi/2]);axis equal
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
x
y
x = sin(t), y = cos(t)
79
Gráficas en coordenadas polares:
polar (TETA, RO)
Produce una gráfica usando las
coordenadas polares del ángulo TETA en
radianes, vs el radio RO.
polar (TETA, RO, S)
Con la cadena S se especifica el estilo de
línea.
80
Ejemplo: Para graficar las funciones
r = t e-t
, 0 t  ,
» t=0:0.1:pi;
» r=t.*exp(-t);
» polar(t,r)
» title('Gráfica polar')
81
82
CONTINUANDO CON GRAFICOS EN 2D
En algunas ocasiones se tiene una gráfica y luego se quiere
graficar otra. Para ello se usa la instrucción:
hold on
y para desactivar:
hold off
Si se quiere graficar otra figura sin dañar las anteriores y la
actual, se usa la instrucción :
figure
83
Ejemplo:
» t=-pi/2:0.1:pi/2;
» y1=sin(t);
» plot(t,y1,'r*')
Ahora queremos graficar sobre la gráfica anterior
y= t^2
» y2=t.^2;
» hold on
» plot(t,y2)
» hold off
84
85
86
Ahora se quiere graficar y =Ln t, 0.2 t  3 , conservando
la figura anterior:
» figure
» t=0.2:0.1:3;
» y=log(t);
» plot(t,y)
87
88
SOLUCION DE SISTEMAS DE ECUACIONES LINEALES
Ejemplo: Encontrar la solución del
siguiente sistema lineal
2x1 +6x2 +7x3 +9x4 = 2
3x1 +7x2 +2x3 +5x4 = -1
4x1 -2x2 +1x3 +6x4 = 3
1x1 +9x2 +8x3 +2x4 = 4
Forma matricial
Ax=b
donde
>> format long
>> A=[2 6 7 9
3 7 2 5
4 -2 1 6
1 9 8 2];
>> b=[2 -1 3 4]';
>> x=Ab
x =
9.556650246305419e-01
-5.123152709359606e-01
1.078817733990148e+00
-4.876847290640394e-01
89
Verificando
>> A*x-b
ans =
1.776356839400250e-15
8.881784197001252e-16
4.440892098500626e-16
0.000000000000000e+00
Verificando
>> norm(A*x-b)
ans = 2.035072419451040e-15
Determinante de A:
>> det(A)
ans = 1218
90
91
FUNCIONES PARA LA CONSTRUCCION
DE MATRICES
eye matriz identidad
zeros matriz de ceros
ones matriz de unos
diag más adelante en un ejemplo.
triu parte triangular superior de una
matriz incluido la diagonal
tril parte triangular inferior de una
matriz incluido la diagonal
rand matriz generada aleatoriamente
92
>> eye(2)
ans =
Diagonal Matrix
1 0
0 1
>> zeros(2,3)
ans =
0 0 0
0 0 0
>> ones(2,3)
ans =
1 1 1
1 1 1
93
» a=[3 5 6 ;8 2 5; 4 7 1]
a =
3 5 6
8 2 5
4 7 1
» diag(a)
ans =
3
2
1
» diag([4, 6, 7])
ans =
4 0 0
0 6 0
0 0 7
94
» a
a =
3 5 6
8 2 5
4 7 1
» triu(a)
ans =
3 5 6
0 2 5
0 0 1
95
» tril(a)
ans =
3 0 0
8 2 0
4 7 1
» c = rand(3,4)
Descomposición LU de la matriz A:
» [L1, U]=lu(A)
96
FUNCIONES QUE REALIZAN TAREAS.
PROGRAMAS USANDO ARCHIVOS M-file
Haydos tipos dearchivos .m:
- Archivos deinstrucciones
- Archivos defunciones.
97
Archivos de instrucciones :
Un archivo de instrucciones consiste de una
sucesión de instrucciones normales de
Octave/MATLAB.
Las variables en un archivo de instrucciones son
globales y, por tanto, cambiarán los valores del
espacio de trabajo.
Los archivos de instrucciones son utilizados a
menudo para introducir datos en una matriz
grande.
98
Archivos de funciones:
Los archivos de funciones hacen que
MATLABtenga capacidadde crecimiento.
Sepuedencrearfunciones específicas paraun
problem
a concreto, y, a partirdesuintroducción,
tendránel m
ismorangoquelasdem
ás funciones
del sistem
a.
Las variables en las funciones son locales.
Tam
bién se puede declarare una variable
com
o global.
99
100
Creando un archivo de variables inicializados
%datos1.m
%Archivo de variables inicializadas
a=[2 3; 4 5];
b=[2 3]';
Para cargar los datos
>> datos1
>> a
a =
2 3
4 5
>> b
b =
2
3
101
INSTRUCCIONES DE
CONTROL
102
Instrucción for ... end:
Sintaxis:
for var = expresión
instrucción_1

instrucción_M
end
for var = expresión, instrucción_1,...,instrucción_M end
donde
var : es un nombre de variable adecuado
Expresión : usualmente tiene la siguiente forma
Inicio:Incremento:Fin ó Inicio:Fin
103
Inicial: valor inicial que va a tomar la variable
Fin : valor final que va a tomar la variable
Si el incremento es uno:
var = Inicial:1:Fin
se puede expresar como
var = Inicial:Fin
104
Var  Fin
Verdadero
Falso
Instrucción_1
Instrucción_2
....
Instrucción_M
var = var +incremento
var = Inicial
105
Para var = Inicial:Incremento:Fin
Instrucción_1
Instrucción_2
......................
Instrucción_M
Ejemplo: Escribir los cuadrados de los números pares
menores que 10.
for i =2:2:9
disp( i^2 )
end
4
16
36
64
Ejemplo: Escribir los cubos de los números impares
menores o iguales que 9, en forma descendente.
for i =9: - 2 : 1
disp( i^3 )
end
729
343
125
27
1
106
107
Instucción while :
Sintaxis:
while expresión
instrucciones
end
Las instrucciones se repetirán mientras expresión sea verdadero.
Con la instrucción break se puede terminar anticipadamente el
lazo while... end.
108
Expresión
Verdadero
Falso
Instrucción_1
Instrucción_2
......................
Instrucción_M
Ejemplo: Obtenga el épsilon de la máquina y comparelo con eps.
epsm=1;
while epsm/2 + 1 > 1
epsm = epsm/2
end
Esto también se puede expresar como :
epsm=1;while epsm/2+1>1, epsm = epsm/2, end
epsm = 2.220446049250313e-16
El épsilon de la máquina en MATLAB se obtiene con
>> eps
ans = 2.220446049250313e-16
109
El número de máquina más grande en Octave se obtiene con
>> realmax
ans = 1.797693134862316e+308
NOTA:
Si un valor se vuelve mayor que realmax, el número se trata de
overflow y es denotado por inf.
>> inf
ans = Inf
>> 1/inf
ans = 0
110
111
Hay casos en los que la respuesta en NaN, lo
que significa que no es un número.
Ejemplo:
» 0*inf
ans =
NaN
112
Instucción if :
Sintaxis :
if relación
instrucciones
end
Las instrucciones se ejecutarán sólo si la
relación es cierta.
113
La forma general de la sentencia if es
if expresión1
sentencias1
elseif expresión2
sentencias2
else
sentencias3
end
Las sentencias serán ejecutado si la parte real
de la expresión tiene todos los elementos no
ceros.
114
Las partes else y elseif son opcionales.
La expresión usualmente tiene la forma
expr oper expr
donde oper es : ==, <, >, <=, >=, ~=
Ejemplo:
if n < 0
paridad = 0;
elseif rem(n,2) == 0
paridad = 2;
else
paridad = 1;
end
disp(paridad)
115
Relaciones:
Los operadores relacionales en MATLAB son
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual
~= no igual
Los operadores pueden conectarse o cuantificarse por los operadores
lógicos
& y
| o
~ no
116
Cuando se aplican a escalares, una relación
es realmente el escalar 1 o 0 dependiendo de
si la relación es verdadera o falsa.
Ejemplo:
>> 4 < 6
ans =
1
>> 3 > 8
ans =
0
>> 4==4
ans =
1
>> 3==6
ans =
0
117
Ejem
plo : Escriba una función que encuentre el m
ayor de dos
núm
eros a,b
function SalMay=mayor(a,b)
if a>b
SalMay=a;
else
SalMay=b;
end
guardar con nombre mayor.m
Ejecutandoesta función:
>>m
ayor(4,5)
ans =
5
118
Ejem
plo : Escriba una función que encuentre el núm
ero positivo m
ás
pequeñode la m
áquina.
function x_m
in =xm
in()
x_ant=1;
whilex_ant >0
x_m
in =x_ant;
x_ant =x_ant /2;
end
guardar con nombre xmin.m
Para ejecutaresta función, ingrese:
» form
at long e
» xmin
Para volveral form
atodesalida estandar:
» form
at short
119
Ejem
plo : Escriba una función en MATLAB
con nom
bref01, correspondientea la función
f(t,y)=(4-y*y)/(-3*t)
function f_sal =f01(t,y)
f_sal=(4-y*y)/(-3*t);
guardar con nombre f01.m
o en otro directorio personal de trabajo
Para ejecutaresta funciónpara t=1 yy=-1, ingrese:
»f01(1,-1)
ans =
-1
120
Ejemplo : Escriba una función en MATLAB con nombre f02,
correspondiente a la función













t
y
y
t
y
y
)
y
,
y
,
t
(
f
9
4
2
2
4
8
2
1
2
1
2
1
,
con el nombre de f02.m
function f_sal = f02(t, y)
f_sal = [8*y(1) -4*y(2) + 2*t
2*y(1) -4*y(2) + 9*t];
guardar con nombre f02.m
Para ejecutaresta función, para t =2 y1 =3 y2 =-5, ingrese:
»f02(2,[3, -5])
ans =
48
121
122
Implementación en Octave/MATLAB:
function s = suma(a, m)
s = 0;
for k=1:m
s = s + a(k);
end
end
Esta idea se puede aplicar en otros lenguajes de computación.
CORRIDA:
a=[2 7 9 5 6]; m = 5;
>> suma(a,m)
ans = 29
En Octave/MATLAB se cuenta con la función sum:
>> sum(a)
ans = 29
123
124
Implementación en Octave/MATLAB:
function p = producto(a, m)
p = 1;
for k=1:m
p = p * a(k);
end
end
Esta idea se puede aplicar en otros lenguajes de computación.
CORRIDA:
a=[2 7 9 5 6]; m = 5;
producto(a,m)
ans = 3780
En Octave/MATLAB se cuenta con la función prod:
prod(a)
ans = 3780
125
Ejemplo : Escriba una función comb(k,n) en MATLAB para calcular
126
function p = comb(j,m)
p = 1;
for k = 0:(j-1)
p = p*(m-k)/(j-k);
end
End
>> comb(3,6)
ans = 20
>> comb(1,6)
ans = 6
>> comb(6,6)
ans = 1
127
function s = exp1(x, n)
a = 1;
s = a;
for k = 1:n
a = a*x/k;
s = s + a;
end
end
Ejemplo: Escriba una función que calcule retorne la
aproximación de la exponencial dados x y m como entrada.



m
k
k
!
k
x
S
0

Más contenido relacionado

Similar a Int_Octave_II_2021.pptx (20)

matlab
matlabmatlab
matlab
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Capitulo5
Capitulo5Capitulo5
Capitulo5
 
Manual Matlab 2008
Manual Matlab 2008Manual Matlab 2008
Manual Matlab 2008
 
Cursos de MATLAB
Cursos de MATLABCursos de MATLAB
Cursos de MATLAB
 
Notas matlab
Notas matlabNotas matlab
Notas matlab
 
resumen matlab
resumen matlabresumen matlab
resumen matlab
 
U 3
U 3U 3
U 3
 
Introducion al matlab
Introducion al matlabIntroducion al matlab
Introducion al matlab
 
practica matlab
practica matlabpractica matlab
practica matlab
 
Intro_Matlab_1.pdf
Intro_Matlab_1.pdfIntro_Matlab_1.pdf
Intro_Matlab_1.pdf
 
Matlab presentacion enero2012
Matlab presentacion enero2012Matlab presentacion enero2012
Matlab presentacion enero2012
 
Funciones
FuncionesFunciones
Funciones
 
Matlab2009b -clase2
Matlab2009b  -clase2Matlab2009b  -clase2
Matlab2009b -clase2
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
 
CLASE 01.pdf
CLASE 01.pdfCLASE 01.pdf
CLASE 01.pdf
 
Matlab
MatlabMatlab
Matlab
 
CLASE 04.pdf
CLASE 04.pdfCLASE 04.pdf
CLASE 04.pdf
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 

Último

ETICA EN LA CADENAS la cadena de suministro
ETICA EN LA CADENAS la cadena de suministroETICA EN LA CADENAS la cadena de suministro
ETICA EN LA CADENAS la cadena de suministro
IrisMoreno27
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorar
CelesteRolon2
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
ssuserbdc329
 

Último (20)

Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
El Manierismo. El Manierismo
El Manierismo.              El ManierismoEl Manierismo.              El Manierismo
El Manierismo. El Manierismo
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
ETICA EN LA CADENAS la cadena de suministro
ETICA EN LA CADENAS la cadena de suministroETICA EN LA CADENAS la cadena de suministro
ETICA EN LA CADENAS la cadena de suministro
 
PLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorarPLAN ANUAL DE PROYECTO 2020. para mejorar
PLAN ANUAL DE PROYECTO 2020. para mejorar
 
diseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptxdiseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptx
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 
COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .COMUNICADO PARA TODO TIPO DE REUNIONES .
COMUNICADO PARA TODO TIPO DE REUNIONES .
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
Evolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdfEvolución de la fortuna de la familia Slim (1994-2024).pdf
Evolución de la fortuna de la familia Slim (1994-2024).pdf
 
La Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdfLa Guerra Biologica - Emiliano Paico Vilchez.pdf
La Guerra Biologica - Emiliano Paico Vilchez.pdf
 
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILASistema Nacional de Vigilancia en Salud Pública SIVIGILA
Sistema Nacional de Vigilancia en Salud Pública SIVIGILA
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos años
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptx
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdfReservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
Reservas de divisas y oro en México en sexenio de AMLO (2018-2024).pdf
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
 
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de CyclisticAnálisis de datos en acción: Optimizando el crecimiento de Cyclistic
Análisis de datos en acción: Optimizando el crecimiento de Cyclistic
 

Int_Octave_II_2021.pptx

  • 1. Universidad Nacional Agraria La Molina Introducción al Software Octave Alessandri Canchoa Quispe 1
  • 2. OCTAVE Octave o GNU Octave, fue desarrollado por GNU Octave – http: // www.octave.org Es una herramienta de comandos en línea para resolver problemas numéricamente y es muy compatible con MATLAB. MATLAB es una marca comercial de The MathWorks y, como tal, es un software patentado sujeto a licencia. Mientras que Octave comparte muchas de las capacidades de MATLAB con el mérito adicional de ser distribuido libremente bajo la Licencia Pública General de GNU. 2
  • 3. OCTAVE  Octave Packages available at http://octave.sourceforge.net/packages.php  MATLAB Toolboxes available at http://www.mathworks.co.uk/ products/ 3
  • 4. 4
  • 5. 5
  • 6. 6 VENTANA DE COMANDOS  El indicativo “>>”, indica que Octave/MATLAB espera una orden  La tecla <ENTER> se pulsa para ejecutar la orden  Las teclas <>, <> permiten recuperar los textos escritos anteriormente.  “%” antecede a un comentario 6
  • 7. VARIABLES Y CONSTANTES EN MATLAB Asignación de valores a los nombres de las variables >> x = 4 <ENTER> x = 4 >> X = 5 <ENTER> X = 5 >> d=-7; <ENTER> 7
  • 8. 8
  • 9. OPERACIONES ARITMETICAS Las operaciones con cantidades escalares se manejan de manera directa como en otros lenguajes de computación. Los operadores comunes en orden de precedencia son ^ a^b ab *,/ a*b, a/b ab, a/b AB A-1B +,- a+b, a-b a+b, a-b 9
  • 10. >> 2+2 ans = 4 >> 5+7 ans = 12 >> x=3; >> X=7; >> suma=x+X suma = 10 >> resta=x-X resta = -4 >> producto=x*X producto = 21 >> division=x/X division = 4.285714285714285e-01 10
  • 11. Todos los cálculos en MATLAB y Octave se realizan con doble precisión, es decir, se utilizan unas 15 cifras significativas. El formato mostrado de la salida es manejado por el formato del comando. Si se cambia el formato y desea volver al valor predeterminado, simplemente use el comando sin más argumentos de entrada. Un formato común es el dado por format compact que suprime las líneas en blanco en la salida y le permite un mejor uso del estado real del espacio de trabajo. 11
  • 12. 12
  • 13. >> 2^5 ans = 32 >> pi % constante pi ans = 3.1416 >> format long >> pi ans = 3.141592653589793 >> format short >> pi ans = 3.1416 >> format long 13
  • 14. >> 1e-5 ans = 1.000000000000000e-05 >> realmax % Mayor número real ans = 1.797693134862316e+308 >> realmin % Menor positivo ans = 2.225073858507201e-308 >> pi ans = 3.141592653589793 >> eps % eps de la máquina ans = 2.220446049250313e-16 >> 1+eps>1 % 1 == Verdadero ans = 1 >> 1+(eps/2)>1 % 0 == Falso ans = 0 14
  • 15. 15
  • 16. 16 FUNCIONES MATEMATICAS PREDETERMINADAS EN MATLAB abs(x) Devuelve el valor absoluto de x sqrt(x) Devuelve la raíz cuadrada de x nthroot(x,n) Devuelve n-ésima raíz real de x sign(x) Función signo rem(x,y) Calcula el residuo de x/y exp(x) Calcula ex log(x) Calcula ln(x), el logaritmo natural de x log10(x) Calcula log10(x)
  • 17. FUNCIONES MATEMATICAS PREDETERMINADAS EN MATLAB sin(x) Encuentra sen(x), x en radianes cos(x) Encuentra cos(x), x en radianes tan(x) Encuentra tan(x), x en radianes sinh(x) Encuentra senh(x), x en radianes cosh(x) Encuentra cosh(x), x en radianes asin(x) Encuentra arcsen(x), x[-1,1] sind(x) Encuentra sen(x), x en grados sexagesimal. asind(x) Encuentra arcsen(x) en grados sexagesimal. 17
  • 18. » pi ans = 3.1416 » sin(pi/2) ans = 1 » tan(pi/4) ans = 1.0000 » exp(1.0) ans = 2.7183 18
  • 19. 19 >> abs(-5) ans = 5 >> sqrt(64) ans = 8 >> nthroot(-32,5) ans = -2 >> sign(-4) ans = -1 >> sign(0) ans = 0 >> sign(45) ans = 1
  • 20. 20 >> rem(13,4) ans = 1 >> exp(1) ans = 2.718281828459046 >> exp(2) ans = 7.389056098930650 >> log(exp(1)) ans = 1 >> log(10) ans = 2.302585092994046 >> log10(10) ans = 1
  • 21. 21 Funciones matemáticas predeterminadas en Octave/MATLAB factor(x) Encuentra los factores primos de x gcd(x,y) Encuentra el mcd de x lcm(x,y) Encuentra el mcm de x rats(x) Representa x como fracción factorial(x) Devuelve x! primes(x) Encuentra todos los números primos menores de x isprime(x) Devuelve 1 si x es primo sino 0 round(x) Redondea x al entero más cercano fix(x) Redondea (o trunca) x al entero más cercano a cero. floor(x) Redondea x al entero  x más cercano ceil(x) Redondea x al entero  x más cercano
  • 22. 22 >> factor(18) ans = 2 3 3 >> gcd(6,9) % mcd de 6 y 9 ans = 3 >> lcm(6,9) % mcm de 6 y 9 ans = 18 >> rats(0.2) ans = 1/5 >> factorial(3) ans = 6
  • 23. 23 >> primes(30) ans = 2 3 5 7 11 13 17 19 23 29 >> isprime(111) ans = 0 >> isprime(101) ans = 1
  • 24. 24 ARREGLOS : Variables del tipo arreglos unidimensionales : Puede crear un vector fila (renglón fila) con : » d =[ 2 3 4 45] <ENTER> d = 2 3 4 45 o también puede con : d =[ 2, 3, 4, 45] Elementos de d son: d(1),d(2),d(3), d(4) » d(1) <ENTER> ans = 2
  • 25. Puede crear un vector columna con : » a=[ 2<ENTER> 4<ENTER> 5<ENTER> 8]<ENTER> a = 2 4 6 8 o también puede con : a=[ 2 ;4; 6; 8] o con a=[ 2 4 6 8]'. El símbolo ' (TECLA <?/'> ) representa al símbolo T de la transpuesta de una matriz. 25
  • 26. El tamaño de un vector se ajusta automáticamente. El número puede incrementarse definiendo elementos adicionales. » z = [2 4 6 8] <ENTER> z = 2 4 6 8 Insertando un quinto elemento con contenido 3: » z(5) = 3<ENTER> z = 2 4 6 8 3 26
  • 27. Insertando un séptimo elemento con contenido 12: » z(7) = 12<ENTER> z = 2 4 6 8 3 0 12 Insertando un elemento al final de z: » z = [z 15] <ENTER> z = 2 4 6 8 3 0 12 15 Insertando un vector fila después del final de z: » z = [z [2 6]] <ENTER> z = 2 4 6 8 3 0 12 15 2 6 27
  • 28. Insertando un vector fila al inicio de z de la siguiente manera: » z = [ [-2 -6] z] <ENTER> z = -2 -6 2 4 6 8 3 0 12 15 2 6 Esto también es válido para vectores columna. 28
  • 29. Para el caso de un vector columna. >>w=[ 2 ;4] <ENTER> w = 2 4 Insertando el vector columna [5;3] al inicio y 7 después del último elemento del vector w: >> w=[[5;3];w;7] <ENTER> w = 5 3 2 4 7 29
  • 30. Otra manera de crear vectores fila Ejemplo: a) Para definir el vector fila y =[ 2.0000 2.4000 2.8000 3.2000 3.6000 4.0000] » y=2:0.4:4<ENTER> y = 2.0000 2.4000 2.8000 3.2000 3.6000 4.0000 30
  • 31. Ejemplo: b) Para definir el vector fila w =[ 2.0000 1.9000 1.8000 1.7000 1.6000 1.5000] » w=2:-0.1:1.5<ENTER> w = 2.0000 1.9000 1.8000 1.7000 1.6000 1.5000 Ejemplo: c) Vamos a definir en t los elementos : 0.0, 0.1, 0.2, 0.3, ... , 2.0. » t=0:0.1:2<ENTER> 31
  • 32. 32 Ejemplo: d) Para definir un vector columna >> y=(2:0.4:4)'<ENTER> y = 2.0000 2.4000 2.8000 3.2000 3.6000 4.0000 También se puede escribir: y=[2:0.4:4]'
  • 33. 33 >> x=[2, 7, 3, 7, -9] x = 2 7 3 7 -9 >> min(x) ans = -9 >> max(x) ans = 7 S sort(x) format compact
  • 34. 34 >> x=[2, 7, 3, 7, -9] x = 2 7 3 7 -9 >> sort(x,'ascend') ans = -9 2 3 7 7 >> sort(x) ans = -9 2 3 7 7 >> sort(x,'descend') ans = 7 7 3 2 -9
  • 35. 35 >> sum(x) ans = 10 >> mean(x) ans = 2 >> length(x) ans = 5 >> >> size(x) ans = 1 5
  • 36. Variables del tipo arreglos bidimensionales: Ejemplo:La matriz             1 7 8 5 3 2 7 5 4 A , en MATLAB se puede definir como sigue: » A=[4 -5 7<ENTER> 2 3 5<ENTER> 8 7 1] <ENTER> A = 4 -5 7 2 3 5 8 7 1 También se puede definir con: » A=[4 -5 7; 2 3 5; 8 7 1] <ENTER> 36
  • 37. o también con: » A(1,1)=4; » A(1,2)=-5; » A(1,3)=7; » A(2,1)=2; » A(2,2)=2; » A(2,3)=5; » A(3,1)=8; » A(3,2)=7; » A(3,3)=1; 37
  • 38. La segunda fila se obtiene con: » A(2,:) ans = 2 3 5 La tercera columna se obtiene con: » A(:,3) ans = 7 5 1 38
  • 39. OPERACIONES DE MATRICES Y VECTORES EN MATLAB » a=[1 4 6 7] a = 1 4 6 7 » b=[4 8 9 2] b = 4 8 9 2 La suma se obtiene con » c=a+b c = 5 12 15 9 » d=[2 6] d = 2 6 » a+d ??? Error using ==> + Matrix dimensions must agree. 39
  • 40. » a a = 1 4 6 7 » b b = 4 8 9 2 La diferencia de a y b se obtiene con: » g=a-b g = -3 -4 -3 5 40
  • 41. » A=[1 4 -2; 2 5 7] A = 1 4 -2 2 5 7 » B=[3 5; 1 -2; 5 -6] B = 3 5 1 -2 5 –6 El producto de A con B, se obtiene con: » A*B ans = -3 9 46 -42 41
  • 42. Nota : C*C = C^2 » C=[1 -2; 5 7] C = 1 -2 5 7 » C*C ans = -9 -16 40 39 » C^2 ans = -9 -16 40 39 42
  • 43. Nota : C*C = C^2 » C=[1 -2; 5 7] C = 1 -2 5 7 » C*C ans = -9 -16 40 39 » C^2 ans = -9 -16 40 39 43
  • 44. Inversa de una matriz: » A=[-1 2 3; 2 3 4; 5 7 8] A = -1 2 3 2 3 4 5 7 8 » AA=inv(A) AA = -0.4444 0.5556 -0.1111 0.4444 -2.5556 1.1111 -0.1111 1.8889 -0.7778 Verificando: » AA*A » A*AA 44
  • 45. Producto de una matriz por un escalar: » a=[3 5 6 ;8 2 5; 4 7 1] a = 3 5 6 8 2 5 4 7 1 » a*2 ans = 6 10 12 16 4 10 8 14 2 » 2*a ans = 6 10 12 16 4 10 8 14 2 45
  • 46. Operaciones elemento por elemento: X.^Y, X.*Y, Y.X » a=[1 5 2;3 -1 7] a = 1 5 2 3 -1 7 » b=[2 -1 2;1 2 1] b = 2 -1 2 1 2 1 » a.*b ans = 2 -5 4 3 -2 7 46
  • 47. » a./b ans = 0.5000 -5.0000 1.0000 3.0000 -0.5000 7.0000 » a.^2 ans = 1 25 4 9 1 49 » a^2 ??? Error using ==> ^ Matrix must be square. 47
  • 48. 48 Cadenas (Strings ) Una cadena en Octave/MATLAB esta definido por apostrofes: >> nombre = ' La Molina' nombre = La Molina >> nombre(2) ans = L Tamaño de una cadena >> long1=length(nombre) long1 = 10 Longitud o tamaño de una cadena >> size(nombre) ans = 1 10
  • 49. 49 Listando en orden inverso las componentes de la cadena nombre >> for i=long1:-1:1 nomb1(i)=nombre(long1+1-i); end >> nomb1 nomb1 = aniloM aL
  • 50. 50 Los apostrofes de una cadena deben ser digitados dos veces: >> 'John''s cat' ans = John's cat Las cadenas pueden componerse justamente como matrices numéricos >> nomb1='Julio' nomb1 = Julio >> apellido='Cardenas' apellido = Cardenas
  • 51. 51 >> nombre=[nomb1,apellido] nombre = JulioCardenas >> nombre=[nomb1, ' ',apellido] nombre = Julio Cardenas >> nombre=[nomb1,apellido] nombre = JulioCardenas Se puede extraer una parte de una cadena: >> apellido=nombre(6:length(nombre)) apellido = Cardenas
  • 52. 52 COMANDOS STRING abs(cad) : retorna un vector con el código ASCII para los caracteres en la cadena. >> abs('1') ans = 49 >> abs('012') ans = 48 49 50 char(x): convierte los enteros (código ASCII) en el vector x a caracteres de acuerdo al conjunto elegido de caracteres. >> char(94) ans = ^ >> char(91) ans = [ >> char(93) ans = ] >> char(92) ans =
  • 53. 53 num2str (f) : convierte el escalar f en una representación en formato punto-flotante, convirtiendo a 4 dígitos y exponencial fuera es requerido. >> num2str(13.5555555) ans = 13.5556 num2str(f, k) : convierte el escalar f en una representación en formato punto-flotante con k dígitos. >> num2str(135.12345678,7) ans = 135.1235 int2str(n) : convierte el entero n en un representación del tipo cadena. >> cad1=int2str(657) cad1 = 657 str2num(cad) :retorna el valor numérico de la cadena cad. >> str2num('234')+1 ans = 235
  • 54. >> str1='t'; >> str2='abc'; >> str3=[str1,str2] % Concatena (une) las cadenas str1 y str2 str3 = tabc >> str3=[str1,' ',str2] str3 = t abc >> nombre =['El nombre es:'; nomb, ' ' , apell] nombre = El nombre es: Juan Campos >> s1='Continuar'; >> s2='Parar'; >> strcmp(s1,s2) % Compara las cadenas s1 y s2 ans = 0 >> strcmp(s1,'Continuar') % Compara las cadenas s1 y s2 ans = 1 54
  • 55. Definición de funciones en línea 55  >> format compact  >> g = inline( 'x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)')  g = f(x) = x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)  >> g(1)  ans = 2.906093942819682  Otra manera: g = @(x) x.^2+x.*sin(pi*x/2)+exp(x)./(x+2)  >> f = inline( 'x+2+y')  f = f(x, y) = x+2+y  >> f(3,7)  ans = 12  Otra manera: f = @(x,y) x+2+3*y
  • 56. >> fplot(g,[-1.5 1.5],160) -1.5 -1 -0.5 0 0.5 1 1.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 56
  • 57. GRAFICAS CON MATLAB Comando plot: Sintaxis: plot (X,Y) Plotea el vector Y vs el vector X. Si X o Y es una matriz, entonces el vector es ploteado vs las filas o columnas de la matriz, dependiendo si el vector es fila o columna. 57
  • 58. Ejemplo: Para graficar f(t) = tSen t, 0  t  6 » t=0:0.1:6; » y=t.*sin(t); » plot(t,y) 0 1 2 3 4 5 6 -5 -4 -3 -2 -1 0 1 2 58
  • 59. Ejemplo: Para graficar las funciones f(t)=t Sen t, 0  t  6, y g(t)=t^2, 0  t  6 » t=0:0.1:6; » y=[t.*sin(t); t.^2]; » plot(t,y) 0 1 2 3 4 5 6 -5 0 5 10 15 20 25 30 35 40 59 Lo mismo se obtiene si se escribe » t=0:0.1:6; » plot(t,t.*sin(t),t, t.^2)
  • 60. Sintaxis plot (X,Y,S): S es un carácter o cadena (string) compuesto de uno o de todos los elementos de las siguientes tres columnas: 60
  • 61. Color Tipo de marca Tipo de línea y yellow . punto - línea continua m magenta o círculo : línea punteada c cyan x marca-x -. línea raya y punto. r red + más -- línea … g green * estrella .- línea continua con b blue s cuadrado puntos en los datos w white d diamante k black v triángulo (abajo) ^ triángulo (arriba) < triángulo (izquierdo) > triángulo (derecho) p estrella de 5 puntas h estrella de 6 puntas 61
  • 62. Ejemplo: Gráficar g(x) = xex , -3  x  5 » x=-3:0.1:5; » y=x.*exp(x); » plot(x,y,'c+:') 62
  • 64. plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combina las gráficas definidos por las ternas (Xk, Yk, Sk), Ejemplo: Graficar las funciones f(x) = x Sen x , 0  x  6, g(x) = x^2 , 1  x  5, » x1=0:0.1:6; y1=x1.*sin(x1) x2=1:0.1:5; y2=x2.^2; plot(x1,y1,'g.-', x2,y2,'y*') 64
  • 65. 65
  • 66. Para etiquetar los ejes: xlabel('texto') adiciona el texto junto al eje X. ylabel('texto') adiciona el texto junto al eje Y. Para colocar un título a un gráfico: Title ('text') adiciona texto como titulo en la parte superior Para anotar un texto: text(X,Y,'string') adiciona el texto entre comillas en la posición (X,Y) donde las unidades son las usadas actualmente. 66
  • 67. Ejemplo: Para graficar las funciones f(x) = x Cos x , -3  x  4, » x=-3:0.2:4; » y=x.*cos(x); » plot(x,y,'g.-') » xlabel('X') » ylabel('Y') » title('G R A F I C O') » text(2,0,'f') » text(-2,-3,'f(x) = x cosx') 67
  • 68. 68
  • 69. grid on : para agregar una retícula a la gráfica. grid off : para desactivar(eliminar) la retícula de la gráfica. » grid on Se puede redibujar una figura en forma cuadrada con: » axis('square') Los ejes coordenados y las marcas de escala pueden omitirse con: » axis('off') Este efecto se cancela con » axis('on') 69
  • 70. 70 El máximo y el mínimo de las coordenadas en la gráfica se pueden especificar con » axis([x_min, x_max, y_min, y_max]) » legend('cadena 1', 'cadena 2', etc) Le permite agregar una leyenda a su gráfica. La leyenda muestra un modelo de la línea y menciona la cadena que especificó.
  • 71. 71 >> x=-2:0.1:3; >> plot(x,x,':ok',x,x.^2,'--xr',x,x.^3,'-b') >> legend('y = x','y = x^{2}','y = x^{3}') -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 -10 -5 0 5 10 15 20 25 30 y = x y = x2 y = x3
  • 72. 72 Ejemplo: x = -pi:.1:pi; y = sin(x); plot(x,y) set(gca,'XTick',-pi:pi/2:pi) set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'}) xlabel('-pi leq Theta leq pi') ylabel('sin(Theta)') title('Grfica de sen(Theta)') text(-pi/4,sin(-pi/4),'leftarrow sen(-pidiv4)',... 'HorizontalAlignment','left')
  • 73. 73
  • 74. 74 Gráfica de relaciones Se quiere solucionar el sistema no lineal y²-x²-1 = 0, x²+y²-4 = 0 Graficando para obtener un punto inicial. >> ezplot('y^2-x^2-1') >> hold on >> ezplot('y^2+x^2-4') >> ezplot('x*y') % para graficar los ejes >> hold off
  • 75. 75 -6 -4 -2 0 2 4 6 -6 -4 -2 0 2 4 6 x y x y = 0
  • 76. 76 >> ezplot('x^2-8*x-4*y+8',[-15,15]); axis equal -15 -10 -5 0 5 10 15 20 -15 -10 -5 0 5 10 15 x y x2 -8 x-4 y+8 = 0
  • 77. 77 >> ezplot('x^2/4-(y-3)^2/5-1',[-15,15, -10, 10]) >> axis equal; axis([-15,15, -10, 10]) -15 -10 -5 0 5 10 15 -10 -8 -6 -4 -2 0 2 4 6 8 10 x y x2 /4-(y-3)2 /5-1 = 0
  • 78. 78 >> ezplot('sin(t)','cos(t)',[-pi/2,pi/2]);axis equal -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 x y x = sin(t), y = cos(t)
  • 79. 79 Gráficas en coordenadas polares: polar (TETA, RO) Produce una gráfica usando las coordenadas polares del ángulo TETA en radianes, vs el radio RO. polar (TETA, RO, S) Con la cadena S se especifica el estilo de línea.
  • 80. 80 Ejemplo: Para graficar las funciones r = t e-t , 0 t  , » t=0:0.1:pi; » r=t.*exp(-t); » polar(t,r) » title('Gráfica polar')
  • 81. 81
  • 82. 82 CONTINUANDO CON GRAFICOS EN 2D En algunas ocasiones se tiene una gráfica y luego se quiere graficar otra. Para ello se usa la instrucción: hold on y para desactivar: hold off Si se quiere graficar otra figura sin dañar las anteriores y la actual, se usa la instrucción : figure
  • 83. 83 Ejemplo: » t=-pi/2:0.1:pi/2; » y1=sin(t); » plot(t,y1,'r*') Ahora queremos graficar sobre la gráfica anterior y= t^2 » y2=t.^2; » hold on » plot(t,y2) » hold off
  • 84. 84
  • 85. 85
  • 86. 86 Ahora se quiere graficar y =Ln t, 0.2 t  3 , conservando la figura anterior: » figure » t=0.2:0.1:3; » y=log(t); » plot(t,y)
  • 87. 87
  • 88. 88 SOLUCION DE SISTEMAS DE ECUACIONES LINEALES Ejemplo: Encontrar la solución del siguiente sistema lineal 2x1 +6x2 +7x3 +9x4 = 2 3x1 +7x2 +2x3 +5x4 = -1 4x1 -2x2 +1x3 +6x4 = 3 1x1 +9x2 +8x3 +2x4 = 4 Forma matricial Ax=b donde
  • 89. >> format long >> A=[2 6 7 9 3 7 2 5 4 -2 1 6 1 9 8 2]; >> b=[2 -1 3 4]'; >> x=Ab x = 9.556650246305419e-01 -5.123152709359606e-01 1.078817733990148e+00 -4.876847290640394e-01 89
  • 90. Verificando >> A*x-b ans = 1.776356839400250e-15 8.881784197001252e-16 4.440892098500626e-16 0.000000000000000e+00 Verificando >> norm(A*x-b) ans = 2.035072419451040e-15 Determinante de A: >> det(A) ans = 1218 90
  • 91. 91 FUNCIONES PARA LA CONSTRUCCION DE MATRICES eye matriz identidad zeros matriz de ceros ones matriz de unos diag más adelante en un ejemplo. triu parte triangular superior de una matriz incluido la diagonal tril parte triangular inferior de una matriz incluido la diagonal rand matriz generada aleatoriamente
  • 92. 92 >> eye(2) ans = Diagonal Matrix 1 0 0 1 >> zeros(2,3) ans = 0 0 0 0 0 0 >> ones(2,3) ans = 1 1 1 1 1 1
  • 93. 93 » a=[3 5 6 ;8 2 5; 4 7 1] a = 3 5 6 8 2 5 4 7 1 » diag(a) ans = 3 2 1 » diag([4, 6, 7]) ans = 4 0 0 0 6 0 0 0 7
  • 94. 94 » a a = 3 5 6 8 2 5 4 7 1 » triu(a) ans = 3 5 6 0 2 5 0 0 1
  • 95. 95 » tril(a) ans = 3 0 0 8 2 0 4 7 1 » c = rand(3,4) Descomposición LU de la matriz A: » [L1, U]=lu(A)
  • 96. 96 FUNCIONES QUE REALIZAN TAREAS. PROGRAMAS USANDO ARCHIVOS M-file Haydos tipos dearchivos .m: - Archivos deinstrucciones - Archivos defunciones.
  • 97. 97 Archivos de instrucciones : Un archivo de instrucciones consiste de una sucesión de instrucciones normales de Octave/MATLAB. Las variables en un archivo de instrucciones son globales y, por tanto, cambiarán los valores del espacio de trabajo. Los archivos de instrucciones son utilizados a menudo para introducir datos en una matriz grande.
  • 98. 98 Archivos de funciones: Los archivos de funciones hacen que MATLABtenga capacidadde crecimiento. Sepuedencrearfunciones específicas paraun problem a concreto, y, a partirdesuintroducción, tendránel m ismorangoquelasdem ás funciones del sistem a. Las variables en las funciones son locales. Tam bién se puede declarare una variable com o global.
  • 99. 99
  • 100. 100 Creando un archivo de variables inicializados %datos1.m %Archivo de variables inicializadas a=[2 3; 4 5]; b=[2 3]'; Para cargar los datos >> datos1 >> a a = 2 3 4 5 >> b b = 2 3
  • 102. 102 Instrucción for ... end: Sintaxis: for var = expresión instrucción_1  instrucción_M end for var = expresión, instrucción_1,...,instrucción_M end donde var : es un nombre de variable adecuado Expresión : usualmente tiene la siguiente forma Inicio:Incremento:Fin ó Inicio:Fin
  • 103. 103 Inicial: valor inicial que va a tomar la variable Fin : valor final que va a tomar la variable Si el incremento es uno: var = Inicial:1:Fin se puede expresar como var = Inicial:Fin
  • 105. 105 Para var = Inicial:Incremento:Fin Instrucción_1 Instrucción_2 ...................... Instrucción_M
  • 106. Ejemplo: Escribir los cuadrados de los números pares menores que 10. for i =2:2:9 disp( i^2 ) end 4 16 36 64 Ejemplo: Escribir los cubos de los números impares menores o iguales que 9, en forma descendente. for i =9: - 2 : 1 disp( i^3 ) end 729 343 125 27 1 106
  • 107. 107 Instucción while : Sintaxis: while expresión instrucciones end Las instrucciones se repetirán mientras expresión sea verdadero. Con la instrucción break se puede terminar anticipadamente el lazo while... end.
  • 109. Ejemplo: Obtenga el épsilon de la máquina y comparelo con eps. epsm=1; while epsm/2 + 1 > 1 epsm = epsm/2 end Esto también se puede expresar como : epsm=1;while epsm/2+1>1, epsm = epsm/2, end epsm = 2.220446049250313e-16 El épsilon de la máquina en MATLAB se obtiene con >> eps ans = 2.220446049250313e-16 109
  • 110. El número de máquina más grande en Octave se obtiene con >> realmax ans = 1.797693134862316e+308 NOTA: Si un valor se vuelve mayor que realmax, el número se trata de overflow y es denotado por inf. >> inf ans = Inf >> 1/inf ans = 0 110
  • 111. 111 Hay casos en los que la respuesta en NaN, lo que significa que no es un número. Ejemplo: » 0*inf ans = NaN
  • 112. 112 Instucción if : Sintaxis : if relación instrucciones end Las instrucciones se ejecutarán sólo si la relación es cierta.
  • 113. 113 La forma general de la sentencia if es if expresión1 sentencias1 elseif expresión2 sentencias2 else sentencias3 end Las sentencias serán ejecutado si la parte real de la expresión tiene todos los elementos no ceros.
  • 114. 114 Las partes else y elseif son opcionales. La expresión usualmente tiene la forma expr oper expr donde oper es : ==, <, >, <=, >=, ~= Ejemplo: if n < 0 paridad = 0; elseif rem(n,2) == 0 paridad = 2; else paridad = 1; end disp(paridad)
  • 115. 115 Relaciones: Los operadores relacionales en MATLAB son < menor que > mayor que <= menor o igual que >= mayor o igual que == igual ~= no igual Los operadores pueden conectarse o cuantificarse por los operadores lógicos & y | o ~ no
  • 116. 116 Cuando se aplican a escalares, una relación es realmente el escalar 1 o 0 dependiendo de si la relación es verdadera o falsa. Ejemplo: >> 4 < 6 ans = 1 >> 3 > 8 ans = 0 >> 4==4 ans = 1 >> 3==6 ans = 0
  • 117. 117 Ejem plo : Escriba una función que encuentre el m ayor de dos núm eros a,b function SalMay=mayor(a,b) if a>b SalMay=a; else SalMay=b; end guardar con nombre mayor.m Ejecutandoesta función: >>m ayor(4,5) ans = 5
  • 118. 118 Ejem plo : Escriba una función que encuentre el núm ero positivo m ás pequeñode la m áquina. function x_m in =xm in() x_ant=1; whilex_ant >0 x_m in =x_ant; x_ant =x_ant /2; end guardar con nombre xmin.m Para ejecutaresta función, ingrese: » form at long e » xmin Para volveral form atodesalida estandar: » form at short
  • 119. 119 Ejem plo : Escriba una función en MATLAB con nom bref01, correspondientea la función f(t,y)=(4-y*y)/(-3*t) function f_sal =f01(t,y) f_sal=(4-y*y)/(-3*t); guardar con nombre f01.m o en otro directorio personal de trabajo Para ejecutaresta funciónpara t=1 yy=-1, ingrese: »f01(1,-1) ans = -1
  • 120. 120 Ejemplo : Escriba una función en MATLAB con nombre f02, correspondiente a la función              t y y t y y ) y , y , t ( f 9 4 2 2 4 8 2 1 2 1 2 1 , con el nombre de f02.m function f_sal = f02(t, y) f_sal = [8*y(1) -4*y(2) + 2*t 2*y(1) -4*y(2) + 9*t]; guardar con nombre f02.m Para ejecutaresta función, para t =2 y1 =3 y2 =-5, ingrese: »f02(2,[3, -5]) ans = 48
  • 121. 121
  • 122. 122 Implementación en Octave/MATLAB: function s = suma(a, m) s = 0; for k=1:m s = s + a(k); end end Esta idea se puede aplicar en otros lenguajes de computación. CORRIDA: a=[2 7 9 5 6]; m = 5; >> suma(a,m) ans = 29 En Octave/MATLAB se cuenta con la función sum: >> sum(a) ans = 29
  • 123. 123
  • 124. 124 Implementación en Octave/MATLAB: function p = producto(a, m) p = 1; for k=1:m p = p * a(k); end end Esta idea se puede aplicar en otros lenguajes de computación. CORRIDA: a=[2 7 9 5 6]; m = 5; producto(a,m) ans = 3780 En Octave/MATLAB se cuenta con la función prod: prod(a) ans = 3780
  • 125. 125 Ejemplo : Escriba una función comb(k,n) en MATLAB para calcular
  • 126. 126 function p = comb(j,m) p = 1; for k = 0:(j-1) p = p*(m-k)/(j-k); end End >> comb(3,6) ans = 20 >> comb(1,6) ans = 6 >> comb(6,6) ans = 1
  • 127. 127 function s = exp1(x, n) a = 1; s = a; for k = 1:n a = a*x/k; s = s + a; end end Ejemplo: Escriba una función que calcule retorne la aproximación de la exponencial dados x y m como entrada.    m k k ! k x S 0