A Practica 1 2020 21
A Practica 1 2020 21
A Practica 1 2020 21
Índice
1. Matrices 1
2. Funciones 4
3. Derivadas 5
1. Matrices
Las matrices se crean escribiendo sus posiciones entre corchetes. La separación entre columnas es una coma
o un espacio en blanco. La separación entre filas es un punto y coma. Por ejemplo:
Ventana de comandos
editor A =
A = [1 2 3 ; 4 5 6] 1 2 3
4 5 6
Para recuperar el valor de una posición concreta de una matriz se deben escribir entre paréntesis los números
de fila y columna. Por ejemplo:
Ventana de comandos
A =
editor
1 2 3
A = [1 2 3 ; 4 5 6]
4 5 6
A(2,3)
>> A(2,3)
ans = 6
También es posible elegir una lı́nea (fila o columna). Para ello el código es A([NF],:), siendo NF el número
de la fila elegida. Si ahora queremos elegir una columna, el código será A(:,[NC]), siendo NC el número de
la columna elegida.
Ventana de comandos
>> A=[5 -3 2 ; 0 0 0 ; 1 -1 3 ; 4 -2 -1];
>> A([3],:);
>> A(:,[2]);
editor
ans =
A=[5 -3 2 ; 0 0 0 ; 1 -1 3 ; 4 -2 -1];
1 -1 3
A([3],:);
ans =
A(:,[2]);
-3
0
-1
-2
Además, se puede generar una matriz a partir de otras dos. Lo que se hace es añadir la primera, a las
posiciones de la segunda. Si queremos añadir filas, las matrices deben tener el mismo número de columnas,
y si queremos añadir columnas, las matrices deber tener el mismo número de filas. Por ejemplo:
1
Álgebra. E.U.P.Ferrol Práctica 1. Matrices, funciones y derivadas
Ventana de comandos
A =
1 2 3
editor 4 5 6
A=[1 2 3 ; 4 5 6] B =
B=[7 8 ; 9 10] 7 8
C=[A B] 9 10
C =
1 2 3 7 8
4 5 6 9 10
Ventana de comandos
D =
1 2 3
editor 4 5 6
D=[1 2 3 ; 4 5 6] E =
E=[7 8 9] 7 8 9
F=[D;E] F =
1 2 3
4 5 6
7 8 9
Es posible generar un vector indicando solo la primera componente, el máximo valor de la última y el paso
que permite avanzar de una componente a otra. La sintaxis para hacerlo es X=a:p:b, siendo X el nombre del
vector, a el valor de la primera componente, p la diferencia entre una componente y la anterior, y b el valor
máximo de la última componente.
Ventana de comandos
>> X=1:0.5:3
editor X =
X=1:0.5:3 1.0000 1.5000 2.0000 2.5000 3.0000
Y=1:0.6:3 >> Y=1:0.6:3
Y =
1.0000 1.6000 2.2000 2.8000
Como podemos observar en el vector X la última componente coincide con valor máximo permitido, mientras
que eso no sucede en Y.
Ventana de comandos
>> A = [1 2 3 ; 4 5 6];
editor
>> 2*A
A = [1 2 3 ; 4 5 6];
ans =
2*A
2 4 6
8 10 12
• Para sumar dos matrices, estas deben tener el mismo orden. La operación se realiza en cada posición de la
matriz.
Ventana de comandos
>> A = [1 -3 0 ; 6 1 -2];
editor
>> B = [4 3 2 ; -5 0 4];
A = [1 -3 0 ; 6 1 -2] ;
>> A+B
B = [4 3 2 ; -5 0 4];
ans =
A+B
5 0 2
1 1 2
• Existen dos maneras de multiplicar matrices. La más utilizada es el operador * y la otra es la función mtimes.
Recordemos que para obtener el producto A × B se necesita que el número de columnas de A coincida con
el de filas de B.
Ventana de comandos
>> A = [1 -3 0 ; 6 1 -2];
editor
>> B = [4 3; 2 -5; 0 4];
A = [1 -3 0 ; 6 1 -2];
>> A*B
B = [4 3 ; 2 -5 ; 0 4];
ans =
A*B
-2 18
26 5
Algunas funciones predefinidas en OCTAVE o las que definamos posteriormente pueden actuar sobre matrices.
El sentido de esta actuación se verá, por ejemplo, en las representaciones gráficas. Por defecto, si una función
actúa sobre una matriz, lo hará individualmente sobre cada componente.
Ventana de comandos
>> A=[1 2 3; 4 5 6];
editor
>> exp(A)
A=[1 2 3; 4 5 6]
ans =
exp(A)
2.7183 7.3891 20.0855
54.5982 148.4132 403.4288
Sin embargo, surge el problema de que alguna función puede interferir con las operaciones habituales de
matrices. En este caso, el operador debe estar precedido de un punto para que su actuación se realice en
cada componente. Por ejemplo, si pretendemos calcular los cuadrados de las posiciones de un vector, OCTAVE
interpretará el operador ∧ como el cálculo del producto de la matriz por sı́ misma. Si la matriz no es cuadrada
comunica el error.
Ventana de comandos
editor >> A=[1 2 3; 4 5 6];
A=[1 2 3; 4 5 6]; >> A∧ 2
A∧ 2 error: for A∧ b, A must be a square matrix.
Use .∧ for elementwise power.
Ventana de comandos
>> A=[1 2 3; 4 5 6];
editor
>> A.∧ 2
A=[1 2 3; 4 5 6];
ans =
A.∧ 2
1 4 9
16 25 36
2. Funciones
Existen funciones ya definidas en OCTAVE. En concreto, para un número z ∈ C se definen:
Función Descrición
abs(z) módulo
log(z) logaritmo neperiano
exp(z) exponencial
sqrt(z) raı́z cuadrada
sin(z) seno
cos(z) coseno
tan(z) tangente
En el caso en que z ∈ R la función abs coincide con el valor absoluto y las funciones log, exp, sin, cos, tan
son las habituales en números reales.
Existen varias formas de definir funciones matemáticas. La primera de ellas, que llamaremos definición en
lı́nea, utiliza el comando @( ). Se debe especificar entre paréntesis las variables usadas y, a continuación, la
ecuación de las imágenes. Una vez definida, se puede evaluar en cualquier punto. Por ejemplo, si quisiéramos
definir la función f (x) = x2 y evaluarla en x = 3 tendrı́amos que escribir:
Ventana de comandos
>> f =@(x) x∧ 2
editor
f =
f =@(x) x∧ 2
@(x) x∧ 2
f(3)
>> f(3)
ans = 9
Para definir una función escalar, por ejemplo f (x, y) = x2 + 2y, y evaluarla en el punto (2, 3) seguimos las
mismas pautas.
Ventana de comandos
>> f =@(x,y) x∧ 2+2*y
editor
f =
f =@(x,y) x∧ 2+2*y
@(x, y) x∧ 2 + 2 * y
f(2,3)
>> f(2,3)
ans = 10
Para definir simbólicamente una función matemática se debe cargar el paquete symbolic y definir las variables
simbólicas con las que vamos a trabajar.
pkg load symbolic
syms x y z
A continuación, se define la función con la sintaxis funcion = expresion. Por ejemplo, si quisiéramos definir
las funciones f (x) = x2 y g(x, y) = ex+2y tan solo tendrı́amos que escribir:
Ventana de comandos
>> f = x∧ 2
editor f = (sym)
2
f = x∧ 2 x
g = exp(x+2*y) >> g = exp(x+2*y)
g = (sym)
x+2*y
e
Ventana de comandos
>> subs(f,2)
editor ans = (sym) 4
subs(f,2) >> subs(g,{x,y},{3,5}
subs(g,{x,y},{3,5}) ans = (sym)
13
e
Las funciones vectoriales se definen en forma simbólica mediante una matriz. Por ejemplo, para definir la
→ →
función f : R2 → R3 , f (x, y) = (x2 y, sen(xy), 2x + 3y), debemos escribir el comando:
3. Derivadas
Para calcular la derivada (ordinaria o parcial) de una función real debemos emplear el comando diff. En su
sintaxis (que es diferente si la función está definida de forma simbólica o en lı́nea), se deben indicar la función
que se deriva, la variable respecto de la que se deriva y el orden de la derivada. Además, deben estar definidas
como variables simbólicas aquellas respecto de las que se deriva, aunque la función se defina en lı́nea. En el
siguiente ejemplo se calculan las dos primeras derivadas de la función exp(x2 ). La salida del comando diff
es una función simbólica, independientemente de la forma en que se definió la función.
Ventana de comandos
f=@(x) exp(x∧ 2);
>> derf1=diff(f(x),x,1)
derf1 = (sym)
editor / 2\
f=@(x) exp(x∧ 2); \x /
derf1=diff(f(x),x,1) 2*x*e
derf2=diff(f(x),x,2) >> derf2=diff(f(x),x,2)
derf2 = (sym)
/ 2\
/ 2 \ \x /
2*\2*x + 1/*e
Ventana de comandos
f=exp(x∧ 2);
>> derf1=diff(f,x,1)
derf1 = (sym)
editor / 2\
f=exp(x 2);∧ \x /
derf1=diff(f,x,1) 2*x*e
derf2=diff(f,x,2) >> derf2=diff(f,x,2)
derf2 = (sym)
/ 2\
/ 2 \ \x /
2*\2*x + 1/*e
Si la función es escalar también se usa el comando diff. Se debe indicar la función que se deriva, la variable
respecto de la que se deriva y el orden de la derivada. Por ejemplo:
Ventana de comandos
>> syms x y
f=@(x,y) x∧ 2-3*x+2*y∧ 2*x∧ 3
f =
@(x,y) x ∧ 2 - 3 * x + 2 * y ∧
2 * x ∧
3
>> derf x1=diff(f(x,y),x,1)
editor derf x1 = (sym)
2 2
syms x y 6*x *y + 2*x - 3
f=@(x,y) x∧ 2-3*x+2*y∧ 2*x∧ 3; >> derf x2=diff(f(x,y),x,2)
derf x1=diff(f(x,y),x,1) derf x2 = (sym)
derf x2=diff(f(x,y),x,2) / 2 \
derf y1=diff(f(x,y),y,1) 2*\6*x*y + 1 /
derf x1 y1=diff(f(x,y),x,1,y,1) >> derf y1=diff(f(x,y),y,1)
derf y1 = (sym)
4*x3*y
>> derf x1y1=diff(f(x,y),x,1,y,1)
derf x1y1 = (sym)
12*x2*y
El orden de la derivada coincide con la suma de los órdenes de cada variable. Ası́, diff(f(x,y),x,1,y,1) es
una derivada de segundo orden.
La forma en la que actúa el comando diff sobre una matriz cuyas posiciones estén ocupadas por funciones
consiste en derivar independientemente cada posición de la matriz.
!
sen(x) x2 3x
Por ejemplo, dada la matriz A = la forma de calcular las derivadas de las componentes
cos(x) ex 2
es:
Ventana de comandos
>> A=[sin(x) x∧ 2 3*x ; cos(x) exp(x) 2];
>> diff(A)
editor
∧
ans = (sym 2x3 matrix)
A=[sin(x) x 2 3*x ; cos(x) exp(x) 2];
[cos(x) 2*x 3]
diff(A)
[ ]
[ x ]
[-sin(x) e 0]
x
Ejercicio 2 Calcular el vector gradiente de la función f (x, y, z) = x2 yz + y + z 2 en el punto (2, 1, 3).
xz
Ejercicio 3 Definir, en forma simbólica, la función f (x, y, z) = x3 ez + y . Calcular sus derivadas parciales de
primer y segundo orden y evaluarlas en el punto (1, 2, 3).
→
Ejercicio 4 Calcular el vector tangente a la curva σ (t) = (t2 , 3t − 1, et ) en t = 1.