Matlab - Métodos Numéricos 1.2
Matlab - Métodos Numéricos 1.2
Matlab - Métodos Numéricos 1.2
Edwin Chávez
Edwin
» A=[1 3 5; 6 9 2; 4 8 7]
» A^2+3*A
A =
Chávez Ramírez
ans =
1 3 5
Ramírez
6 9 2 42 79 61
4 8 7 86 142 68
92 164 106
» det(A)
Edwin Chávez
Edwin
Vectores columna: los elementos de una misma columna están
separados por intro o por caracteres punto y coma (;).
Chávez Ramírez
>> w =[2;3;4;7;9;8]
Ramírez
La dimensión de un vector se obtiene por el comando length(nombre
del vector) sub_w=w(i:k:j)
Generación de vectores:
• Especificando el incremento de sus componentes v=a:h:b;
• Especificando su dimensión linspace(a,b,n) si se omite n toma 100
por defecto; el incremento es k=(b-a)/(n-1)
• Con componentes logarítmicamente espaciadas logspace(a,b,n)
genera un vector fila de n puntos logarítmicamente espaciados entre
10a y 10b. Si se omite el valor de n se toma 50
Vectores y matrices_______________________________
Operaciones con escalares:
v+k adición o suma
v-k sustracción o resta
v*k multiplicación
Edwin Chávez
Edwin
v/k divide por k cada elemento de v
k./v divide k por cada elemento de v
v.^k potenciación cada componente de v esta elevado a k
Chávez Ramírez
k.^v potenciación k elevado cada componente de v
Operaciones entre vectores:
Ramírez
v+w adición o suma
v-w sustracción o resta
v.*w multiplicación cada elemento de v por el correspondiente de w
v./w divide cada elemento de v por el correspondiente de w
v.^w potenciación cada componente de v esta elevado al
correspondiente de w
Producto escalar de vectores v*w calcula el producto escalar de v
por w
Vectores y matrices_______________________________
Funciones de MatLab específicas para vectores:
sum(v) suma
prod(v) producto
Edwin Chávez
Edwin
sort(x) Ordena de menor a mayor el vector x
find(x<n) Busca los elementos del vector x, menores a n
v' transposición de vectores (filas columnas)
Chávez Ramírez
dot(v,w) producto escalar de vectores
cross(v,w) producto vectorial de vectores
Ramírez
[y,k]=max(v) valor máximo de las componentes de un vector k indica
la posición, lo mismo para min(v) valor mínimo
mean(v) (hace la media)
diff(v) (vector cuyos elementos son la resta de los elemento de v)
iscolumn(A) Controla si isemty(A) Isequal(B,D)
es columna o no, la Retorna 0 si no es Retorna 1 si son
variable A, B vacío, caso contrario iguales, caso
retorna 1 contrario retorna 0
Ejemplo:
>> A=[2;3; 5]
Edwin Chávez
Edwin
Ejemplo: Ejemplo:
A= >> isempty(A) >> D=[3 4 5 6];
2 ans = >> isequal(B,D)
Chávez Ramírez
3 0 ans =
5 >> C=[ ]; 0
>> iscolumn(A) >> isempty(C) >> T=[2 3 5];
Ramírez
ans = ans = >> isequal(B,T)
1 1 ans =
>> B=[2 3 5] 1
B=
235
>> iscolumn(B)
ans =
0
isequalwithequalnans(A, B) isfinite(A) isfloat(A)
Compara vectores con Si es infinito devuelve Determinar si la
elementos NaN 0 caso contrario entrada es punto
devuelve 1 flotante
Ejemplo:
>> A=[3 4 NaN 8]; Ejemplo: Ejemplo:
Edwin Chávez
Edwin
>> B=A; >>A = [-2 0 1 2]; >> a=14.6; whos a
>> isequal(A,B) isfinite(1./A) Name Class
ans =
Chávez Ramírez
ans = a double
0 101 >> isfloat(a)
>> ans =
Ramírez
isequalwithequalnans(A,B) 1
ans = >> b=uint8(a); whos b
1 Name Class
b uint8
>> isfloat(b)
ans =
0
Isinf(A) Isinteger(A)
Devuelve 1 si es infinito, Duelve 1 si es un tipo uint* y caso contrario
caso contrario devuelve 0 devuelve 0
int8 uint8 int16
Ejemplo: uint16 int32 uint32
>> B = [-2 -1 0 1 2]; int64 uint64
>> A=1./B;
Edwin Chávez
Edwin
>> isinf(A) Ejemplo:
ans = >> isinteger(uint8(9))
Chávez Ramírez
00100 ans =
1
>> isinteger(9)
Ramírez
ans =
0
SELECCIÓN DE LOS ELEMENTOS DE UN VECTOR “V”:
Edwin Chávez
Edwin
V(n:m) Devuelve los elementos del vector V situados entre el n-ésimo y
el m-ésimo, ambos inclusive.
V(n:p:m) Devuelve los elementos del vector V situados entre el n-ésimo
Chávez Ramírez
y el m-ésimo, ambos inclusive pero separados de p en p unidades.
Sea el vector
Ramírez
>> V=[6 7 2 8 9];
Edwin Chávez
Edwin
-Un método numérico para aproximar la solución en el intervalo [0,1] con
parámetro de discretización 0.2
Chávez Ramírez
Ángulo (radianes) Solución aproximada
0 1.0030
0.2 1.0234
Ramírez
0.4 1.0825
0.6 1.1869
0.8 1.3342
1 1.5415
Para definir una matriz no hace falta establecer de antemano su tamaño (de
hecho, se puede definir un tamaño y cambiarlo posteriormente). MatLab
determina el número de filas y de
columnas en función del número de elementos que se proporcionan (o se
utilizan). Las matrices se definen por filas; los elementos de una misma fila
Edwin Chávez
Edwin
están separados por blancos o comas, mientras que las filas están separadas
por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo, el
Chávez Ramírez
siguiente comando define una matriz A de dimensión (3x3):
» A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
Ramírez
A=
123
456
789
Edwin Chávez
Edwin
accederse a cualquier elemento de una matriz con un sólo subíndice. Por ejemplo,
si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que
escribiendo A(4).
Chávez Ramírez
Los operadores matriciales de MatLab son los siguientes:
+ adición o suma
Ramírez
– sustracción o resta
* multiplicación
' adjunta (transpuesta o transpuesta conjugada)
^ potenciación
\ división-izquierda
/ división-derecha
.* producto elemento a elemento
./ y .\ división elemento a elemento
.^ elevar a una potencia elemento a elemento
SELECCIÓN DE LOS ELEMENTOS DE UNA MATRIZ “A”:
Edwin Chávez
Edwin
A(:,p) Devuelve la columna p-ésima de la matriz A.
A(:) Devuelve un vector columna cuyos elementos son las columnas de A
Chávez Ramírez
situadas por orden.
A(:,:) Devuelve toda la matriz A.
Ramírez
Sea la matriz Para obtener el elemento de la 2da fila y la 3ra
>> A=[1:4; 5:8; 9:12] col.
A = >> A(2,3)
1 2 3 4 ans =
5 6 7 8 7
9 10 11 12 Para obtener la primera fila
>> A(1,:)
ans =
1 2 3 4
Para obtener la tercera columna
>> A(:,3)
ans =
3
7
11
Para obtener la submatriz formada por la 1ra y 2da columna
Edwin Chávez
Edwin
>> A(:,1:2)
ans =
1 2
Chávez Ramírez
5 6
9 10
Ramírez
Para obtener la matriz aumentada añadiendo a la matriz A su tercera
columna
>> AD=[A A(:,3)]
AD =
1 2 3 4 3
5 6 7 8 7
9 10 11 12 11
Para obtener todos sus elementos de la
matriz A como un único vector
>> vect=A(:)
vect =
1
Extraer la submatriz indicada de la matriz B.
5
9
2
Edwin Chávez
Edwin
6
10
Chávez Ramírez
3
7
11
Ramírez
4
8
12
>> B=[3,6,10,12;2,16,30,31;4,-2,3,96;5,32,96,97;2,1,3,4];
>> M=B(2:4,2:3)
M =
16 30
-2 3
32 96
Vectores y matrices
Matriz vacía: M=[ ];
Edwin Chávez
Edwin
Cambiar el valor de algún elemento: M(2,3)=1;
Chávez Ramírez
Eliminar una columna: M(:,1)=[ ], una fila: M(2,:)=[ ];
Ramírez
Generación de matrices:
eye(n) Crea la matriz identidad de nxn
zeros(n) Crea la matriz nula de nxn
ones(n) Crea la matriz de unos de nxn
rand(n) Crea una matriz aleatoria uniforme de nxn
randn(n) Crea una matriz aleatoria normal de nxn
diag(A) Extraer la diagonal de la matriz A
Edwin Chávez
Edwin
diag(A,k)Extraer la k-ésima diagonal de la matriz A.
k = 0 es la diagonal principal, k > 0 es encima de la diagonal principal y k < 0
Chávez Ramírez
es debajo de la diagonal principal.
eye(m,n) Idem orden mxn
zeros(m,n) Idem de orden mxn
Ramírez
ones(m,n) Idem de orden mxn
rand(m,n) Idem de orden mxn
randn(m,n) Idem de orden mxn
diag(v) Matriz diagonal con los elementos de v
diag(v,k) Matriz diagonal con los elementos de v en la k-ésima diagonal
tril(A) Parte triangular inferior de la matriz A
triu(A) Parte triangular superior de la matriz A
Genere una matriz NULA de orden 2 y otra de orden 2x3
>> zeros(2)
>> zeros(2,3)
Edwin Chávez
Edwin
Genere una matriz IDENTIDAD de orden 3
Chávez Ramírez
>> I=eye(3)
Ramírez
Genere una matriz ALEATORIA de orden 3
>> rand(3)
Extraer la DIAGONAL de la matriz A
>> A=[1:4; 5:8; 9:12];
>> D=diag(A)
D =
1
6
11
Genere una matriz DIAGONAL con los valores del 2 al 4
>> I=diag(2:4)
I =
2 0 0
0 3 0
0 0 4
Edwin Chávez
Edwin
Genere la matriz Identidad de orden 3
>> I=diag(ones(3,1))
Chávez Ramírez
I =
1 0 0
0 1 0
Ramírez
0 0 1
MÁS MATRICES ESPECIALES:
M = magic(n) retorna una matriz de nxn construida con enteros del 1.. n2
con igual suma en las filas, columnas, diagonal principal y diagonal
secundaria.
Edwin Chávez
Edwin
>> magic(3)
ans =
Chávez Ramírez
8 1 6
3 5 7
4 9 2
Ramírez
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
pascal: matriz de Pascal.
Edwin Chávez
Edwin
>> pascal(2)
ans =
Chávez Ramírez
1 1
1 2
>> pascal(3)
Ramírez
ans =
1 1 1
1 2 3
1 3 6
Vander: matriz de Vandermonde.
A = vander(v) matriz cuyas columnas son potencias del vector v, dado por
A(i,j) = v(i)^(n-j)
.
>> vander([2 4 1])
ans =
4 2 1
Edwin Chávez
Edwin
16 4 1
1 1 1
Chávez Ramírez
>>%tambien
>> vander([2;4;1])
ans =
Ramírez
4 2 1
16 4 1
1 1 1
>> vander([2 4 5 3 6])
ans =
16 8 4 2 1
256 64 16 4 1
625 125 25 5 1
81 27 9 3 1
1296 216 36 6 1
Hilb: matriz de Hilbert.
H = hilb(n) matriz de orden n. Es una matriz pobremente
condicionada, sus elementos son
Edwin Chávez
Edwin
>> hilb(3)
Chávez Ramírez
ans =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
Ramírez
0.3333 0.2500 0.2000
>> invhilb(4)
ans =
16 -120 240 -140
-120 1200 -2700 1680
240 -2700 6480 -4200
-140 1680 -4200 2800
Mas Operaciones con Matrices
A’ Matriz transpuesta de A
inv(A) Matriz inversa de la matriz cuadrada A
det(A) Determinante de la matriz cuadrada A
trace(A) Suma de los elementos de la diagonal de A
transpose(A) Matriz transpuesta de A
Edwin Chávez
Edwin
rank(A) Rango de la matriz A
size(A) Devuelve el orden (tamaño) de la matriz A, es decir el numero de filas
y numero de columnas.
Chávez Ramírez
sum(A) Suma de los elementos de la matriz A en cada columna.
sum(A,2) suma de los elementos de la matriz A en cada fila.
prod(A) Producto de los elementos de la matriz A en cada columna.
Ramírez
prod(A,2) producto de los elementos de la matriz A en cada fila.
cumsum(A) Suma acum. de los elementos de la matriz A en cada columna.
cumsum(A,2) suma acum. de los elem. de la matriz A en cada fila.
norm(A) norma de una matriz (máximo de los valores absolutos de los
elementos de A)
flipud(A) reordena la matriz, haciendo la simétrica respecto de un eje
horizontal.
fliplr(A) ) reordena la matriz, haciendo la simétrica respecto de un eje vertical
[V, landa]=eig(A) da una matriz diagonal landa con los autovalores y otra V
cuyas columnas son los autovectores de A
Vectores y matrices_______________________________
Edwin Chávez
Edwin Chávez Ramírez
Matrices dispersas o huecas son aquellas que tienen gran cantidad de
elementos nulos
Ramírez
>> a= sparse(i,j,c,m,n)
m indica filas, n columnas, c vector que contiene los elementos no nulos i,j son
dos vectores que indican la posición de cada elemento de c
para visualizar la matriz entera
>>full(a)
[i2,j2,c2]=find(a)
Vectores y matrices_______________________________
12 4 0 0 0
8
Edwin Chávez
Edwin
7 3 0 0
0 0 0 0 0
Chávez Ramírez
0 0 13 11 0
0 0 2 7 4
Ramírez
Y trabajemos con ella como una matriz dispersa, para ello definimos el vector
de elementos no nulos, el vector definido por las filas y el vector definido por
las columnas
Vectores y matrices_______________________________
m=[12,-4,7,3,-8,-13,11,2,7,-4];
f=[1,1,2,2,2,4,4,5,5,5];
c=[1,2,1,2,5,3,4,3,4,5];
a=sparse(f,c,m,5,5)
full(a)
Edwin Chávez
Edwin
m1=[12,7,-4,3,-13,2,11,7,-8,-4];
f1=[1,2,1,2,4,5,4,5,2,5];
Chávez Ramírez
c1=[1,1,2,2,3,3,4,4,5,5];
b=sparse(f1,c1,m1,5,5];
Ramírez
full(b)
a=sparse(f,c,m)
s=a+b
p=a*b
[f2,c2,m2]=find(p)
e=full(sparse(f2,c2,m2))
Solución de los SEL, usando MatLab
Para resolver los sistemas lineales A*x = B por ejemplo
Edwin Chávez
Edwin
Recuerde las siguientes operaciones:
Símbolo Operación
Chávez Ramírez
/ Cociente matricial, B/A=B*inv(A)
\ Cociente matricial, A\B=inv(A)*B
Ramírez
Si A es una matriz no singular cuadrada entonces A\B y B/A corresponden
formalmente a la multiplicación izquierda y derecha de B por A-1 (inversa de A).
Edwin Chávez
Edwin
A =
2 3 -4
Chávez Ramírez
1 -1 1
4 -7 14
>> b=[3;-0.5;2]
Ramírez
b =
3.0000
-0.5000
2.0000
>> x=A\b %solución
x =
0.5000
2.0000
1.0000
>> linsolve(A,b) %con linsolve
Vectores y matrices_______________________________
Ejercicio 2.1 Dados los vectores definidos por
x=(1,4.5,7.8) y=(sen(90),cos(45),0)
Realizar los cálculos siguientes:
x+y;el producto escalar de x e y; calcular el ángulo que forman ambos
vectores.
Edwin Chávez
Edwin
Ejercicio 2.2 Para un laboratorio se compran los materiales
especificados en la tabla siguiente.
Chávez Ramírez
Ref. arti. Precio Cantidad
1520 1146 200
Ramírez
1621 3450 250
1428 6225 150
1429 7100 150
1628 8500 100
Utilizar vectores y el producto de vectores para calcular el coste de
cada producto y el total a pagar (la tabla de precios no incluye IGV,
debiendo por tanto aplicarse un 18% de incremento.
Vectores y matrices_______________________________
Edwin Chávez
Edwin
submatriz de a formada por la primera columna y la tercera fila y la
submatriz de b formada por la segunda y tercera columna y calcular el
producto 1 2 3 4 2 1
Chávez Ramírez
a 2 3 4 b 2 0 4
4 2 5 1 2 5
Ramírez
Ejercicio 2.4 Utilizar matrices para construir una tabla que
contenga: En la 1º columna la variable grados celsius en el intervalo [0
100] con un paso de 2. En la 2º columna su valor en grados fahrenheit
y en la 3º en grados kelvin. ¿Cómo guardarías en un fichero la tabla
anterior?
9 * celsius
32
5
Vectores y matrices_______________________________
Ejercicio 2.5 Considérese la matriz tridiagonal definida por:
i, si i j
j, si i j 1
aij 1 i , j n
j, si i j - i
Edwin Chávez
Edwin
0, en otro caso
Chávez Ramírez
Introducir la matriz en el espacio de trabajo como matriz
dispersa para n=10
Ramírez
Ejercicio 2.6: Resolver el sistema de ecuaciones lineales
2x + 4y – 4z + 0w = 12
x + 5y – 5z – 3w = 18
2x + 3y + z + 3w = 8
x + 4y – 2z + 2w = 8
Ejercicio:
2x + 4y – 4z + 0w = 12
x + 5y – 5z – 3w = 18
Edwin Chávez
Edwin
2x + 3y + z + 3w = 8
x + 4y – 2z + 2w = 8
Chávez Ramírez
Ramírez
POLINOMIOS
Edwin Chávez
Edwin
Dado un polinomio
Chávez Ramírez
x3+2x
se representa por
>> pol1=[1 0 2 0]
Ramírez
para el cálculo de las raíces de un polinomio existe el comando
roots.
Sol:
Edwin Chávez
Edwin
>>pp=poly([2 -1 -3 4])
pp =
Chávez Ramírez
1 -2 -13 14 24
Ramírez
Ejercicio:
Construya un polinomio que tenga por raíces a:
2
-3 Sol:
0
2-3i >> p1=poly([2 -3 0 2-3i 2+3i])
2+3i p1 =
1 -3 3 37 -78 0
Polinomios______________________________________
Edwin Chávez
Edwin
en caso de que el argumento de poly fuera una matriz obtendríamos como
resultado el polinomio característico de la matriz. Así mismo si queremos
calcular los autovalores de la matriz bastaría con calcular las raíces del
Chávez Ramírez
polinomio característico.
Ejemplo1:
Ramírez
pol2=[2 4 0 1]; % definición del polinomio 2x3+4x2+1
raices=roots(pol2) % cálculo de sus raíces
pol2_n=poly(raices) % reconstrucción del polinomio
real(pol2_n) % ¿qué pasó?
Ejemplo2:
A=[1 2 3 ; 2 3 4; 4 2 5]; p=poly(A) % pol. característico
roots(p) % autovalores de A
Polinomios______________________________________
Para calcular el valor de un polinomio p en un punto dado x basta con
utilizar el comando polyval
>>y=polyval(p,x)
Ejemplo3:
Edwin Chávez
Edwin
p=[1 –1 –1 1] % definición del polinomio x3-x2-x+1
polyval(p,2)
Chávez Ramírez
Ejemplo4:
x=-2:0.1:2;
Ramírez
Y=polyval(p,x);
4 15 40
15 40 85
85 15 156
Polinomios______________________________________
Para multiplicar y dividir polinomios tenemos los comandos especiales
conv(p1,p2) y deconv(p1,p2)
Ejemplo5:
p1=[1, -2, 1]; p2=[1,1]; p3=conv(p1,p2)
Edwin Chávez
Edwin
p4=deconv(p3,p2)
Para obtener el residuo usar la secuencia:
Chávez Ramírez
[p4,r]=deconv(p3,p2) % resto de la división
Ejercicio:
Ramírez
Halle el cociente y el residuo de P(x)/d(x)
>> p=[1,4,0,-10];d=[1,0,-2];
>> [Q,R]=deconv(p,d) %division de p(x) por d(x)
Q =
1 4
R =
0 0 2 -2
Polinomios______________________________________
El comando residue, permite el cálculo del desarrollo en suma de fracciones
simples del cociente p1/p2.
p2 debe tener raíces reales
Edwin Chávez
Edwin
>>[r,p,k] =residue(p1,p2)
Chávez Ramírez
donde:
r= vector columna con los numeradores
Ramírez
p= vector columna con las raices del denominador
k= vector fila con los coeficientes del polinomio independiente.
p1( x ) r (1) r (n )
k(x)
p2( x ) x p(1) x p(n )
Polinomios______________________________________
>>[p1,p2]=residue(r,p,k) hace la operación inversa
Ejemplo6:
Descomponer en fracciones simples el cociente
Edwin Chávez
Edwin
x3 x2 1
x 3 3x 2 4
Chávez Ramírez
p1=[1 1 0 1]
p2=[1 –3 0 4]
[r,p,k]=residue(p1,p2)
Ramírez
rats(r)
x3 x2 1 35 13 1
1
x 3 x 4 9( x 2) 3( x 2)
3 2 2
9( x 1)
[pol1,pol2]=residue(r,p,k)
Ejercicio:
Descomponer en fracciones parciales
Edwin Chávez
Edwin
>> A=[4,-1,-3,-2];B=[1,2,1,0,0];
>> [R,P,Q]=residue(A,B)
Chávez Ramírez
R =
3
-4
Ramírez
1
-2
P =
-1
-1
0
0
Q =
[ ]
Polinomios______________________________________
Para calcular la derivada de un polinomio tenemos el comando,
>>polyder(p)
Ejemplo7: Dado el polinomio x3+6x2+1 su derivada es
p=[1, 6,0,1];
Edwin Chávez
Edwin
d=polyder(p)
d =
Chávez Ramírez
3 12 0 % es decir 3x2+12x
Ejercicio:
Sea el polinomio p(x) = 4x3 + 3x2 +x – 1, halle su derivada y segunda derivada
Ramírez
>> p=[4 3 1 -1]
p =
4 3 1 -1
>> dp=polyder(p)
dp =
12 6 1
>> d2p=polyder(dp)
d2p =
24 6
Polinomios______________________________________
Edwin Chávez
Edwin
del helio es P=-21+5.44T-0.132T2 donde P viene dada en atmósferas y T en
grados Kelvin.
Chávez Ramírez
a) Calcular el valor de la presión a una temperatura de –268.25 ºC.
b) Calcular el valor de la temperatura para una presión de 3N/m2. Nota
1N/m2=9.265e-6 atm.
Ramírez
Ejercicio 3.3 Calcular la solución general de la EDO
y(5)-y(4)+2y’’’-2y’’+y’-y=0
Ejercicio3.4 Calcular al integral
x 4 2x 1
I dx
x 1
Polinomios______________________________________
Ejercicio3.1
p=[1 –1];
q=conv(p,p)
q=conv(q,p)
raices=roots(q)
Edwin Chávez
Edwin
format short
real(raices)
Chávez Ramírez
Ejercicio3.2
a) presion=[-0.132 4.55 –21.0];
Ramírez
presion0=polyval(presion,273.15-268.25)
b) presion1=3*9.265e-006;
presion(3)=presion(3)-presion1
temp=roots(presion)
Polinomios______________________________________
Ejercicio3.3
format long
p=[1 –1 2 –2 1 –1];
raices=roots(p)
Edwin Chávez
Edwin
der_p=polyder(p)
polyval(der_p,round(raices(2)))
Chávez Ramírez
La solución exacta es
y(x)=c1ex+c2sen(x)+c3cos(x)+c4xsen(x)+c5xcox(x)
Ramírez
dsolve(‘D5y-D4y+2*D3y-2*D2y+Dy-y=0’,’x’)
Polinomios______________________________________
Ejercicio3.4
numerador=[1 0 0 2 1];
denominador=[1 –1];
[cociente,resto]=deconv(numerador,denominador)
Edwin Chávez
Edwin
3
4 3 2
4 x x x
I x x2 x 3 dx 3 x 4 ln( x 1)
Chávez Ramírez
x 1 4 3 2
Ramírez
int(‘(x^4+2*x+1)/(x-1)’)
ECUACIONES LINEALES
Dado un sistema algebraico de ecuaciones lineales de la forma Ax=b. Lo
resolveremos por métodos clásicos y con funciones propias de matlab
Algunos comandos cuyos argumentos son matrices y resultan útiles para la
resolución de sistemas.
Edwin Chávez
Edwin
>>det(A) %determinante de una matriz cuadrada
>>inv(A) %inversa de una matriz cuadrada
Chávez Ramírez
>>rank(A) %rango de una matriz el orden del mayor menor con
determinante no nulo
Ejemplo1:
Ramírez
x=ones(4,4);v=[2 2 2 2];y=x+diag(v)
y =
rank(y)
3 1 1 1
1 3 1 1
1 1 3 1
1 1 1 3
>> rank(y)
ans = 4
Ecuaciones lineales________________________________
>>rank(A)-rank([A,b])
Edwin Chávez
Edwin
Número de condición de una matriz
Chávez Ramírez
>>cond(A)
Ramírez
este número indica la sensibilidad de la solución de un problema con respecto
a cambios relativos en los datos de entrada. (es la relación entre
el mayor y el menor valor singular de la matriz, debe ser próximo a 1)
Consistencia (Solubilidad)
Teorema de Rouché-Frobenius
El sistema lineal de ecuaciones Ax=b tiene una solución, o es consistente si y solo si
Rango{A}=Rango{A|b}
Edwin Chávez
Edwin
Un sistema es inconsistente cuando
Rango{A}<Rango{A|b}
Chávez Ramírez
Ramírez
Rank{A} es el máximo numero de columnas linealmente
independientes o filas de A. El rango puede ser encontrado usando
ERO (Elementary Row Oparations) ó ECO (Elementary column
operations).
50
Un ejemplo inconsistente
1 2 x1 4
2 4 x 5
Edwin Chávez
Edwin
2
Chávez Ramírez
>>A=[1 2; 2 4]; Aa=[1 2 4;2 4 5]
Ramírez
Rank(A)=1 Entonces
este sistema
de
ecuaciones
Rank(Aa)=2 no es soluble
51
Unicidad de las soluciones
Edwin Chávez
Edwin
Rango{A}=Rango{A|b}=n
Chávez Ramírez
n es el orden del sistema
Ramírez
Tales sistemas son llamados sistemas full-rank (rango
completo)
52
Sistemas rango completo (Full-rank)
Si Rango{A}=n
Det{A} 0 A es nonsingular por lo tanto invertible
Edwin Chávez
Edwin
Solución Única
Chávez Ramírez
Ramírez
1 2 x1 4
1 1 x 2
2
53
Matrices de rango deficiente
Si Rango{A}=m<n
Det{A} = 0 A is singular por lo tanto no es invertible
Edwin Chávez
Edwin
número infinito de soluciones (n-m variables libres)
sistema sub-determinado
Chávez Ramírez
Ramírez
1 2 x1 4
2 4 x 8
2
Rank{A}=Rank{A|b}=1
Consistente soluble
54
Sistema de ecuaciones mal-condicionados
Sensibilidad al error de redondeo
Una pequeña desviación en las entradas de la matriz A,
causa una gran desviación en la solución.
Edwin Chávez
Edwin
1 2 x1 3 x1 1
0.48 0.99 x 1.47
2 x2 1
Chávez Ramírez
>> A=[1 2; 0.48 0.99];B=[3;1.47];
>> sol=inv(A)*B
Ramírez
sol =
1.00000
1.00000
1 2 x1 3 x1 3
0.49 0.99 x 1.47 x 0
2 2
Sistema bien condicionado :
Pequeños cambios en la matriz causan pequeños cambios en la
55
solución.
Mal condicionados (continua.....)
Un sistema lineal de
Edwin Chávez
Edwin
ecuaciones se dice a ser
Chávez Ramírez
“mal condicionado” si la
matriz de coeficientes
Ramírez
tiende a ser singular
56
Número de Condición o condicionamiento
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
57
cond mide el mal condicionamiento
cond(eye(n))=1
Edwin Chávez
Edwin
rcond mide el buen condicionamiento
Chávez Ramírez
rcond(eye(n))=1
Ramírez
rcond y det
Ecuaciones lineales________________________________
Regla de Cramer
Ejemplo2: Dado un sistema Ax=b
Edwin Chávez
Edwin
A=[1,2,3;2,3,4;4,2,5]
b=[4;5;1];
Chávez Ramírez
%comprobamos que la matriz no es singular
det(A)
Ramírez
D1=A;D1(:,1)=b
D2=A;D2(:,2)=b
D3=A;D3(:,3)=b
x=[det(D1);det(D2);det(D3)]/det(A)
x =
-1.40000
1.80000
0.60000
Ecuaciones lineales________________________________
La solución por Cramer es tediosa y poco eficaz.
Edwin Chávez
Edwin
Ainv=inv(A)
Chávez Ramírez
Y el sistema se resolvería como
x=Ainv*b
Ramírez
Otra solución sería utilizar la división matricial
X=A\b
Edwin Chávez
Edwin
4 10 6
Sustituir en la matriz A el elemento de la fila 1 columna 3 por –10 y hacer lo
Chávez Ramírez
mismo.
Ejercicio 4.2 Dada la matriz M, comprobar el teorema de Cayley-Hamilton:
Ramírez
Toda matriz es raíz de su polinomio característico
M= 1 1 2
1 2 0
3 1
0
Ecuaciones lineales________________________________
Ejercicio4.3
Se considera la matriz A. Calcular los autovectores y autovalores
A=
1 2 0
2 5 1
Edwin Chávez
Edwin
Ejercicio4.1 4 10 1
A=[6 18 2;7 –2 –4;4 10 –6];
Chávez Ramírez
d=det(A)
b=[1;2;3];
sol=A\b
Ramírez
A(1,3)=-10
d=det(A)
sol=A\b
A*sol-b
Ecuaciones lineales________________________________
Ejercicio 4.2
M=[1 1 –2; -1 –2 0; 3 0 1];
poly(M)
M^3+4*M+13*eye(3)
Edwin Chávez
Edwin
Ejercicio 4.3
A=[1 2 0; 2 5 -1;4 10 -1];
Chávez Ramírez
[V,D]=eig(A)
diag(D)
Ramírez
RAÍCES DE FUNCIONES
fzero
Edwin Chávez
Edwin
>> fzero('sin(x)-cos(x)',0)
Chávez Ramírez
ans =
0.7854
Ramírez
>> fzero('sin(2*x)-2*cos(x)+x^2-3*x-
6',3)
ans =
3.9113
Gráficos en MatLab
2. Datos discretos de la curva. Para esto se tiene que tener datos de los
pares ordenados (X,Y), es decir:
Datos
X = Pre imágenes
Y= Imágenes
GRÁFICOS: 2D Y 3D
Funciones gráficas 2D elementales:
Edwin Chávez
Edwin
Estas cuatro funciones son las siguientes:
• plot()
Chávez Ramírez
crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.
• loglog()
Ramírez
ídem con escala logarítmica en ambos ejes.
• semilogx()
ídem con escala lineal en el eje de ordenadas y logarítmica en el eje de
abscisas.
• semilogy()
ídem con escala lineal en el eje de abscisas y logarítmica en el eje de
ordenadas.
plot(X) Representa los puntos (k, X). % k posición del vector
>> x=[7,9,3,1,5,20,5]
x =
7 9 3 1 5 20 5
>> plot(x)
Edwin Chávez
Edwin Chávez Ramírez
Si X es una matriz, hace lo mismo para cada columna de la matriz.
Ramírez
>> figure(2)
>> plot(magic(3))
Edwin Chávez
Edwin
xlabel off desaparece
• ylabel('cual') idem al eje de ordenadas. Con ylabel off
Chávez Ramírez
desaparece
• text(x,y,'texto') introduce 'texto' en el lugar
Ramírez
especificado por las coordenadas x e y. Si x e y son vectores, el
texto se repite por cada par de elementos.
•gtext('texto') introduce texto con ayuda del ratón:
•legend() define rótulos para las distintas líneas o ejes
utilizados en la figura.
• grid activa una cuadrícula en el dibujo.
Con grid off desaparece la cuadrícula
GRÁFICOS: 2D Y 3D______________________________
Edwin Chávez
Edwin
Ejemplo1:
Chávez Ramírez
>> x=[1 3 2 4 5 3]
x =
1 3 2 4 5 3
Ramírez
>> plot(x)
>> title('Mi primer grafico')
>> xlabel('eje X')
>> ylabel('eje y')
>> text(2,3, '(2,3)')
>> gtext('AQUI')
>> legend(‘vector x’)
>> grid Figura 5.1. Gráfico del vector x=[1 3 2 4 5 3].
>> grid off
GRÁFICOS: 2D Y 3D______________________________
FUNCIÓN PLOT
Ejemplo 2: Graficar 𝑦 = cos 𝑥 , 𝑥 ∈ [0,2𝜋]
Sol: Sol:
Edwin Chávez
Edwin
x=0:pi/90:2*pi; x=0:pi/90:2*pi;
y=cos(x); y=sin(x).*cos(x);
plot(x,y) plot(x,y)
Chávez Ramírez
grid on grid on
grid off
Ramírez
grid off
xlabel(‘eje x (en radianes)’) xlabel(‘eje x (en rad)’)
ylabel(‘eje y’) ylabel(‘eje y’)
title(‘y=cos(x)’) title(‘y=sen(x)*cos(x)’)
Edwin Chávez
Edwin
num2str(x) convierte el valor de la variable real o compleja x en carácter
Ejemplo:
Chávez Ramírez
x = 1:3, plot(x), title([‘Esta es la gráfica de x = ',
num2str(x)])
Ramírez
Ejemplo:
n=3456, plot(x), title(['caso de número ' int2str(n)])
GRÁFICOS: 2D Y 3D______________________________
Texto sobre la gráfica
gtext(’texto’)
text(x,y,’texto a imprimir’)
Edwin Chávez
Edwin
ginput(n)
[x,y]=ginput(n)
Chávez Ramírez
Elección del trazo y color de la curva
Ramírez
plot(x,y,’opcion’)
hold on
hold off
GRÁFICOS: 2D Y 3D______________________________
y yellow . point - solid
m magenta o circle : dotted
c cyan x x-mark -. dashdot
r red + plus -- dashed
Edwin Chávez
Edwin
g green * star
Chávez Ramírez
b blue s square
w white d diamond Opciones de plot
Ramírez
k black v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
GRÁFICOS: 2D Y 3D______________________________
FUNCION plot(x,y,S) avanzado.
Tenemos los siguientes atributos: color: color de línea. linewidth: Ancho de la línea.
markeredgeColor: color del borde de las marcas. markerfacecolor: color de la marca.
markersize: tamaño de la marca.
Para especificar un color, se puede utilizar un vector de tres componentes con valores
entre 0 y 1 que especifica un color según el estándar RGB (Red, Green, Blue).
Edwin Chávez
Edwin
>> x=linspace(-2*pi,2*pi,100); y=sin(x);
>> plot(x,y,'color',[0.9 0.1 0.3])
Chávez Ramírez
>> x=linspace(-2*pi,2*pi,100); y=sin(x);
>> plot(x,y,'linewidth',4)
Ramírez
> >x=linspace(-2*pi,2*pi,100); y=sin(x);
>> plot(x,y,'-d','markerfacecolor',[0.9 0.5 0.3])
Ejemplo3:
Calcular gráficamente las soluciones de la ecuación
2 x cos(2 x )
0 .4
2
Edwin Chávez
Edwin
Solución:
>>teta=0:pi/360:pi/4;
Chávez Ramírez
>>f1=(2*teta-cos(2*teta))/2;
>>f2=0.4*ones(size(f1));
Ramírez
>>figure
>>plot(teta,f1,'g--',teta,f2,'r')
>>axis square
>>xlabel('Angulo (radianes)')
>>gtext('2x-cos(2x))/2')
>>text(0.2,0.43,'y=0.4')
>>[teta0,y0]=ginput(1)
teta0 = 0.58599
y0 = 0.40281
>>title(['Raiz aproximada=',num2str(teta0)])
Plot Multiple
plot(X1,Y1,S1,X2,Y2,S2,…,Xn,Yn,Sn)
Edwin Chávez
Edwin
Ejemplo:
Graficar 𝑓 𝑥 = 𝑥 + 4𝑥 2 𝑠𝑒𝑛(𝑥) y 𝑔 𝑥 = 𝑒 𝑥 − xcos 𝑥 2 + 3 en el intervalo [0, 5]
Chávez Ramírez
Solución:
Ramírez
>> x=0:0.01:5;
>> f1=sqrt(x)+4*x.*x.*sin(x);
>> g1=exp(x)-x.*cos(x.^2)+3;
>> plot(x,f1,'r*.',x,g1,'yo:')
Ejercicio:
Graficar 𝑓 𝑥 = 𝑥 𝑥 − 𝑥𝑐𝑜𝑠(𝑥 2 ), en el intervalo [ - 3 , 3] con trazo de color rojo
etiquetas cuadradas y línea punteada, y también 𝑔 𝑥 = 3 𝑥 + sec 𝑥 + 1, con
color magenta, etiquetas de una estrella de 6 puntas y línea semisólida
Solución:
Edwin Chávez
Edwin
>> x=-3:0.4:3;
Chávez Ramírez
>> y=exp(x).^x+x.*cos(x.^2);
>> g=nthroot(x,3)+sec(x)+1;
>> plot(x,y,'rs:',x,g,'mh--')
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Elección de la escala de los ejes
axis([xmin xmax ymin ymax]) Sitúa los valores máximo y mínimo para los
ejes X e Y en el gráfico corriente.
axis (‘auto’) Sitúa los ejes en la escala automática por defecto (la dada por
xmin=min(x), xmax=max(x) e y libre).
Edwin Chávez
Edwin
axis (axis) Congela el escalado de ejes en los límites corrientes, de tal forma
que al situar otro gráfico sobre los mismo ejes (con hold en on), la escala
Chávez Ramírez
no cambie.
V=axis Da el vector V de 4 elementos, conteniendo la escala de gráfico corriente.
axis(‘ij’) Sitúa coordenadas con el origen en la parte superior izquierda del
Ramírez
gráfico.
axis(‘square’) Convierte el rectángulo de graficado en un cuadrado, con lo
que las figuras se abomban.
axis(‘equal’) Sitúa el mismo factor de escala para ambos ejes.
axis (‘normal’) Elimina las opciones square y equal.
axis(‘off’) Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo
el título del gráfico y los textos situados en él con text y gtext.
axis(‘on’) Coloca de nuevo las etiquetas, marcas y rejillas de los ejes.
GRÁFICOS: 2D Y 3D______________________________
Ejercicio:
Edwin Chávez
Edwin
Solución:
>> x=0:0.2:5;
Chávez Ramírez
>> y1=sqrt(x)+x.^2.*sin(x);
>> plot(x,y1)
>> hold on %superposición
Ramírez
>> y2=sin(x)+floor(x.^2);
>> plot(x,y2)
>> axis([-2 7 -30 30])
>> grid %mallado
GRÁFICOS: 2D Y 3D______________________________
LEYENDAS
Colocación
legend(string1,string2,string3, ...) Crea las leyendas de los gráficos correspondientes.
Localización
legend(...,'location',loc) Adiciona las leyendas en una ubicación específica con respecto a los
ejes.
Esta ubicación loc es de 1x4 posiciones y combinaciones de acuerdo a:
Edwin Chávez
Edwin
'North' Dentro del cuadro grafico y arriba.
'South' Dentro y abajo.
'East' Dentro y a la derecha.
Chávez Ramírez
'West' Dentro y a la izquierda.
'NorthEast' Dentro y arriba a la derecha (default)
'NorthWest Dentro y arriba a la izquierda
Ramírez
'SouthEast' Dentro y abajo a la derecha
'SouthWest' Dentro y abajo a la izquierda
'NorthOutside' Fuera del cuadro grafico y arriba
'SouthOutside' Fuera y abajo
'EastOutside' Fuera y a la derecha
'WestOutside' Fuera y a la izquierda
'NorthEastOutside' Fuera y arriba a la derecha
'NorthWestOutside' Fuera y arriba a la izquierda
'SouthEastOutside' Fuera y abajo a la derecha
'SouthWestOutside' Fuera y abajo a la izquierda
'Best' Espacio no usado dentro del cuadro grafico
'BestOutside' Espacio no usado fuera del cuadro grafico
GRÁFICOS: 2D Y 3D______________________________
Ejercicio:
Solución:
Edwin Chávez
Edwin
>> x=-3:0.4:3;
>> y1=-x.*sin(x.^2)+2;
Chávez Ramírez
>> y2=abs(x)+4*sin(x);
>> y3=x+0.3*floor(x);
>> plot(x,y1,x,y2,x,y3);
Ramírez
>> title('Gráfico de tres funciones');
>> xlabel('eje x');ylabel('eje y');
>> legend('-x*sen(x)', '|x|+4*sen(x)', 'x+0.3[x]')
Edwin Chávez
Edwin
A=[y' z']
plot(x,A)
Chávez Ramírez
Función eval se utiliza con funciones definidas con un carácter.
Ramírez
y=eval(’caracter’)
Ejemplo:
f=‘sin(x)-2*cos(x)’;
x=0:pi/90:2*pi;
y=eval(f);
plot(x,y)
axis([0 6 0 2.4]);gtext(‘sen(x)-2cos(x)’)
GRÁFICOS: 2D Y 3D______________________________
Función fplot se utiliza con funciones definidas con un carácter.
Edwin Chávez
Edwin
fplot('fun',limits,S) Plotea 'fun' con las opciones definidas en S.
Chávez Ramírez
fplot('fun',limits,tol) Plotea 'fun' con el error relativo con tolerancia
tol (por defecto es 2*10-3).
Ramírez
fplot('fun',limits,tol,S) Plotea 'fun' con tolerancia tol y con las
opciones def. en S.
Ejemplo:
f=‘sin(x)-2*cos(x)’;
fplot(f,[0 2*pi],’g—’)
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Llamar una nueva figura figure o referirnos a una figura ya echa figure(n)
Edwin Chávez
Edwin
EJEMPLO
Chávez Ramírez
4, se procede en Matlab como:
>>subplot(2,3,4)
Ramírez
>> x=0:pi/40:2*pi;plot(x,sin(x))
GRÁFICOS: 2D Y 3D______________________________
Ejemplo:
subplot(1,2,1)
f=‘sin(x)-2*cos(2*x)’;
fplot(f,[0 2*pi])
Edwin Chávez
Edwin
legend(‘sen(x)-2cos(2x)’)
subplot(1,2,2)
Chávez Ramírez
fplot(‘sin’,[0 4*pi],’r’)
legend(‘sen(x)’)
Ramírez
Gráficos en coordenadas polares
polar(ángulo,r) para graficar en polares
Matlab habilita el comando específico polar, que representa funciones en
coordenadas polares. Su sintaxis es la siguiente:
Edwin Chávez
Edwin
polar (,r) Representa la curva en coordenadas polares r = r()
Chávez Ramírez
polar (,r,S) Idem con el estilo de línea dado por S (ver la
instrucción plot)
Ramírez
EJEMPLO
Graficar el cardiode.
>> a=0:pi/40:2*pi;polar(a,1-sin(a))
EJEMPLO
Graficar
a) La rosa de 4 pétalos horizontal.
>> a=0:pi/40:2*pi;
Edwin Chávez
Edwin
>> polar(a,3*cos(2*a))
Chávez Ramírez
b) La función polar r = 1 – 2*cos(θ)
Ramírez
>> a=0:pi/40:2*pi;
>> polar(a,1-2*cos(a))
Edwin Chávez
Edwin
• bar3h() diagramas de barras horizontales con aspecto 3-D.
• pie() gráficos con forma de “tarta”.
• pie3() gráficos con forma de “tarta” y aspecto 3-D.
Chávez Ramírez
• area() similar plot(), pero rellenando en ordenadas de 0 a y.
• stairs() función análoga a bar() sin líneas internas.
• errorbar() representa sobre una gráfica –mediante barras– valores de
Ramírez
errores.
• compass() dibuja los elementos de un vector complejo como un
conjunto de vectores partiendo de un origen común.
• feather() dibuja los elementos de un vector complejo como un
conjunto de vectores partiendo de orígenes uniformemente espaciados
sobre el eje de abscisas.
• hist() dibuja histogramas de un vector.
EJEMPLO
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Representación de polígonos
función especial para dibujar polígonos planos, rellenándolos de un
determinado color.
Edwin Chávez
Edwin
» fill(x,y,c)
Chávez Ramírez
Si c es un carácter de color ('r','g','b','c','m','y','w','k'), o un vector de valores
[r g b], el polígono se rellena de modo uniforme con el color especificado.
Ramírez
Si c es un vector de la misma dimensión que x e y, sus elementos se
trasforman de acuerdo con un mapa de colores determinado, y el llenado
del polígono –no uniforme en este caso–se obtiene interpolando entre los
colores de los vértices. Este comando con matrices:
GRÁFICOS: 2D Y 3D______________________________
» fill(A,B,C)
donde A y B son matrices del mismo tamaño. En este caso se dibuja un
polígono por cada par de columnas de dichas matrices. C puede ser un
vector fila de colores uniformes para cada polígono, o una matriz del mismo
Edwin Chávez
Edwin
tamaño que las anteriores para obtener colores de relleno por
interpolación.
Chávez Ramírez
Ejemplo:
x=[1,2,1,0];
Ramírez
y=[0,1,2,1];
figure
fill(x,y,’r’)
title(‘rombo’)
GRÁFICOS DE RELACIONES
ezplot(f, [xmin,xmax,ymin,ymax])
Edwin Chávez
Edwin
Plotea f sobre xmin< x <xmax, ymin< y <ymax.
Chávez Ramírez
y(t) sobre el dominio por defecto -2 𝜋 < x < 2 𝜋.
ezplot(x,y, [tmin,tmax]) Plotea x = x(t) , y = y(t) over tmin < t < tmax.
Ramírez
Donde f puede ser una función estandar f = f(x) ó una función implicita f = f(x,y) =
0.
Edwin Chávez
Edwin Chávez Ramírez
>> %funciones implicitas
Ramírez
>> ezplot('1/y-log(y)+log(-1+y)+x - 1')
>> ezplot('x^2 + y^2 - 1',[-1.25,1.25]);
>> axis equal
>> ezplot('x^3 + 2*x^2 - 3*x + 5 - y^2')
>> %En coordenadas paramétricas
>> ezplot('sin(t)','cos(t)')
>> ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])
>> ezplot('sin(3*t)','cos(t)',[0,2*pi])
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Ejercicio 1: Consideremos la ecuación de Van der Waals. Se considera el
benceno para el cual a=18.78 atml2/mol2, b=0.1208 l/mol. Representar sobre
una misma gráfica las dos subgráficas correspondientes a:
Isotermas de 100, 200, 300 y 400 ºC
Isobaras de 25, 35, 45 y 55 atm
Edwin Chávez
Edwin
Cada curva debe ir con trazo diferenciado, con el texto que indique la isolínea
que se ha representado, así como el título de la gráfica y la etiqueta de los
Chávez Ramírez
ejes. R=0.0821 y
V=[2:100];
Ramírez
a
(P 2 )(V b ) RT
V
GRÁFICOS: 2D Y 3D______________________________
Ejercicio5.1:
a=18.78;
b=0.1208;
R=0.0821;
subplot(1,2,1)
T=[373:100:673];
Edwin Chávez
Edwin
V=[2:100];
fac1=R./(V-b);
Chávez Ramírez
fac2=a./V.^2;
P=zeros(4,length(V));
Ramírez
P(1,:)=T(1)*fac1-fac2;
P(2,:)=T(2)*fac1-fac2;
P(3,:)=T(3)*fac1-fac2;
P(4,:)=T(4)*fac1-fac2;
plot(V,P(1,:),'-',V,P(2,:),'--',V,P(3,:),':',V,P(4,:),'-.')
title('Ecuacion de Van der Waals: Isotermas')
xlabel('Volumen, ltr.')
ylabel('Presion, atm.')
axis([0, 50,0,15])
legend('T=100ºC','T=200ºC','T=300ºC','T=400ºC')
GRÁFICOS: 2D Y 3D______________________________
subplot(1,2,2)
P=[25:10:55];
T=zeros(4,length(V));
fac1=(V-b)/R;
Edwin Chávez
Edwin
T(1,:)=((P(1)+fac2).*fac1)-273.15;
T(2,:)=((P(2)+fac2).*fac1)-273.15;
T(3,:)=((P(3)+fac2).*fac1)-273.15;
Chávez Ramírez
T(4,:)=((P(4)+fac2).*fac1)-273.15;
plot(V,T(1,:),'-',V,T(2,:),'--',V,T(3,:),':',V,T(4,:),'-.')
Ramírez
title('Ecuacion de Van der Waals: Isobaras')
xlabel('Volumen, ltr.')
ylabel('Temperatura, ºC')
legend('P=25 atm.','P=35 atm.','P=45 atm.','P=55 atm.')
GRÁFICOS: 2D Y 3D______________________________
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Edwin Chávez
Edwin
-La proyección de las líneas de contorno sobre el domino de definición
-La proyección de las líneas de contorno sobre el plano xy
correspondientes a los valores –4,-1, 1 y 4.
Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Ejercicio5.2
x=[-10:0.5:10]; y=x;
[X,Y]=meshgrid(x,y);
Z=X.*Y;
subplot(221)
Edwin Chávez
Edwin
mesh(X,Y,Z)
legend('z=xy')
xlabel('eje x')
Chávez Ramírez
ylabel('eje y')
zlabel('eje z')
title('superficie z=xy')
Ramírez
subplot(222)
contour3(Z)
grid off
xlabel('eje x')
ylabel('eje y')
GRÁFICOS: 2D Y 3D______________________________
zlabel('eje z')
title('lineas de contorno 3D')
subplot(223)
cs=contour(Z);
contour(x,y,Z)
grid off
Edwin Chávez
Edwin
clabel(cs)
xlabel('eje x')
Chávez Ramírez
ylabel('eje y')
title('Proyeccion de las lineas de contorno')
subplot(224)
Ramírez
contour(Z,[-4,-1,1,4])
grid off
xlabel('eje x')
ylabel('eje y')
title('Proyeccion de las lineas de contorno')
GRÁFICOS: 2D Y 3D______________________________
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Gráficos en MatLab
Edwin Chávez
Edwin
CURVAS 3D
Chávez Ramírez
plot3(X,Y,Z) gráfica la terna X, Y, Z dándonos así una curva en el espacio.
Ramírez
plot3(X,Y,Z,S) gráfica la terna X, Y, Z dándonos así una curva en el espacio
con las características S igual que plot.
ezplot3(x,y,z) Gráfica en coordenadas paramétricas x = x(t), y = y(t), z = z(t)
sobre el dominio por defecto 0 < t < 2π
ezplot3(x,y,z ,[tmin,tmax]) Gráfica x=x(t), y=y(t), z=z(t) sobre tmin < t < tmax.
GRAFICOS DE LINEA EN 3D______________________
Funciones gráficas 3D elementales:
La función plot3 es análoga a su homóloga bidimensional plot. Su forma más
sencilla es la siguiente:
>> plot3(x,y,z): Dibuja una línea que une los puntos (x(1), y(1), z(1)),
Edwin Chávez
Edwin
(x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar
en la pantalla.
Chávez Ramírez
Ejemplo:
Ramírez
teta=0:pi/80:8*pi;
x=1+2*cos(teta);
y=1+2*sin(teta);
z=4*teta;
plot3(x,y,z)
axis([-1 3 -1 3 0 120]);
xlabel('eje x')
ylabel('eje y')
zlabel('eje z')
Al igual que en el caso plano, se puede incluir una cadena de 1, 2 ó 3
caracteres para determinar el color, los marcas, y el tipo de línea:
EJEMPLO
>> plot3(x,y,z,'+r')
>> grid
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
EJEMPLO
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GENERACIÓN DE MALLADOS EN EL PLANO
Meshgrid
Dados dos vectores xa e ya, conteniendo las coordenadas de los ejes x e y,
retorna x e y, conteniendo la ‘Malla’ de coordenadas del mallado en el plano
en una región rectangular correspondiente a x e y.
Edwin Chávez
Edwin
>>xa=1:3,ya=4:6
xa = Explicación:
1 2 3 Como xa = [1 2 3], se tiene en el eje x
Chávez Ramírez
ya = 3 puntos y como ya =[4 5 6] en el eje
4 5 6 se tienen 3 puntos, lo que mediante
>>[x, y]=meshgrid(xa,ya) meshgrid genera un mallado de nueve
Ramírez
x = puntos los cuales se encuentran en x e y
1 2 3 generados por meshgrid.
1 2 3
1 2 3
y =
4 4 4
5 5 5
6 6 6
EJEMPLO
Generar el mallado cuadrangular indicado, usando meshgrid
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Solución:
>> xa=0:0.5:2;ya=0:0.4:2;
>> [x,y]=meshgrid(xa,ya)
SUPERFICIES
Edwin Chávez
Edwin
plano (x,y).
Chávez Ramírez
El aspecto de un gráfico de malla es como una red de pesca,
con los puntos de la superficie sobre los nudos de la red.
Ramírez
Realmente, es un gráfico de superficie cuyo grafo tiene forma de
red.
Edwin Chávez
Edwin
meshz(X,Y,Z) Representa el gráfico de malla de la función z=f(x,y)
con una especie de cortina o telón en la parte inferior
Chávez Ramírez
waterfall(X,Y,Z) Representa el gráfico de cascada de la función
z=f(x,y).
Ramírez
surf(X,Y,Z) Representa el gráfico de superficie de la función
z=f(x,y)
Edwin Chávez
Edwin
Además hace una proyección sobre el plano z=0, meshc(X,Y,Z), líneas
de contorno en el plano z=0
Chávez Ramírez
Ejemplo:
Ramírez
x=[0:2:200];y=[0:50];
%Obtenemos la malla del dominio
[X Y]=meshgrid(x,y);
length(x),length(y)
size(X), size(Y)
Z=X.^2-Y.^2;
figure(1);mesh(X,Y,Z)
figure(2);meshz(X,Y,Z)
Edwin Chávez
Edwin Chávez Ramírez
figure(3);meshc(X,Y,Z)
Ramírez
figure(4); waterfall(X,Y,Z)
Edwin Chávez
Edwin Chávez Ramírez
figure(5); surf(X,Y,Z)
Ramírez
figure(6); surfl(X,Y,Z)
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
figure(7); surfc(X,Y,Z)
Ejercicio:
Graficar el paraboloide z = x2 + y2 en el dominio [ -5, 5 ]x[ -5, 5 ]
Solución:
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
Edwin Chávez
Edwin
>> z=x.^2+y.^2;
>> surf(x,y,z)
Chávez Ramírez
Ramírez
Los gráficos de contorno de curvas de nivel:
Edwin Chávez
Edwin
para la matriz Z usando n líneas de contorno
Chávez Ramírez
contour(x,y,z,n) Dibuja el gráfico de contorno (curvas de
nivel) para la matriz Z usando en los ejes X e Y el escalado definido
Ramírez
por los vectores x e y (n líneas de contorno)
Solución:
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
>> z=x.^2 – y.^2;
Edwin Chávez
Edwin
>> subplot(2,2,1);
>> mesh(x,y,z)
Chávez Ramírez
>> subplot(2,2,2);
>> surf(x,y,z)
>> subplot(2,2,3);
Ramírez
>> contour(x,y,z);
>> subplot(2,2,4);
>> contour3(x,y,z);
Suele denominarse gráfico de densidad.
Edwin Chávez
Edwin
surfc(X,Y,Z) Representa el gráfico de superficie de la función
z=f(x,y) junto sus curvas de nivel.
Chávez Ramírez
Ejemplo:
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
Ramírez
>> z=x.^2 + y.^2;
>> subplot(2,1,1);
>> meshc(x,y,z)
>> subplot(2,1,2);
>> surfc(x,y,z)
SOMBREADO Y COMBINACIONES DE COLOR _______
La función surf y pcolor tiene diversas posibilidades referentes a la forma en
que son representadas las facetas o polígonos coloreados.
Edwin Chávez
Edwin
• shading flat: determina sombreado con color constante para cada
Chávez Ramírez
polígono. Este sombreado se llama plano o flat.
Ramírez
interpolación de colores entre los vértices de cada faceta. Se llama también
sombreado de Gouraud
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
shading faceted
shading interp
Cuando se desea dibujar una figura con un determinado mapa de colores se establece
una correspondencia (o un mapping) entre los valores de la función y los colores del
mapa de colores.
» caxis([cmin, cmax]) %escala el mapa de colores
colormap(opcion). Distintas escalas de colores
hsv - Hue-saturation-value color map.
hot - Black-red-yellow-white color map.
colorbar(‘horiz’),
gray - Linear gray-scale color map.
Edwin Chávez
Edwin
%barra con la escala
bone - Gray-scale with tinge of blue color map.
de colores.
copper - Linear copper-tone color map. colorbar(‘vertical’)
pink - Pastel shades of pink color map.
Chávez Ramírez
%barra con la escala
white - All white color map. de colores.
flag - Alternating red, white, blue, and black color map. brighten ajusta el brillo
lines - Color map with the line colors.
Ramírez
de color del mapa de
colorcube - Enhanced color-cube color map. colores
vga - Windows colormap for 16 colors.
jet - Variant of HSV.
prism - Prism color map.
cool - Shades of cyan and magenta color map.
autumn - Shades of red and yellow color map.
spring - Shades of magenta and yellow color map.
winter - Shades of blue and green color map.
summer - Shades of green and yellow color map.
Ejemplo:
[x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
z=x.^2 + y.^2;
surf(x,y,z)
colormap(hsv)
Edwin Chávez
Edwin Chávez Ramírez
colormap(hot)
Ramírez
colormap(gray)
Ejemplo:
[x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
z=x.^2 - y.^2;
surf(x,y,z)
colorbar
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
brighten(0.8)
COORDENADAS CILÍNDRICAS
Graficar el paraboloide z= x2 + y2 en el dominio rectangular [ -5, 5 ]x[ -5, 5 ]
es una situación donde no están tan claras las propiedades geométricas del
paraboloide, en realidad en este caso es más recomendable graficar usando
un dominio circular que por ejemplo podría ser un circulo de radio 5 centrado
en el origen de coordenadas.
Edwin Chávez
Edwin
Surge la pregunta natural, ¿cómo hacemos un mallado en el dominio
circular?, el cual nos servirá para levantar el paraboloide. La respuesta es
Chávez Ramírez
sencilla:
Solo hay que usar el cambio de coordenadas cilíndricas a cartesianas.
Ramírez
COORDENADAS CILÍNDRICAS
EJEMPLO
Graficar el paraboloide z = x2 + y2 en el dominio circular de radio 5 y
centrado en el origen de coordenadas.
Solución:
>> [r,u]=meshgrid(0:0.25:5,0:pi/20:2*pi);
Edwin Chávez
Edwin
>> x=r.*cos(u);
>> y=r.*sin(u);
Chávez Ramírez
>> z=x.^2+y.^2;
>> surf(x,y,z)
Ramírez
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
COORDENADAS ESFÉRICAS
Ejemplo:
Edwin Chávez
Edwin
Solución:
Chávez Ramírez
>> [u,v]=meshgrid(pi/3:pi/20:7*pi/4,0:pi/20: pi/2);
>> x=5*sin(v).*cos(u);
Ramírez
>> y=5*sin(v).*sin(u);
>> z=5*cos(v);
>> mesh(x,y,z)
COORDENADAS PARAMÉTRICAS EN
SUPERFICIES
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
EJEMPLO:
Graficar la siguiente curva paramétrica
Edwin Chávez
Edwin
Solución:
Chávez Ramírez
t=0:pi/20:2*pi;
x=sin(t);
Ramírez
y=cos(t);
z=cos(t);
plot3(x,y,z)
grid
CILINDROS, ESFERAS Y ELIPSOIDES
[x,y,z]= cylinder(R,N)
retorna las coordenadas x, y, z necesarias para la generación de un cilindro con
altura 1, radio R y número de puntos en cada circunferencia de N (20 por
default).
cylinder(R,N)
Edwin Chávez
Edwin
idem pero traza solo la grafica.
[x,y,z]= sphere(N)
Chávez Ramírez
retorna las coordenadas x, y, z necesarias para la generación de una esfera con
radio 1. El número de ternas es (N+1)x(N+1) (N=20 por default).
Ramírez
sphere(N)
idem pero traza solo la grafica.
[x,y,z]= ellipsoid(xc,yc,zc,xr,yr,zr,N)
retorna las coordenadas x, y, z necesarias para la generación de una elipsoide
centrada en (xc,yc,zc) con semiejes xr,yr,zr. El número de ternas es
(N+1)x(N+1) (N=20 por default).
ellipsoid(xc,yc,zc,xr,yr,zr,N)
idem pero traza solo la grafica.
EJEMPLO:
>>[x,y,z]=cylinder;
>>mesh(x,y,z)
>>[x,y,z]=cylinder(2,10);
Edwin Chávez
Edwin
>>mesh(x,y,z)
Chávez Ramírez
>>sphere,
>> axis equal,
Ramírez
>> [x,y,z]=sphere(30);
>>mesh(x,y,z)
>>[x,y,z]=ellipsoid(0,0,0,5,10,20);
>>mesh(x,y,z)
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Grafique el Toroide
Ejercicio:
GRÁFICOS: 2D Y 3D______________________________
Manipulación de gráficos
Edwin Chávez
Edwin
rotate(h,d,a) o rotate(h,d,a,o) h es el objeto, d es un vector que indica la
dirección y a un ángulo, o el origen de rotación
Chávez Ramírez
En el dibujo de funciones tridimensionales, a veces también son útiles los
NaNs. Cuando una parte de los elementos de la matriz de valores Z son
Ramírez
NaNs, esa parte de la superficie no se dibuja, permitiendo ver el resto de la
superficie.
Edwin Chávez
Edwin
[x,y]=pol2cart(ang,rad) %De polares a cartesianas
[x,y,z]=pol2cart(ang,rad,z) %De cilindricas a cartesianas
Chávez Ramírez
[angx,angz,rad]=cart2sph(x,y,z) %De cartesianas a esfericas
Ramírez
Ejemplo:
%cilindricas
[ang,rad,z]=cart2pol(sqrt(3),1,2)
%esfericas
[ang1,ang2,rad1]=cart2sph(sqrt(3),1,2)
Imágenes
F = imread(filename) asigna el contenido del archive imagen a la variable
matricial F. Soporta los archivos *.jpeg, *.tiff, *.gif, *.png, *.hdf, *.ico, *.bmp, etc
image(F) visualiza la matriz C como una imagen en una ventana de figura.
Edwin Chávez
Edwin
>>F=imread(‘ant.png');image(F);
>>axis off %desactiva los ejes
Chávez Ramírez
Ramírez
>> info = imfinfo('ant.png')
Visualizar el tamaño de una imagen, info =
se usa la función size() scalar structure containing the fields:
Filename = C:\Users\Mat\Desktop\ant.png
>> [f,c,r]=size(F) FileModDate = 9-Jan-2019 11:02:04
FileSize = 17981
f = 299 Format = PNG
c = 280 FormatVersion =
Width = 280
r = 3 Height = 299
BitDepth = 8
Edwin Chávez
Edwin
ColorType = truecolor
DelayTime = 0
Informacion acerca de la imagen DisposalMethod =
LoopCount = 0
info = imfinfo('ant.png')
Chávez Ramírez
ByteOrder = undefined
Gamma = 0.45455
Chromaticities =
Comment =
Quality = 75
Ramírez
Compression = undefined
Colormap = [](0x0)
Orientation = 1
ResolutionUnit = Centimeter
XResolution = 59.060
YResolution = 59.060
Software = Microsoft Office
Make =
Model =
DateTime =
ImageDescription =
Artist =
Copyright =
DigitalCamera =
Edwin Chávez
Edwin
necesaria para reproducir la imagen que se acaba de representar en
la figura o ventana gráfica activa, por ejemplo con la función plot.
Chávez Ramírez
El tamaño de este vector columna depende del tamaño de la ventana,
Ramírez
pero no de la complejidad del dibujo.
La función moviein(n) reserva memoria para almacenar n frames.
Una vez creada la película se puede representar el número de veces
que se desee con el comando movie.
Ejemplo:
for j=1:10
x=0:0.01:2*pi;
plot(x,sin(j*x)/2)
M(j)=getframe;
end
Edwin Chávez
Edwin
movie(M,10)
Chávez Ramírez
Ramírez
En 3D
count=1;
[x y] = meshgrid([0 : 0.05 : pi], [0 : 0.05 : pi]);
for t=1:0.09:10,
u = 2*sin(6*x).*sin(6*t) + sin(3*x).*cos(3*t);
mesh(x,y,u);
Edwin Chávez
Edwin
Mv(:,count) = getframe;
count = count + 1;
Chávez Ramírez
end
movie(Mv,2)
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Ejercicio 1: Consideremos la ecuación de Van der Waals. Se considera el
benceno para el cual a=18.78 atml2/mol2, b=0.1208 l/mol. Representar sobre
una misma gráfica las dos subgráficas correspondientes a:
Isotermas de 100, 200, 300 y 400 ºC
Isobaras de 25, 35, 45 y 55 atm
Edwin Chávez
Edwin
Cada curva debe ir con trazo diferenciado, con el texto que indique la isolínea
que se ha representado, así como el título de la gráfica y la etiqueta de los
Chávez Ramírez
ejes. R=0.0821 y
V=[2:100];
Ramírez
a
(P 2 )(V b ) RT
V
GRÁFICOS: 2D Y 3D______________________________
Solución:
a=18.78; b=0.1208; R=0.0821;
subplot(1,2,1)
T=[373:100:673]; V=[2:100]; fac1=R./(V-b);
fac2=a./V.^2; P=zeros(4,length(V));
P(1,:)=T(1)*fac1-fac2;
Edwin Chávez
Edwin
P(2,:)=T(2)*fac1-fac2;
P(3,:)=T(3)*fac1-fac2;
Chávez Ramírez
P(4,:)=T(4)*fac1-fac2;
plot(V,P(1,:),'-',V,P(2,:),'--
Ramírez
',V,P(3,:),':',V,P(4,:),'-.')
Edwin Chávez
Edwin
T(1,:)=((P(1)+fac2).*fac1)-273.15;
T(2,:)=((P(2)+fac2).*fac1)-273.15;
T(3,:)=((P(3)+fac2).*fac1)-273.15;
Chávez Ramírez
T(4,:)=((P(4)+fac2).*fac1)-273.15;
Ramírez
plot(V,T(1,:),'-',V,T(2,:),'--
',V,T(3,:),':',V,T(4,:),'-.')
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Ejercicio 2
Edwin Chávez
Edwin
-La superficie definida por la función sobre el dominio [-10,10]*[-10,10].
Chávez Ramírez
-Las líneas de contorno sobre la superficie
Ramírez
-La proyección de las líneas de contorno sobre el plano xy
correspondientes a los valores –4,-1, 1 y 4.
GRÁFICOS: 2D Y 3D______________________________
Solución:
subplot(223)
x=[-10:0.5:10]; y=x; cs=contour(Z);
[X,Y]=meshgrid(x,y); contour(x,y,Z)
Z=X.*Y; grid off
Edwin Chávez
Edwin
subplot(221) clabel(cs)
mesh(X,Y,Z) xlabel('eje x')
legend('z=xy')
Chávez Ramírez
ylabel('eje y')
xlabel('eje x') title('Proyeccion de las lineas
ylabel('eje y') de contorno')
Ramírez
zlabel('eje z') subplot(224)
title('superficie z=xy') contour(Z,[-4,-1,1,4])
subplot(222) grid off
contour3(Z) xlabel('eje x')
grid off ylabel('eje y')
xlabel('eje x') title('Proyeccion de las lineas
ylabel('eje y') de contorno')
zlabel('eje z')
title('lineas de
contorno 3D')
GRÁFICOS: 2D Y 3D______________________________
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
GRÁFICOS: 2D Y 3D______________________________
Ejercicio 3 Representar la superficie de revolución obtenida al girar la
curva y=x2+1 alrededor del eje ox
x=[0:0.1:1];
Solución
Edwin Chávez
Edwin
x=[0:0.1:1]; %puntos de discretizacion del eje ox
rad=x.^2+1; %vector de radios
n=length(rad); %numero de radios
Chávez Ramírez
cylinder(rad,n) %representacion del cilindro
xlabel('eje x')
ylabel('eje y')
Ramírez
zlabel('eje z')
[X,Y,Z]=cylinder(rad,n);
h=surf(X,Y,Z); %calculo del objeto
rotate(h,[0,1,0],90)
%Al rotar desaparecen las etiquetas de los ejes
xlabel('eje x')
ylabel('eje y')
zlabel('eje z')
view(15,15) %cambiamos el punto de observacion
grid off
legend('f(x)=x^2+1')
Programación en MATLAB^
Edwin Chávez
Edwin
palabra function
Chávez Ramírez
Ficheros de programa no constituyen funciones y se construye mediante
una secuencia de comandos se ejecuta tecleando el nombre sin extensión y
se le conoce como script.
Ramírez
Ejemplo1: Ejemplo1.1
function temp_c=convert(temp_f); % ESTE ES UN SCRIPT
%CREAR UNA FUNCION % PASA DE GRADOS ºF A ºC
% PASA DE GRADOS ºF A ºC temp_f=68;
temp_c=5/9*temp_f-5/9*32; temp_c=5/9*temp_f-5/9*32;
end temp_c
SCRIPTS
Un script se define mediante un archivo- m, el cual esta formado por un
conjunto de sentencias pero no tiene la cualidad de ser una función como
y = sin(x) que posee argumentos de salida.
FUNCIONES
Una función se define mediante un archivo- m, cuyo nombre coincide con
Edwin Chávez
Edwin
disp(‘El algoritmo no ha convergido’)
Chávez Ramírez
menu: genera un menú que permite al usuario elegir entre distintas opciones
opcion=menu( ‘titulo del mensaje’,’opcion1’,...’opcionp’ )
Ramírez
error: informa de la existencia de un error y detiene la ejecución del
programa devolviendo el control al teclado
PROGRAMACIÓN________________________________
Programación de funciones
La primera línea es ejecutable y empieza por la palabra function de la forma
function arg_salida=nombre_funcion(arg_entrada)
Edwin Chávez
Edwin
tratase de un fichero programa
El fichero se debe guardar con nombre_funcion.m
Chávez Ramírez
Para devolver el control al programa desde cualquier punto de una función
basta con escribir la sentencia return
Ramírez
Ejemplo2:Construir una función que defina para un gas ideal la temperatura
dependiendo de la presión y el volumen
PROGRAMACIÓN________________________________
function t=gases(p,v,n)
%t=gases(p,v,n)
%funcion que considera la ley de los gases ideales
%Argumentos de entrada:
%presion p (atmosferas)
Edwin Chávez
Edwin
%volumen v (litros)
%número de moles n
Chávez Ramírez
%Argumentos de salida:
%temperatura t (grados kelvin)
%R=0.0821 atm.litro/mol.grado
Ramírez
R=0.0821
t=p*v/(n*R);
end
Edwin Chávez
Edwin
con datos existentes en el espacio de trabajo.
• Las variables de una función son locales de la función y las de un
script son globales.
Chávez Ramírez
• Si queremos que una variable “a” sea compartida por varias
funciones, a debe definirse en todas ellas como global.
Ramírez
global variable
echo escribe cada comando del fichero sobre la pantalla
pause detiene la ejecución hasta pulsar una tecla
keyboard idem y además permite al usuario intercalar comandos, la
ejecución retornará con return
PROGRAMACIÓN________________________________
Edwin Chávez
Edwin
nargout devuelve el número de argumentos de salida
con los que el usuario ha llamado a la función
Chávez Ramírez
nargchk chequea si el número de argumentos de entrada
calculados con nargin esta entre el valor máximo y
Ramírez
mínimo previsto, si no da error.
nargchk(mínimo,máximo,número_entrada)
PROGRAMACIÓN________________________________
Operadores relacionales y lógicos
Menor: <
Menor o igual:<=
Mayor: >
Mayor o igual: >=
Edwin Chávez
Edwin
Igual: ==
Distinto: ~=
Chávez Ramírez
O: |
Y: &
no: ~
Ramírez
El resultado de realizar operaciones relacionales o lógicas será un 1 si
es verdadera o un 0 si es falsa
PROGRAMACIÓN________________________________
Estructuras de control condicionadas
if
Edwin Chávez
Edwin
if if
elseif
if
else elseif
else
Chávez Ramírez
end
end end
end
Ramírez
Ejemplos
Diseñe un script que permita calcular una de las operaciones entre
suma, resta multiplicación y división de dos números
Edwin Chávez
Edwin
a=input('ingresa a: ');
a=input('ingresa b: ');
op=menu('Elegir','suma','resta','producto','divi
Chávez Ramírez
sion');
if op==1
fprintf('%f + %f =%f\n',a,b,a+b);
Ramírez
end
if op==2
fprintf('%f - %f =%f\n',a,b,a-b);
end
if op==3
fprintf('%f * %f =%f\n',a,b,a*b);
end
if op==4
fprintf('%f / %f =%f\n',a,b,a/b);
end
Ejemplo
Determinar si una persona es adulta o menor de edad
inicio
escribir “Ingrese edad”
leer edad
si edad>=18 entonces
Edwin Chávez
Edwin
escribir “La persona es adulta”
si_no
escribir “La persona es menor de edad”
Chávez Ramírez
fin_si
fin
Ramírez
% Identifica si es mayor de edad o menor de edad
a=input('ingresa la edad: ');
if a>=18
disp(‘La persona es mayor de edad’);
else
disp(‘La persona es menor de edad’);
end
Ejemplos
Diseñe una función que permita verificar si los valores ingresados
forman o no un triángulo rectángulo, además verificar el número y
coherencia de los argumentos
function r=triangulo(a,b,c);
Edwin Chávez
Edwin
if nargin ~= 3
error('Número de argumentos incorrecto, debe ser 3 datos');
end
Chávez Ramírez
if ~isempty(find([a b c]<0))
error('Valores inconsistentes de algún lado');
Ramírez
end
if (a^2==b^2+c^2)
disp('Es un triangulo rectangulo');
elseif (b^2==a^2+c^2)
disp('Es un triangulo rectangulo');
elseif (c^2==a^2+b^2)
disp('Es un triangulo rectangulo');
else
disp('No es un triangulo rectangulo');
end
end
PROGRAMACIÓN________________________________
Edwin Chávez
Edwin
comandos_0 que deben ejecutarse
case expresion_1
comandos_1 que deben ejecutarse
Chávez Ramírez
case expresion_2
comandos_2 que deben ejecutarse
Ramírez
otherwise
comandos escoba que deben ejecutarse
end
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Edwin Chávez
Edwin Chávez Ramírez
Ramírez
Al ejecutarlo tenemos:
>> [cond,tipo]=reporte(14)
cond =
Aprobado NOTA
tipo = Una variante donde es posible entrar
Bueno notas decimales y que el programa lo
redondee y por ejemplo si Ud.
Edwin Chávez
Edwin
Introduce 10.5 daría de resultado
>> [cond,tipo]=reporte(7)
Aprobado – Regular, diseñe la
cond =
Chávez Ramírez
variante, como un ejercicio.
Desaprobado
tipo =
Malo
Ramírez
>> [cond,tipo]=reporte(10.7)
??? Error using ==> reporte
Incorrecto, debe ser un numero entero
>> [cond,tipo]=reporte(24)
??? Error using ==> reporte
Nota incorrecta, debe ser de 0 .. 20
Ejercicio
Desarrollar un script que solicite un valor del día entre 1 y 7 y se muestre el
nombre del día, tenemos el siguiente algoritmo:
inicio
Edwin Chávez
Edwin
escribir “Ingrese un valor entre 1 y 7”
leer día
Chávez Ramírez
según_sea día hacer
caso 1: escribir “Lunes”
caso 2: escribir “Martes”
Ramírez
caso 3: escribir “Miércoles”
caso 4: escribir “Jueves”
caso 5: escribir “Viernes”
caso 6: escribir “Sábado”
caso 7: escribir “Domingo”
en_otro_caso: escribir “Error”
fin_según
fin