Tutorial (Algoritmos)
Tutorial (Algoritmos)
Tutorial (Algoritmos)
Área de Ingenierías
MÉTODOS NUMÉRICOS
Trabajo de Matlab
Lima - Perú
Enero 2020
Introducción
¿Qué es Matlab?
MATLAB (abreviatura de MATrix LABoratory, «laboratorio de matrices») es un sistema
lenguaje de programación propio (lenguaje M). Está disponible para las plataformas
MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes
de bloques (blocksets).
En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en
window. Aquí es donde podemos usar Matlab de forma interactiva. Las otras secciones
donde podemos visualizar las variables que han sido creadas, y el command history, que
tienen la extensión .m) se escriben los programas donde se usa el lenguaje Matlab. Otras
opciones que encontramos son la de iniciar Simulink y GUIDE, una IDE que facilita la
variable =
Ejemplo 1:
Ejemplo 2:
En los ejemplos anteriores no hay diferencia entre el uso de disp y fprintf, sin embargo,
si por ejemplo queremos mostrar el número pi, podemos usar las características de fprintf.
Ejemplo 3:
Utilizando disp
>> disp(pi)
3.1416
Ejemplo 4:
El símbolo % es una marca de formato, la letra «f» nos indica que el número a representar
es flotante (decimal), y los números nos indican la cantidad de espacios que «guarda»
para el número, y las cifras decimales a mostrar, respectivamente.
En la primera línea, no se indicó estos números, por lo que se considera la configuración
por defecto, que es mostrar 6 decimales, y guarda la cantidad de espacios justa para el
valor.
Los caracteres \n indican salto de línea. También se encuentra \t, que es un marcador de
tabulación.
En este ejemplo se guardaron 10 espacios, de los cuales 3 son para los decimales.
Operadores escalares
Aquí podemos nombrar:
+ (adición o suma)
- (resta)
* (multiplicación)
/ (división)
>> 3+18
ans =
21
Los operadores de multiplicación y división tienen preferencia a los de suma y resta, por
lo que éstos se resuelven primero.
>> 3 + 18 * 5
ans =
93
>> (3 + 18) * 5
ans =
105
>> 3 + (18 * 5)
ans =
93
Operaciones matriciales
Cabe aclarar que como su nombre lo indica Matlab (Laboratorio de Matrices) trata a todas
las variables como si fueran una matriz. Por ejemplo, si es A=1, genera una matriz de
1x1.
A =
1 -2 3
4 1 -1
2 -1 3
>> B
B =
11
4
10
Nota: Se usa "[" para empezar a declarar la matriz; se cierra con "]". Para pasar a la
segunda fila agrego un ";" y cada componente está separado por un "espacio". Recuerde
que si no quiere ver la salida del comando ingrese ";" al final.
Suma de matrices
Suponga que quiero hacer la siguiente operación entra las matrices a y b. Cabe aclarar
que las matrices tienen que ser de las mismas dimensiones, para este ejemplo se definieron
dos matrices de 2x2.
Código en Matlab:
ans =
4.0000 1.5000
1.5000 6.0000
Multiplicación de matrices
Para multiplicar dos matrices (axb), "a" tiene que tener la misma cantidad columnas que
la cantidad de filas que b. El resultado de la multiplicación será entonces igual a la
cantidad de filas de "a" y tendrá tantas columnas como "b". Dada una matriz A de 3
filas x 3 columnas(3x3) y una matriz B de 3x2; podemos verificar que el producto es
posible y el resultado de la multiplicación será de una matriz de 3x2.
Ejemplo en Matlab:
ans =
0.8000 3.6000
16.0000 99.0000
9.0000 20.0000
Código en Matlab:
ans =
Cálculo de la determinante
Dada una matriz A, se desea calcular el determinante de dicha matriz.
Código en Matlab:
ans =
Matriz Transpuesta
Para calcular la traspuesta de una matriz en Matlab, utilizo el carácter especial. ‘
Ejemplo en Matlab:
>> A = [2 .5;1 3]
A =
2.0000 0.5000
1.0000 3.0000
ans =
10
>> A(1,:)
ans =
1 10
>> size(A)
ans =
2 2
ans =
2
CONDICIONALES
Selector «if»
Es habitual en la programación, que, según cierto valor de una variable, se requieran
distintas acciones. La forma más simple es cuando si cierta variable cumple la condición
señalada, se requiere ejecutar alguna acción.
if (numero>10)
fprintf ('El número es mayor que 10.\n')
end
Esta es la forma más simple de la bifurcación. Pero si se quiere ejecutar otra sentencia si
no cumple con la condición señalada, se usa la sentencia else
if (numero>10)
fprintf ('El número es mayor que 10.\n')
else
fprintf ('El número es menor o igual que 10.\n')
end
if (numero>10)
fprintf ('El número es mayor que 10.\n')
elseif (numero>5)
fprintf ('El número es mayor que 5 y menor que 10.\n')
else
fprintf ('El número es menor o igual que 5.\n')
end
Selector «switch»
La sentencia switch verifica la expresión, y ejecuta las acciones ubicadas en
el case cuyo valor sea el mismo. Si el resultado no concuerda con ningún case , ejecuta
switch (expresion)
case resultado1
acciones 1
case resultado2
acciones 2
...
otherwise
acciones por defecto
end
BUCLES
Bucle «for»
La sentencia for repite un conjunto de sentencias un número predeterminado de veces.
for i=1:n
sentencias
end
o bien,
for i = vectorValores
sentencias
end
donde vectorValores es un vector con los distintos valores que tomará la variable i. En el
siguiente ejemplo se presenta el caso más general para la variable del bucle (valor_inicial:
incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va
reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se
termina:
for i = n:-0.2:1
sentencias
end
for i = 1:m
for j = 1:n
sentencias
end
end
Una última forma de interés del bucle for es la siguiente (A es una matriz):
for i=A
sentencias
end
Bucle «while»
La estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la
siguiente:
while condicion
sentencias
end
donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras
haya algún o algunos elementos true. El bucle se termina cuando todos los elementos de
condición son false (es decir, cero).
MÉTODO DEL PUNTO FIJO
CÓDIGO EN MATLAB
EJERCICIOS MÉTODO PUNTO FIJO
1)
n x0 error
2)
n x0 error
n x0 error
4)
n x0 error
5)
n x0 error
6)
n x0 error
7)
8)
n x0 error
9)
n x0 error
10)
n x0 error
n x0 error
12)
n x0 error
n x0 error
f=inline(cf);
g=inline(cg);
syms x
dg = diff(cg,x);
if (abs(eval(dg))<1)
disp(' n x0 error')
while error>tol
n=n+1;
x= g(x);
error= abs(f(x));
disp([n,x,error])
end
else
end
Ingrese el error: 50
n xi error
0 0.00000 50.000000
1 0.20000 0.019933
2 0.19617 0.000007
2)
Ingrese el error: 50
n xi error
0 1.00000 50.000000
1 3.00000 20.000000
2 2.20000 5.248000
3 1.78083 1.085990
4 1.63630 0.108576
5 1.61830 0.001584
syms x
f=inline(cf);
derivada=diff(cf,x);
df=inline(derivada);
n=0;
disp(' n xi error')
while error>tol
fprintf('\t%i\t%3.5f\t%f\n', n, x, error);
n=n+1;
x=x-f(x)/df(x);
error=abs(f(x));
MÉTODO DE LA SECANTE
CÓDIGO EN MATLAB
EJERCICIOS MÉTODO SECANTE
1)
n x0 x1 x2 error
2)
n x0 x1 x2 error
3)
4)
n x0 x1 x2 error
5)
n x0 x1 x2 error
n x0 x1 x2 error
7)
n x0 x1 x2 error
8)
n x0 x1 x2 error
n x0 x1 x2 error