Está en la página 1de 14

MATLAB

Matlab es un Software comercial con aplicaciones en el cálculo científico.


EDU>>
>>
El “prompt” anterior significa que el programa Matlab está listo para recibir las órdenes de
ejecución del usuario. Comenzamos con la orden demo:
>> demo

AYUDA

>> help
>> lookfor
Ayuda conducida por menús seleccionando en el menú Help.

OPERACIONES ARITMÉTICAS BÁSICAS

Las operaciones usuales se realizan con los mismos símbolos y en la misma secuencia que
en las calculadoras.

a+b Suma
a-b Resta
a*b Multiplicación
a/b=b\a División
a^b Potencia

VARIABLES

· Matlab no requiere ningún tipo de comando para definir variables. Crea la variable
mediante asignación directa de su valor.

· Las variables son sensibles a las letras mayúsculas.

· Las variables pueden contener hasta 31 caracteres.

· Las variables deben comenzar con una letra, seguida por cualquier número de letras,
dígitos o guiones de subrayado. No se permiten espacios en blanco.

· Por defecto, Matlab almacena resultados en la variable ans

1
· En el espacio de trabajo de Matlab se pueden borrar las variables utilizando la orden
clear, seguida del nombre de la variable.
>> clear

· Preguntamos por una variable poniendo el nombre de la variable en la línea de


comandos.

· Preguntamos por las variables con las órdenes:

>> who
>> whos

OTRAS CARACTERÍSTICAS

. El signo “ ; ” (punto y coma) al final de una instrucción hace que el programa


ejecute dicha instrucción sin mostrar el resultado.

. Para introducir comentarios los iniciamos con el signo “%” (tanto por ciento).

. Se pueden realizar varias entradas en la misma línea separándolas por comas. Si la


entrada no cabe en una línea se ponen tres puntos suspensivos al final de la línea y se
continua en la siguiente.

. Utilizando las teclas de edición.


Las teclas de flechas permiten modificar los datos introducidos:
↑ Recupera la línea previa.
↓ Recupera la línea siguiente.
←Mueve el cursor hacia la izquierda un carácter.
→ Mueve el cursor hacia la derecha un carácter.

Si escribimos una secuencia de caracteres determinada y pulsamos la tecla ↑ recuperamos


la última entrada que comienza con dicha secuencia de caracteres.

. Resultan útiles las teclas Inicio y Fin que colocan al cursor respectivamente al comienzo y
al final de línea.

. La orden save nombredesesión, guarda el espacio de trabajo en el disco, en un formato


binario especial de matlab, con la extensión .mat. Una sesión guardada de esta forma, se
puede cargar en el espacio de trabajo mediante la orden load seguida del nombre del
correspondiente fichero.

. La orden clc borra la ventana de comandos.

2
. Con exit o quit finalizamos la sesión de matlab.

Ejercicios.

1. Realiza los siguientes cálculos:

23 - 4 +(6/3).2 , 23- 4+6/(3.2), 2.32 + 6, (2.3)2 + 6

2. Determina la superficie comprendida entre un cuadrado de lado la=2 y la circunferencia


inscrita:

EDU» la=2;
EDU» area1=la*la; % calculamos la superficie del cuadrado.
EDU» area2=pi*(la/2)^2; % calculamos la superficie del círculo.
EDU» area=area1-area2 % superficie que nos piden

area =

0.8584

3. Practica las órdenes que estudiamos hasta ahora.

3
CÁLCULO NUMÉRICO Y SIMBÓLICO

Formatos numéricos:

>> format short % formato por defecto que utiliza matlab. presentación con 5 dígitos(4
decimales).
>> format long %presentación con 15 dígitos
(14 decimales).
>> format rat % presentación racional.

Utiliza el help para obtener información sobre la orden format.

Objetos simbólicos.
>> syms x % declaramos x como objeto simbólico.
La x puede ser una constante, una variable o una expresión en la que intervengan
constantes, variables, operadores aritméticosy funciones predefinidas.
>> syms a b c % declara a,b,c como variables simbólicas.

Un objeto numérico m se puede convertir en simbólico escribiendo:


>> M=sym(m)
Otros comandos:
>> syms x
>> expand ( (1+x)* (3-x)) % desarolla la expresión en suma de momomios.
ans=
3+2*x-x^2
Podemos expresar el resultado anterior con la notación habitual utilizando la orden pretty.
>> pretty(expand( (1+x)*(3-x)))
ans=
3+2x-x2
>> solve ('-x^2-2*x+3=0','x') % resuelve la ecuación.
ans=
[-3]
[1]
>> simplify ( f ) % simplifica la expresión simbólica f.
>> simple ( f ) % busca la forma más simple de la expresión simbólica f.
>> [r,a] = simple(f ) % guarda en r la expresión simplificada y en a describe el método de
simplificación utilizado.
>> subs(f,a) % aplica f en a.
>> subs(f,x,s) % substituye en f la variable x por la s.
>>factor( f ) % factoriza la expresión simbólica f. Si f esun número entero lo descompone
en factores primos.

4
ALGUNAS FUNCIONES MATEMÁTICAS
(Help Elfun)

La librería Matlab dispone de una gama muy completa de funciones predefinidas que se
corresponden con las funciones matemáticas más utilizadas. Algunos ejemplos son:
. abs(x): valor absoluto de x

. sin(x): seno de x

. cos(x): coseno de x

. tan(x): tangente de x

. asin(x): arcoseno de x

. acos(x): arcocoseno dex

. atan(x): arcotangente de x

. exp(x): exponencial de x

. log(x): logaritmo en base e de x

. sqrt(x): raíz cuadrada de x

El argumento debe de expresarse en radianes.


Las funciones elementales admiten argumento matricial.

MATRICES

(Help Elmat y Matfun)


Los elementos de la matriz se introducen por filas, separando cada fila de la siguiente por
medio de punto y coma. Los elementos van entre corchetes y los distintos elementos de una
misma fila se separan por espacios blancos o comas.

>> A = [1 2 3 ; 4 5 6 ; 7 8 9 ];
Repetir la orden anterior suprimiendo el punto y coma final.

>> A(i,j) % devuelve el elemento que ocupa la fila i y la columna j


>> A(3,3) = 0 % Sustituimos el elemento (3,3) en la matriz A.

Podemos obtener submatrices de la matriz A con las órdenes:

5
B = A (:, j) % Devuelve la columna j de la matriz A.

B = A(i, :) % Devuelve la fila i de la matriz A.

B = A(:) Ejecuta la orden y observa el resultado.

Otras formas de introducir matrices fila:

>> a = m:h:n % define un vector fila cuyo primer elemento es m y los demás elementos
aumentan de h en h sin superar n.
>> a = 1 : 4
a=
1 2 3 4

>> a = 1: .1:3 % ejecuta esta orden y observa el resultado.

>> a(i) % devuelve el elemento que ocupa la posición i.

>> a(i:j) % devuelve los elementos situados entre las posiciones i y j.

>> S = size(a) % nos da la dimensión de a. Consultar la ayuda.


S=
1 21

>> b = linspace(m,n,h) % define un vector fila de h componentes, cuyo primer elemento es


m y cuyo último elemento es n.

>> b= linspace(0,pi,11) % ejecuta la orden y observa el resultado

>> ones(m,n) % consultar la ayuda


>> ones(n)
>> zeros(m,n)
>> zeros(n)
>> eye(m,n)
>> eye(n)

Pueden definirse matrices por bloques de la siguiente forma:

Dadas dos matrices A y B con el mismo número de filas, se puede definir una matriz C
formada por todas las columnas de A y B con la orden:

>> C = [A B]
Análogamente , se puede definir una matriz a partir de otras dos con el mismo número de
columnas:

6
>> C = [A;B]

Estas dos posibilidades pueden combinarse para formar matrices definidas por bloques:
>> A=[eye(3) ones(3,3);1:6;zeros(2) ones(2,1) eye(2,3)]

Para vectores con muchos elementos, el procedimiento puede ser la lectura de un fichero
externo o la generacion de ficheros desde Matlab. Se puede generar un fichero de texto
escribiendo los elementos de la matriz, con retorno de carro despues de cada fila, por
ejemplo con el bloc de notas, lo que permite escribir matrices grandes, con posibilidad de
corregir facilmente errores. Se guarda en el disco con una extensión (txt por defecto) que
no sea .mat. Si, por ejemplo, guardamos los datos con el nombre matriz.txt, posteriormente
se puede cargar la matriz en el espacio de trabajo por medio de la orden
>> load matriz.txt

y queda almacenada en dicho espacio con el nombre matriz.

Matrices Simbólicas.

Las matrices simbólicas se introducen de dos formas:

1) Igual que las numéricas, declarando previamente las variables como simbólicas:

Ejemplo

>> syms a b c d
>>A=[a b ; c d]
A=
[ a, b]
[ c, d]

2) En una única entrada, mediante el uso de la comilla simple:


H=sym('[a b;c d]')

Observa la manera la forma en la que matlab nos devuelve las matrices simbólicas.

7
OPERACIONES ELEMENTO A ELEMENTO.

Los arrays son matrices filay como tales se introducen en Matlab.

Sean a = [a1 a2 ... an], b = [b1 b2... bn] y c un escalar

Suma escalar a+c = [a1+c a2+c... an+c]

Multiplicación escalar a*c = [a1*c a2*c... an*c]

Suma de arrays a+b = [a1+ b1 a2+ b2... an+ bn]

Multiplicación de arrays a.*b = [a1* b1 a2* b2... an* bn]

División a dcha. de arrays a./b = [a1/ b1 a2/ b2... an/ bn]

División a izqda. de arrays a.\b = [a1\ b1 a2\ b2... an\ bn]

Potencia de arrays a.^c = [a1^c a2^c... an^c]


c.^a = [c^ a1 c^ a2...c^ an]
a.^b = [a1^ b1 a2^ b2... an^ bn]

8
FUNCIONES EN FICHEROS-M

Para crear un fichero-M escoger New del menú File y seleccionar M-file. Este
procedimiento devuelve una ventana para la edición de texto donde se introducen las
órdenes de Matlab.

Ejemplo:

function res = grafica(x)


% representamos la función seno.
res = plot (x,sin(x))
Se guarda el fichero como grafica .m

Desde la línea de comandos:


>> x=linspace(0,2*pi,30);

Matlab ejecutará las órdenes de grafica .m escribiendo grafica(x) en la línea de comandos:


>> grafica(x)

· Son ficheros creados con un editor de texto.

· Al solicitar help grafica aparecen las líneas de comentario.

· Tengo que trabajar en el directorio donde guarde el fichero.

ÓRDENES DE GESTIÓN DE FICHEROS

>> what % devuelve un listado de todos los ficheros –M en el directorio actual.

>> dir % lista todos los ficheros en el directorio actual.

>> cd % muestra el directorio de trabajo.

>> cd a: % cambia al directorio a.

>> cd .. % vamos al directorio raíz (paso a paso).

>> pwd % igual que cd.

>> which grafica % visualiza el camino del directorio de grafica.m

>> type grafica % visualiza el fichero grafica.m.

>> delete grafica.m % suprime el fichero grafica.m.

9
MATRICES

Si A y B son matrices con las dimensiones adecuadas y α un escalar, las operaciones


habituales se efectuan con las siguientes órdenes:

A+B suma de las matrices A y B.

A-B diferencia de las matrices A y B.

A*B multiplica la matriz A por la B.

α*A multiplica el escalar α por la matriz A.

A^p matriz elevada al entero p.

transpose(A) calcula la traspuesta de la matriz A.

A’ calcula la conjugada traspuesta de la matriz A.

det(A) devuelve el determinante de la matriz cuadrada A.

inv(A) encuentra la inversa de la matriz cuadrada A.

rank(A) devuelve el rango de la matriz A.

trace(A) devuelve la traza de la matriz A.

rref (A) devuelve la forma reducida escalonada por filas, utilizando el método de Gauss-
Jordan.

10
SISTEMAS DE ECUACIONES LINEALES

Ejemplo
x-y+z = 2
3x+2y-2z = 1
-x+3y-z=2

Discutimos el sistema antes de intentar resolverlo estudiando los rangos de la matriz del
sistema y de la matriz ampliada.

>> A=[1 -1 1; 3 2 -2; -1 3 -1];


>> b=[2; 1; 2];
>> B=[A b];
>> [rank(A) rank(B)]
>> ans=
3 3
Puesto que los rangos son iguales e iguales a 3, el sistema tiene solución única.
Para resolverlo utilizaremos la orden solve:
>> syms x y z % declaramos las variables x,y,z como simbólicas.
>> S = solve('ec1', 'ec2',...,'ecn', 'x1,x2,...,xn' ). %Si las ecuaciones ec1,...,ecn están
igualadas a cero, podemos prescindir de entrecomillarlas.
>> S= solve(‘x-y+z=2’, ‘3*x+2*y-2*z= 1’, ‘-x+3*y-z= 2’, ‘x,y,z’)
S=
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]

>> S.x,S.y,S.z % nos devuelve los valores de x,y,z.


ans=
1
ans=
2
ans=
3

Resolveremos los sistemas siguientes haciendo uso de la orden rref. Consideraremos dicha
orden para obtener un sistema equivalente al dado, que tendrá el mismo carácter, y en caso
de ser compatible, la misma solución general.

11
Ejercicio 1

x–y–z=0
5x + 7y = 24
5x + 3z = 12
-7y +3z = -12

EDU» A=[1 -1 -1; 5 7 0; 5 0 3; 0 -7 3];


EDU» b=[0; 24; 12; -12];
EDU» rref([A b])

ans =

1 0 0 156/71
0 1 0 132/71
0 0 1 24/71
0 0 0 0

La solución es:

x = 156/71
y = 132/71
z = 24/71

Ejercicio 2

5x + 2y + 4z + 31t = -2
2x + y + z + 13t = 0
-x + y – 5z – 2t = 6
4x + 8z + 20t = -8

EDU» A=[5 2 4 31; 2 1 1 13; -1 1 -5 -2; 4 0 8 20];


EDU» b=[-2; 0; 6;-8];
EDU» rref([A b])

ans =

1 0 2 5 -2
0 1 -3 3 4
0 0 0 0 0
0 0 0 0 0

12
El sistema equivalente

x + 2z + 5t = -2
y - 3z +3t = 4

se resuelve con la orden solve. Ejercicio.

Ejercicio 3

3x + 2y – z = 1
x – y + 3z = 2
2x + 3y - 4z = 3

EDU» A=[3 2 -1; 1 -1 3; 2 3 -4];


EDU» b=[1;2;3];
EDU» rref([A b])

ans =

1 0 1 0
0 1 -2 0
0 0 0 1

El sistema no tiene solución. Razonar la respuesta

13
OTRAS ÓRDENES

>> dot (a,b) calcula el producto escalar usual de las vectores a y b.

>> cross (a,b) calcula el producto vectorial de a por b.

>> norm(a) calcula la norma euclídea usual del vector a.

>> orth(A) calcula una base ortonormada, respecto del producto escalar usual, del
subespacio que generan las columnas de la matriz A.

>> [P,D] = eig(A) siendo A una matriz cuadrada, real y simétrica, calcula dos matrices
reales, P ortogonal (Pt = P-1 ) y D diagonal tales que Pt *A *P = D.

>> [P,D] = schur(A) siendo A una matriz cuadrada, real y simétrica, calcula dos matrices
reales, P ortogonal (Pt = P-1 ) y D diagonal tales que Pt *A *P = D.

14

También podría gustarte