Está en la página 1de 69

UNIVERSIDAD DE GUAYAQUIL

FACULTAD DE INGENIERÍA QUÍMICA


INGENIERÍA QUÍMICA

MATERIA:

ANÁLISIS NUMÉRICO

PORTAFORIO:

PRIMER PARCIAL

DOCENTE:

ING. GONZALO IVAN VILLA MANOSALVAS

ESTUDIANTES:

DAVID EBRAIN AREVALO NARANJO

PARALELO:

4-2

PERIODO LECTIVO:

2021-2022 CII
CLASE1.1: INTRODUCCON A MATLAB Y SU USO
Proporcionar a los estudiantes los conocimientos básicos para usar comandos como
isvarname, iskeyword y which entorno de MATLAB y las facilidades para su
programación.
En esta ocasión vamos a conocer en como implementar el uso de variables dentro de la
herramienta de Matlab por medio de comandos específicos el cual nos permitirá conocer de qué
manera denominar correctamente los archivos a la hora de guardarlos.
Para poder utilizar de manera efectivar el programa se lo deberá estudiar en más profundidad
acerca de sus funcionalidades dentro del mismo, puesto que es conveniente dar nombres a los
archivos en función a los valores que utiliza Matlab.
Los nombres dentro del programa de Matlab podrán poseer una longitud muy variada, pero solo
están disponibles los primeros 63 caracteres a la hora de realizar el guardado de un script, por lo
que se debe tomar en cuenta que al momento de nombrar el archivo siempre empiece con una
letra.

Matlab es un programa inicialmente diseñaado para realizar operaciones matriciales


(MATrix LABoratory) que ha ido evolucionando hasta convertirse en una herramienta
muy utilizada en distintos campos de la Ingeniería y de las Ciencias en general. Entorno
de ventanas Matlab consiste en un entorno de ventanas con tres partes:
Command Window: es la ventana en la que se escriben las instrucciones que se quieren
ejecutar.

Current Directory / Workspace: la primera muestra el contenido de la carpeta de trabajo. La


direcci´on de la carpeta de trabajo se puede cambiar mediante la barra desplegable que
aparece encima de las ventanas. La ventana Workspace muestra informaci´on sobre las
variables y objetos definidos.

Command History: esta ventana muestra los últimos comandos (instrucciones) ejecutados.

En la línea superior del entorno de ventanas encontramos la barra de menú. Los menús
File y Edit son los habituales en cualquier programa en entorno Windows. Los menús
Desktop y Windows permiten configurar el aspecto del entorno de trabajo. El menú
Debug es de utilidad a la hora de programar en Matlab. El menú Help permite acceder a
la ayuda del programa. Para obtener ayuda sobre una orden interna de Matlab, también
podemos escribir en la ventana de comandos help seguido del nombre de la instrucción
concreta.
DATOS COMPLEMENTARIOS
SVARNAME
tf = isvarname('str')
isvarname str
tf = isvarname 'str' devuelve un 1 lógico (verdadero) si la cadena str es un nombre de variable
MATLAB válido y un 0 lógico (falso) en caso contrario. Un nombre de variable válido es una
cadena de caracteres de letras, dígitos y guiones bajos, que suman no más de la longitud
máxima de los caracteres y comienzan con una letra.
isvarname str usa el formato de comando MATLAB.
*Este nombre de variable es válido:
isvarname foo
ans =
1
*Este no es porque comience con un número:
isvarname 8th_column
ans =
0
*Si está construyendo cadenas de varias piezas, coloque la construcción entre paréntesis.
d = date;

isvarname(['Monday_', d(1:2)])
ans =
1
SKEYWORD
tf = iskeyword(txt)
iskeyword
tf = iskeyword (txt) devuelve un 1 lógico (verdadero) si el vector de caracteres o el txt escalar
de cadena es una palabra clave en el lenguaje MATLAB® y un 0 lógico (falso) en caso
contrario. Las palabras clave de MATLAB no se pueden utilizar como nombres de variables.
iskeyword devuelve una lista de todas las palabras clave de MATLAB.
Para probar si la palabra while es una palabra clave de MATLAB
iskeyword('while')
ans =
1
*Para obtener una lista de todas las palabras clave de MATLAB
iskeyword
'break'
'case'
'catch'
'classdef'
'continue'
'else'
'elseif'
'end'
'for'
'function'
'global'
'if'
'otherwise'
'parfor'
'persistent'
'return'
'spmd'
'switch'
'try'
'while'
WHICH
Sintaxis:
which item
which fun1 in fun2
which ___ -all
str = which(item)
str = which(fun1,'in',fun2)
str = which(___,'-all')
Which elemento muestra la ruta completa para el elemento.
Si el elemento es una función de MATLAB® en un archivo de código MATLAB (extensión .m,
.mlx o .p), o un modelo de Simulink® guardado (extensión .slx o .mdl), entonces muestra la ruta
completa del archivo correspondiente . El elemento debe estar en la ruta de MATLAB.
Si item es un método en una clase Java® cargada, entonces muestra el paquete, la clase y el
nombre del método para ese método.
Si el elemento es una variable de espacio de trabajo, entonces muestra un mensaje que
identifica el elemento como una variable.
Si el elemento es un modelo de Simulink sin guardar que se carga en Simulink, entonces se
muestra un mensaje que identifica el elemento como un nuevo modelo de Simulink.
Si el elemento es un nombre de archivo que incluye la extensión y está en la carpeta de trabajo
actual o en la ruta de MATLAB, entonces muestra la ruta completa del elemento.
Si el elemento es una función o método sobrecargado, entonces qué elemento devuelve solo la
ruta de la primera función o método encontrado.
Busque la función pinv.
which pinv
matlabroot\toolbox\matlab\matfun\pinv.m

*pinv está en la carpeta matfun de MATLAB.


También puede usar la sintaxis de la función para devolver la ruta a str. Cuando utilice la forma
de función de la cual, incluya todos los argumentos de entrada entre comillas simples.
str = which('pinv')
EJERCICIOS REALIZADOS EN CLASE
¿Cuál de los siguientes nombres se permiten en matlab? Haga sus predicciones y
luego pruébelas con los comandos isvarname, iskeyword y which.

1) test
2) Test
3) If
4) mi-libro
5) mi_libro
6) Esteesunnombremuylargoperoinclusoasisepermite
7) 1ergrupo
8) Grupo_uno
9) zzaAbc
10) z34wAwy%12#
11) sin
12) log

Script
Command Window
Conclusiones de las clases
Se pudo considerar que los resultados obtenidos en el proceso de la ejecución de los distintos
comandos, uno que otro funcionaba correctamente al momento de efectuarse y otros
simplemente daban error o no se podían aplicar.
Se comprobó a la hora de verificar las variables, que no todas son consideradas como aplicables
a la hora de nombrar algún archivo de Matlab.
Escribir los comandos de entrada manera correcta para evitar errores, representando los datos
planteados para que el programa funcione.
Es útil utilizar de dos técnicas como mínimo, puesto que si en una de las técnicas se produce
algún error indeterminado se puede recurrir a otro método similar especifico.
CLASE1.2: COMANDOS BASICOS Y APLICACIÓN DE
ARICMETICA
Resolver problemas matemáticos utilizando: suma, resta, multiplicación y división
demostrando habilidad en la ejecución de operaciones aritméticas en Matlab
Dentro del programa de Matlab podemos hacer uso del manejo de operaciones aritméticas entre
dos escalares, de tal manera en parecerse a determinados programas de computo o como
propiamente una calculadora científica.
La sintaxis que se utilizará para realizar operaciones escalares dentro del Matlab es la misma
sintaxis que se da uso en las operaciones algebraicas variando en pequeñas cosas al momento de
plasmarse, pero dando la misma eficacia en los resultados.
En Matlab, el signo del igual (=) se va a denominar operador de asignación, puesto que este
operador nos permite que los resultados de nuestros cálculos a efectuar se almacenen dentro de
una ubicación en la memoria de nuestra computadora, lo que facilita el almacenamiento de
nuestros datos.

Para tratar las expresiones aritméticas debe reconocerse los operadores aritméticos, que
combinados con operandos constituyen las expresiones. Básicamente los operadores
aritméticos corresponden a las operaciones aritméticas básicas: suma, resta,
multiplicación y división; sin embargo, otras operaciones que se incluyen son la
división modular y la potencia.  En el siguiente cuadro se muestran los operadores y un
ejemplo de uso.

Ahora una expresión puede ser sencilla como la de los ejemplos, pero también puede ser
la combinación de varios operadores, utilizando paréntesis, y para evaluarlas
(resolverlas) debe tenerse en cuenta la prioridad existente entre ellos.
DATOS COMPLEMENTARIOS
Operaciones Escalares
Las magnitudes escalares se comportan como números reales y por tanto admiten las
operaciones básicas entre números: suma y multiplicación (con sus respectivas inversas y
combinaciones entre ellas).
Suma
S = sum(A)
S = sum(A,dim)
S = sum(___,outtype)
S = sum(___,nanflag)
S = sum(A) devuelve la suma de los elementos de A a lo largo de la primera dimensión del
array cuyo tamaño no es igual a 1.
Si A es un vector, sum(A) devuelve la suma de los elementos.
Si A es una matriz, sum(A) devuelve un vector de fila que contiene la suma de cada columna.
Si A es un array multidimensional, sum(A) opera a lo largo de la primera dimensión del array
cuyo tamaño no sea igual a 1, tratando los elementos como vectores. Esta dimensión se
convierte en 1, mientras que los tamaños de todas las demás dimensiones permanecen iguales.
S = sum(A,dim) devuelve la suma a lo largo de la dimensión dim. Por ejemplo, si A es una
matriz, sum(A,2) es un vector de columna que contiene la suma de cada fila.
S = sum(___,outtype) devuelve la suma con un tipo de datos especificado, utilizando
cualquiera de los argumentos de entrada de las sintaxis anteriores. outtype puede
ser 'default', 'double' o 'native'.
S = sum(___,nanflag) especifica si se deben incluir u omitir los valores NaN en el cálculo en
cualquiera de las sintaxis anteriores. sum(A,'includenan') incluye todos los valores NaN en el
cálculo, mientras que sum(A,'omitnan') los ignora.
Suma de elementos vectoriales
Cree un vector y calcule la suma de sus elementos.
A = 1:10;
S = sum(A)
S = 55
Suma de columnas matriciales
Cree una matriz y calcule la suma de los elementos de cada columna.
A = [1 3 2; 4 2 5; 6 1 4]
A = 3×3
1 3 2
4 2 5
6 1 4
S = sum(A)
S = 1×3

11 6 11

Resta
La expansión implícita también funciona si se resta un vector de 1 por 3 de una matriz de 3 por
3, ya que los dos tamaños son compatibles. Al llevar a cabo la resta, el vector se ha ampliado de
manera implícita para convertirlo en una matriz de 3 por 3.
A = [1 1 1; 2 2 2; 3 3 3]
A=
1 1 1
2 2 2
3 3 3
m = [2 4 6]
m=
2 4 6
A-m
ans =
-1 -3 -5
0 -2 -4
1 -1 -3

Un vector fila y un vector columna tienen tamaños compatibles. Si suma un vector de 1 por 3 y
un vector de 2 por 1, cada vector se amplía de manera implícita a una matriz de 2 por 3 antes de
que MATLAB ejecute la suma elemento por elemento.
x = [1 2 3]
x=
1 2 3
y = [10; 15]
y=
10
15
x+y
ans =
11 12 13
16 17 18
Si los tamaños de los dos operandos son incompatibles, obtiene un error.
A = [8 1 6; 3 5 7; 4 9 2]
A=
8 1 6
3 5 7
4 9 2
m = [2 4]
m=
2 4
A-m
La siguiente tabla proporciona un resumen de los operadores aritméticos de arreglos en
MATLAB. Para obtener información específica de la función, haga clic en el enlace a la página
de referencia de la función en la última columna.

Multiplicación
C = A.*B
C = times(A,B)
C = A.*B multiplica los arrays A y B por elemento y devuelve el resultado en C.
C = times(A,B) es una forma alternativa de ejecutar A.*B, pero raramente se utiliza. Permite la
sobrecarga del operador para las clases.
Multiplique dos matrices
Cree dos matrices 3 por 3, A y By multiplique el elemento por elemento.
A = [1 0 3; 5 3 8; 2 4 6];
B = [2 3 7; 9 1 5; 8 8 3];
C = A.*B
C = 3×3
2 0 21
45 3 40
16 32 18
Multiplicar vectores de fila y columna
Cree un vector de fila a y un vector de columna by, a continuación, multipliquelos. El vector de
fila 1-por-3 y el vector columna 6-por-1 se combinan para producir una matriz de 6 por 3 con
todas las combinaciones de elementos multiplicados.
a = [1 2 3]
a = 1×3
1 2 3

b = (1:6)'
b = 6×1
1
2
3
4
5
6

a.*b
ans = 6×3
1 2 3
2 4 6
3 6 9
4 8 12
5 10 15
6 12 18

División
Sintaxis
b = mod(a,m)
b = mod(a,m) devuelve el resto después de la división de a por m, donde a es el dividendo
y m es el divisor. Esta función se denomina a menudo la operación modulo, que se puede
expresar como b = a - m.*floor(a./m). La función mod sigue la Convención
que mod(a,0) devuelve a.
Resto después de la división de escalar
Calcular 23 modulo 5.
b = mod(23,5)
b=3
Resto después de la división del vector
Busque el resto después de la División para un vector de enteros y el divisor 3.
a = 1:5;
m = 3;
b = mod(a,m)
b = 1×5

1 2 0 1 2

PRÁCTICA EN MATLAB
Prediga los resultados de las siguientes expresiones MATLAB y luego verifique sus
predicciones al teclear las expresiones en la ventana de comandos
Script

Command Window
FINALIDAD DE LA CLASE
Al realizar las operaciones en Matlab, se pudo constatar que se podían realizar por medio de dos
caminos, una fue en dar valores alfabéticos a las variables numéricas y la otra que se basó en
efectuar las operaciones de forma directa, en este caso elegimos la segunda opción.
Al transcribir las operaciones en el script y darle a “run”, los resultados obtenidos fueron casi de
inmediatos, lo que esto nos facilita mucho a la hora de resolver este tipo de operaciones.
Es muy fácil confundirse y fallar en la plasmación correcta de estos ejercicios dentro del
Matlab, pero esto conlleva a no cometer estos errores de manera consecutiva y nos deja ese
aprendizaje.
Se debe trabajar con el respectivo cuidado a la hora de plasmar los ejercicios para no cometer
errores gramaticales al aplicar las operaciones en el script del Matlab.
Se debe conocer bien de la teoría de los signos al implementarlos en el Matlab, para que no nos
de error o línea invalida a la hora de darle a “run” para la obtención del resultado de las
operaciones efectuadas.
.

CLASE1.3: USO Y CREACION DE MATRIZEN EN MATLAB


En esta sección vamos a hacer uso de matrices dentro del programa de Matlab, empezando
desde el tipo de datos básicos, desde un solo valor que se suele denominar como escalar y tiene
una representación como una matriz de 1x1.
Respecto a esto también están las matrices con un nivel más alto en complejidad por lo que se
las debe plasmar de forma manual, pero existen otras excepciones que serán las matrices con
intervalos regulares que se las puede ingresar de forma mucho mas fácil.
Al efectuar las matrices en Matlab, se podrán considerar como opcionales el uso de corchetes, y
seguir las respectivas reglas cuando se trata de especificar algún tipo de incremento dentro de
una matriz. También al momento en que se requiera aplicar distintos tipos de comandos como
“linspace”, se deberán especificar los valores de incremento correspondientes y plasmarse
correctamente.

Las estructuras de datos que hemos visto hasta ahora (listas, tuplas, diccionarios,
conjuntos) permiten manipular datos de manera muy flexible. Combinándolas y
anidándolas, es posible organizar información de manera estructurada para representar
sistemas del mundo real.
En muchas aplicaciones de Ingeniería, por otra parte, más importante que la
organización de los datos es la capacidad de hacer muchas operaciones a la vez sobre
grandes conjuntos de datos numéricos de manera eficiente. Algunos ejemplos de
problemas que requieren manipular grandes secuencias de números son: la predicción
del clima, la construcción de edificios, y el análisis de indicadores financieros entre
muchos otros.
La estructura de datos que sirve para almacenar estas grandes secuencias de números
(generalmente de tipo float) es el arreglo.
Los arreglos tienen algunas similitudes con las listas:
los elementos tienen un orden y se pueden acceder mediante su posición,
los elementos se pueden recorrer usando un ciclo for.
Sin embargo, también tienen algunas restricciones:
todos los elementos del arreglo deben tener el mismo tipo,
en general, el tamaño del arreglo es fijo (no van creciendo dinámicamente como las
listas),
se ocupan principalmente para almacenar datos numéricos.
A la vez, los arreglos tienen muchas ventajas por sobre las listas, que iremos
descubriendo a medida que avancemos en la materia.
Los arreglos son los equivalentes en programación de las matrices y vectores de las
matemáticas. Precisamente, una gran motivación para usar arreglos es que hay mucha
teoría detrás de ellos que puede ser usada en el diseño de algoritmos para resolver
problemas verdaderamente interesantes
DATOS COMPLEMENTARIOS
Operaciones con arreglos
Las operaciones con arreglos ejecutan operaciones elemento por elemento en los elementos
correspondientes de los vectores, las matrices y los arreglos multidimensionales. Si los
operandos tienen el mismo tamaño, cada elemento del primer operando coincide con el
elemento de la misma ubicación en el segundo operando. Si los operandos tienen tamaños
compatibles, cada entrada se amplía de manera implícita según sea necesario para hacer que
coincida con el tamaño del otro.
Como ejemplo sencillo, puede sumar dos vectores con el mismo tamaño.
A = [1 1 1]
A=
1 1 1
B = [1 2 3]
B=
1 2 3
A+B
ans =
2 3 4
Si un operando es un escalar y el otro no, MATLAB amplía el escalar de manera implícita para
que sea del mismo tamaño que el otro operando. Por ejemplo, puede calcular el producto
elemento por elemento de un escalar y una matriz.
A = [1 2 3; 1 2 3]
A=
1 2 3
1 2 3
3.*A
ans =
3 6 9
3 6 9
La expansión implícita también funciona si se resta un vector de 1 por 3 de una matriz de 3 por
3, ya que los dos tamaños son compatibles. Al llevar a cabo la resta, el vector se ha ampliado de
manera implícita para convertirlo en una matriz de 3 por 3.
A = [1 1 1; 2 2 2; 3 3 3]
A=
1 1 1
2 2 2
3 3 3
m = [2 4 6]
m=
2 4 6
A-m
ans =
-1 -3 -5
0 -2 -4
1 -1 -3
Un vector fila y un vector columna tienen tamaños compatibles. Si suma un vector de 1 por 3 y
un vector de 2 por 1, cada vector se amplía de manera implícita a una matriz de 2 por 3 antes de
que MATLAB ejecute la suma elemento por elemento.
x = [1 2 3]
x=
1 2 3
y = [10; 15]
y=
10
15
x+y
ans =
11 12 13
16 17 18
Si los tamaños de los dos operandos son incompatibles, obtiene un error.
A = [8 1 6; 3 5 7; 4 9 2]
A=
8 1 6
3 5 7
4 9 2
m = [2 4]
m=
2 4
A-m

PRÁCTICA EN MATLAB
Conforme realice los siguientes cálculos, recuerde la diferencia entre los
operadores.
Script

Command Window
FINALIDAD DE LA CLASE
Al generar las matrices en el Matlab, se suele dar uno que otro error si no se tiene en cuenta el
uso correcto de los signos.
La obtención de los resultados de las matrices planteadas dentro del programa, son inmediatas y
con un mínimo margen de error, lo que lo vuelve muy confiable.
Suele ser un poco confuso al principio el poder plantear de manera correcta y eficaz las matrices
a desarrollar, pero con la practica constante uno se familiariza rápidamente con la metodología
de trabajo.
Es importante tener en cuenta que al aplicar los logaritmos dentro del script este sea escrito y
plasmado correctamente para que se pueda ejecutar sin problemas.
Es recomendable dar uso de alternativas o hacer pruebas al momento de realizar las matrices en
el Matlab para evitar errores constantemente.
CLASE1.4: DE RESULUCION ECUACIONES LINEALES
Resolver sistemas de ecuaciones lineales mediante diversas técnicas de solución
numérica (Eliminación Gaussiana y Gauss-Jordan).
En trabajo el tema a trata se basa sobre el método de eliminación de Gaus, puesto que haremos
uso en el planteamiento de distintos sistemas de ecuaciones lineales con varias incógnitas.
Puesto que aprovecharemos los conceptos básicos aplicados y aprendidos con anterioridad en
algebra lineal para poder desarrollar eficazmente los ejercicios por realizar.
Se hará uso de las distintas herramientas que nos ofrece el programa de Matlab para desarrollar
los ejercicios que se vayan a plantear de forma sistemática por medio de los métodos que se nos
solicitarán, para poder demostrar la confiabilidad del funcionamiento del programa de los
resultados a obtener.
Se planteará el uso de un array puesto que son especialmente útiles cuando se necesita de
redefinir algunos de los elementos para que sean utilizados en determinados cálculos, o cuando
se trate de algún subgrupo de elementos que se utilice para definir una nueva variable, para
verificar cuál de las técnicas o métodos a aplicar sea el mas adecuado para el planteamiento
correcto de los ejercicios por resolver.

Existen varios métodos para la solución numérica de sistemas de ecuaciones lineales,


entre ellos están: Eliminación Gaussiana y Gauss-Jordan. Esta práctica se enfoca a
dichos métodos por lo que a continuación se da una pequeña explicación de cada uno de
ellos; aunado a esto se recomienda revisar estos métodos en la bibliografía citada al
final de la práctica.
Todos datos asociados a una persona y lo solucionaremos mediante el uso de
estructuras, denominadas “struct” en Lenguaje C (que veremos detalladamente en los
próximos capítulos) o conjuntos de datos que son del mismo Tipo por ejemplo las notas
de todas las materias que están cursando agrupadas en un arreglo o vector (denominado
“array” en Lenguaje C) en el cual no varía su tamaño o sea pueden guardar una cantidad
definida a priori de datos. Como no se puede modificar su tamaño en tiempo de
ejecución, son denominadas estructuras estáticas una de ellas “El arreglo”, es el motivo
de nuestro estudio en este capítulo. En un posterior Curso más avanzado conocerán
otros tipos de estructuras como son las dinámicas, Listas, Colas, Pilas y Árboles que
pueden variar su tamaño en tiempo de ejecución
Estas funciones permiten interactuar con y manipular arrays (matrices) de varias
maneras. Los arrays son esenciales para almacenar, manejar y operar sobre conjuntos de
variables.
Se admiten arrays simples y multidimensionales, y pueden ser creados tanto por el
usuario como por otra función. Existen funciones específicas de manejo de bases de
datos para llenar arrays desde las consultas a bases de datos, y varias funciones
devuelven arrays.

DATOS COMPLEMENTARIOS
ELIMINACIÓN DE GAUSS
Este método propone la eliminación progresiva de variables en el sistema de
ecuaciones, manejando una matriz cuadrada hasta dejarla en su forma triangular, para
así encontrar el valor de una variable y dejar las demás ecuaciones con 2, 3, 4, …, n
variables consecutivamente, para de igual forma ir encontrando el valor de la segunda,
tercera, …, enésima variable haciendo una sustitución hacia atrás. Este proceso se
realiza mediante la utilización de operaciones básicas tales como la suma, resta,
multiplicación y división; es muy frecuente la multiplicación de un renglón por una
constante, y la suma de éste con otro renglón, ya que de esta manera se puede llegar
hasta obtener una ecuación en donde el coeficiente de una variable sea 0.
Al renglón que se selecciona para realizar este proceso se le llama renglón pivote.
Por ejemplo, sea el sistema de ecuaciones:
Las operaciones realizadas en la aplicación del método de Eliminación Gaussiana para
la obtención de los valores de las variables se presentan a continuación:

El pseudocódigo para la triangulación de un sistema de n ecuaciones, con n incógnitas


es:

MÉTODO DE GAUSS-JORDAN
Este método constituye una variación del método de Eliminación de Gauss. Este
procedimiento se diferencia del método Gaussiano, porque ahora no se busca obtener
una matriz triangular, sino obtener la matriz identidad, siguiendo los mismos pasos de
multiplicar por constantes los renglones y sumarlos a los demás. Por ejemplo, sea el
siguiente sistema de ecuaciones:
El pseudocódigo que realiza el método de Gauss-Jordan es:

MANIPULACIÓN DE ARRAYS
Son un conjunto de datos ordenados por posiciones y todos asociados en una sola
variable. Los datos pueden ser de cualquier tipo de dato, es decir, es posible crear una
array que tenga una cadena en la primera posición, un número en el segundo, un objeto
en el tercero y así sucesivamente. Podremos acceder a estos distintos datos de manera
independiente o agrupándolos. Cabe resaltar que un array es un objeto, por ejemplo:
var persona = ["Julio", 22, true];
Formas de crear un Array
Existen dos formas de crear un Array y son las siguientes:
La primera forma, nos permite crear un array colores estableciendo número de
posiciones e indicando sus elementos como se muestra a continuación:
var colores = new Array();
De esta manera ya creamos el array colores, pero sin ninguna posición, entonces para
establecer un número de posiciones para un array, seria:
var colores = new Array(10);
Como hemos visto dentro de los paréntesis o mejor llamado constructor, se establece el
número de elementos que puede contener este array, asu vez, se podría indicar los
elementos del array:
var colores = new Array("rojo", "azul", "verde");
Así hemos fijado tres elementos en el array. 
Veamos la segunda forma de crear un array, que es a través de los corchetes, aquí un
ejemplo:
var colores = ["rojo", "azul", "verde"] ;
Acabamos de crear un array con tres datos string. En el caso de  un array vacío sería: 
var nombres = [];
Nota. - De usar una coma sin indicar el valor a tomar al siguiente dato, entonces puede
ocurrir algún tipo de error dependiendo el navegador que estés usando, así que
deberíamos evitarlo.  El siguiente es un ejemplo de lo que NO debes hacer:
var valores = [1,2 , ];
Acceder a los elementos de un Array
Hablemos ahora de la forma en que podemos acceder a algunos de los elementos del
Array. Esto se logra, a través del nombre establecido junto a dos corchetes, entre ellos
la posición del elemento, de la siguiente manera:
Tenemos al siguiente array:
var colores = ["rojo", "azul ", " verde "] ;
colores[1];
"azul"
Este array mostrará azul, pero debes tener en cuenta que las posiciones empiezan desde
0, es decir que nuestros valores del array serán: 0 = rojo, 1 = azul, 2 = verde.
Métodos en los Arrays
Los array tienen distintos métodos, encontrando al método lenght,  toString,  stack,
push en Array, pop en Array y otros métodos adicionales, los cuales detallaremos:
Método length
Si queremos conocer el número de elementos del array colores se establece a través
de length, de la siguiente manera: 
colores.length;
3
De nuestro array colores nos mostrara 3, pues es el número de elementos del array.
También podemos re establecer la cantidad de elementos del array, en el caso
de colores sería:
colores.length = 2;
Entonces el array pasará a tener solo dos elementos dejando de lado el dato de la
posición número dos, que es “verde”. Ahora nuestro array sería:
["rojo", "azul"]
Si queremos darle otra utilidad a este método, pues podríamos usarlo para agregar
elementos al final del array, el cual sería:
colores[colores.length] = "amarillo";
Aquí la posición a agregar coincide con el número total de elemento, es decir el string
"amarillo", iría a la última posición del array.
Método toString();
De necesitar que todo el array se convierta en una cadena, el método toString() nos será
de gran utilidad, y su manera de uso, es la siguiente: 
colores.toString();
Nos mostrará todo el array en una cadena, cada elemento separados por comas pero
unidos en un string.
Métodos Stack
Un array puede actuar como una pila, que te permite en un grupo de datos apilar y
desapilar estos.
                      
A esta pila se conoce como el tipo LIFO( Last in, First out)  último en entrar - primero
en salir, lo que significa que el elemento más recientemente añadido es el primero en
ser eliminado. La inserción (push) y remoción (pop).
Método Push en Array. Transforma un array añadiendo los elementos proporcionados y
devolviendo la nueva longitud del array.
Veamos de qué manera utilizar el método push, tenemos el array:
var colores = ["rojo", "azul", "verde", "amarillo"];
El método push acepta cualquier número de argumentos y los agrega al final del array y
sería: 
colores.push ( "negro", "blanco");
["rojo", "azul", "verde", "amarillo", "negro", "blanco"]
Entonces tendremos un array con 5 elementos, y con los valores establecidos. 
Método Pop en Array. Este método permite eliminar el último elemento del array,
disminuyendo la longitud de dicho array, veamos:
colores.pop();
["rojo", "azul", "verde", "amarillo", "negro"]
Si mostramos el array, vemos que el elemento string “blanco” dejó de pertenecer al
array.
Métodos adicionales en los Arrays
Pasemos otros métodos muy importantes en los arrays, lo cuales nos serán de gran
utilidad. Antes de continuar consideremos el array:
var colores = [“rojo”, “azul”, “verde”, “amarillo”];
Shift, este método nos permite obtener el primer elemento de un array, como lo
veremos a continuación:
colores.shift();
Nos devuelve el string “rojo”.
Unshift, el método con el cual puedes agregar elementos al inicio del array, puede
contener más de un argumento, esto quiere decir que puedes agregar en la misma
sentencia más de un elemento. veamos su forma de uso: 
colores.unshift(“anaranjado”);
[“anaranjado”, “rojo”, “azul”, “verde”, “amarillo”]
Entonces de manera inmediata se agrega el nuevo elemento al inicio del array. 
Reverse, método que establece que el array invierte sus elementos:
colores.reverse();
["amarillo", "verde", "azul", "rojo", "anaranjado"]
veremos que nos devuelve todos los datos invertidos.
Sort, este método es muy útil cuando tengamos un array con elementos string, pues
estos serán ordenados alfabéticamente. En el caso de nuestro array:
colores.sort();
["amarillo", "anaranjado", "azul", "rojo", "verde"]
Lo ordenará alfabéticamente. De usarse este método en elementos de tipo numéricos
nos devolverá datos incorrectos.
Slice, método que puede contener uno o dos argumentos, que indiquen el inicio y
parada de posiciones, pues devuelve los elementos contenidos en el array, de acuerdo a
los argumentos indicados, por ejemplo si a colores, le agregamos colores.slice(1,3);
obtendremos los que se encuentran en la posición 1, 2 que son:
colores = ["amarillo", "anaranjado", "azul", "rojo", "verde"]
colores.slice(1,3);
["anaranjado", "azul"]
Si solo se indica un argumento se tomará como inicio ese argumento y como final la
última posición, entonces si usamos:
colores.slice(2);
["azul", "rojo", "verde"]
Splice, cambia el contenido de un array removiendo elementos existentes y/o
agregando nuevos elementos, hay tres maneras distintas de utilizar este método. 
Supresión: Cualquier número de elementos puede ser eliminado de la matriz
especificando sólo dos argumentos: la posición del primer elemento que desea eliminar
y el número de elementos a eliminar. Por ejemplo,
colores = ["amarillo", "anaranjado", "azul", "rojo", "verde"]
colores.splice(0, 2);
["azul", "rojo", "verde"]
Entonces, suprime los dos primeros elementos.
Inserción: Se puede insertar elementos en el array en una posición específica,
proporcionando tres argumentos: la posición donde deseas agregar elementos,el número
de elementos que desea eliminar y el elemento a insertar. Opcionalmente, se puede
especificar una cuarta, quinta, o cualquier número de otros parámetros a insertar. Por
ejemplo,
var colores = ["amarillo", "anaranjado", "azul", "rojo", "verde"];
colores.splice(1,0,'pepe');
["amarillo", "pepe", "anaranjado", "azul", "rojo", "verde"]
Si recuerdas en inserción, podemos optar como segundo parámetro el número de
elementos a eliminar veamos cómo se comporta de agregar un número mayor a cero. 
var colores = ["amarillo", "anaranjado", "azul", "rojo", "verde"];
colores.splice(1,2,'pepe');
["amarillo", "pepe", "rojo", "verde"]
Vemos que se insertó el elemento establecido, pero también se eliminó dos elementos a
partir de la posición indicada a insertar.
Reemplazar: Se comportaría como insertar en una posición específica al eliminar
simultáneamente, para esto se tiene que especificar tres argumentos: la posición donde
insertar, el número de elementos a borrar, y cualquier número de elementos a insertar.
El número de elementos a insertar no tiene que coincidir necesariamente con el número
de elementos que desea eliminar. Por ejemplo: 
var colores = ["amarillo", "anaranjado", "azul", "rojo", "verde"];
colores.splice(2, 1, "morado", " violeta");
["amarillo", "anaranjado", "morado", " violeta", "rojo", "verde"]
VECTORES
Vectores fila
La introducción de vectores fila en MATLAB es muy fácil. Introduzca el siguiente
comando en la pantalla de MATLAB 1
>> v=[1 2 3]
Hay una serie de ideas a destacar en este comando. Para introducir un vector, se
escribe una apertura de corchete, los elementos del vector separados por espacios y
un cierre de corchete. Se pueden usar también comas para delimitar las componentes
del vector
>> v=[1,2,3]
El signo = es el operador de asignación de MATLAB. Se usa este operador para
asignar
valores a variables. Para comprobar que el vector fila [1,2,3] ha sido asignado a la
variable v Introduzca el siguiente comando en el indicador de MATLAB.
1El símbolo >> es el indicador de MATLAB. Se debe introducir lo que aparece tras el
indicador.
Entonces se pulsa la tecla “Enter” para ejecutar el comando.
333
>> v
Rangos.
Algunas veces es necesario introducir un vector con componentes a intervalos
regulares. Esto se realiza fácilmente con MATLAB con la estructura
inicio:incremento:fin.
Si no se proporciona un incremento, MATLAB asume que es 1.
>> x1=0:10
Se puede seleccionar el propio incremento.
>> x2=0:2:10
Se puede ir incluso hacia atrás.
>> x3=10:-2:1
O se le puede echar imaginación.
>> x4=0:pi/2:2*pi
Hay veces, sobre todo cuando hay que pintar funciones, que se precisan un gran
numero de componentes en un vector.
>> x=0:.1:10
Elimina la salida.
Se puede suprimir la salida de un comando de MATLAB añadiendo un punto y
coma.
>> x=0:.1:10;
Es muy ´útil cuando la salida es muy grande y no se desea verla.
Espacio de trabajo de MATLAB.
Es posible obtener una lista de las variables en el espacio de trabajo en cualquier
momento mediante el comando
>> who
Se puede obtener incluso más información acerca de las variables con
>> whos
Se eliminar la asignación hecha a una variable con
>> clear x
>> who
Obsérvese que también se da el tamaño de cada variable. Es posible mantener una
ventana con la lista de variables usadas y su tamaño. Para ello, en la barra superior
selecciones el menú Desktop y actívese la opción Workspace.
Se puede obtener el tamaño de un vector v con el comando
>> size(v)
La información que devuelve indica que el vector v tiene 1 fila y 3 columnas. Aunque
se puede entender al vector v como una matriz con 1 fila y 3 columnas, también se
puede entender como un vector fila de longitud 3. Por ejemplo, pruébense el siguiente
comando:
>> length(v)
Vectores columna
Es también fácil escribir vectores columna en MATLAB. Introdúzcase el siguiente
comando en el indicador.
>> w=[4;5;6]
Observe que los símbolos de punto y coma delimitan las filas de un vector columna.
Pruébense los siguientes comandos.
>> w
>> who
>> whos
>> size(w)
El resultado indica que el vector w tiene 3 filas y 1 columna. Aunque se puede ver
al vector w como una matriz de 3 filas y 1 columna, también es posible pensar en ´el
como un vector columna de longitud 3. Pruébense el siguiente comando.
>> length(w)
Transposición.
El operador en MATLAB para transponer es el apostrofe simple’. Se puede cambiar
as´ı un vector fila a un vector columna.
>> y=(1:10)’
O un vector columna a un vector fila.
>> y=y’
Indexado de vectores.
Una vez que se ha definido un vector, es posible acceder fácilmente a cada una de
sus componentes con los comandos de MATLAB. Por ejemplo, introdúzcase el
siguiente
vector.
>> x=[10,13,19,23,27,31,39,43,51]
Ahora pruébense los siguientes comandos.
>> x(2)
>> x(7)
Se puede cambiar fácilmente el contenido de una componente.
>> x(6)=100
Se puede también acceder a un rango de elementos
>> x([1,3,5])
>> x(1:3)
>> x(1:2:length(x))
Operaciones con vectores
Un gran número de operaciones en las que intervienen vectores y escalares se
pueden ejecutar con MATLAB.
Operaciones entre vector y escalar.
Las operaciones entre escalares y vectores son directas. Desde el punto de vista
teórico, no se puede sumar un escalar a un vector. Sin embargo, MATLAB sí lo
permite.
Por ejemplo, si y es un vector, el comando y+2 añadirá 2 a cada componente del
vector. Estúdiense las salidas de los siguientes comandos.
>> y=1:5
>> y+2
>> y-2
>> 2*y
>> y/2
Por supuesto, estas operaciones son igualmente válidas para vectores columna.
>> w=(1:3:20)’
>> w+3
>> w-11
>> .1*w
>> w/10
Operaciones entre vectores.
En primer lugar, considérense los siguientes vectores.
>> a=1:3
>> b=4:6
La adición y sustracción de vectores es natural y fácil. Introdúzcanse los siguientes
comandos.
>> a,b,a+b
>> a,b,a-b
De nuevo, estas operaciones son válidas para vectores columna.
>> a=(1:3)’, b=(4:6)’
>> a+b,a-b
Sin embargo, se pueden obtener resultados no esperados si no se recuerda que
MATLAB
es un entorno que trabaja con matrices.
>> aba*b
El ´ultimo comando devuelve un error porque ∗ es el símbolo de MATLAB para la
multiplicación de matrices, y en este caso hay un problema de compatibilidad entre
los órdenes de las “matrices” a y b. También pueden ocurrir errores si se intenta
añadir vectores de diferente tamaño.
>> a=1:3, b=4:7,a+b
MATRICES
MATLAB es la abreviatura de "matrix laboratory" (laboratorio de matrices). Aunque
otros lenguajes de programación mayormente procesan los números de uno en uno,
MATLAB® está diseñado para funcionar principalmente con matrices y arreglos
completos.
Todas las variables de MATLAB son arreglos multidimensionales, sin importar el tipo
de datos. Una matriz es un arreglo bidimensional que a menudo se utiliza para el
álgebra lineal.
Creación de arreglos
Para crear un arreglo con cuatro elementos en una fila única, separe los elementos con
una coma (,) o un espacio.
a = [1 2 3 4]
a = 1×4
1 2 3 4
Este tipo de arreglo es un vector fila.
Para crear una matriz con varias filas, separe las filas con punto y coma.
a = [1 2 3; 4 5 6; 7 8 10]
a = 3×3
1 2 3
4 5 6
7 8 10
Otra forma de crear una matriz es usando una función, como ones, zeros o rand. Por
ejemplo, cree un vector columna de ceros de 5 por 1.
z = zeros(5,1)
z = 5×1
0
0
0
0
0
Operaciones con matrices y arreglos
MATLAB le permite procesar todos los valores de una matriz mediante el uso de una
sola función u operador aritmético.
a + 10
ans = 3×3
11 12 13
14 15 16
17 18 20
sin(a)
ans = 3×3

0.8415 0.9093 0.1411


-0.7568 -0.9589 -0.2794
0.6570 0.9894 -0.5440
Para trasponer una matriz, use una comilla simple ('):
a'
ans = 3×3
1 4 7
2 5 8
3 6 10
Para realizar una multiplicación de matrices estándar, la cual calcula los productos
internos entre filas y columnas, use el operador *. Por ejemplo, confirme que el
producto de una matriz por su inversa es igual a la matriz identidad:
p = a*inv(a)
p = 3×3
1.0000 0 0
0.0000 1.0000 0
0.0000 -0.0000 1.0000
Observe que p no es una matriz de valores enteros. MATLAB almacena los números
como valores de punto flotante, y las operaciones aritméticas son sensibles a pequeñas
diferencias entre el valor real y su representación en punto flotante. Para visualizar más
dígitos decimales, use el comando format:
format long
p = a*inv(a)
p = 3×3
1.000000000000000 0 0
0.000000000000002 1.000000000000000 0
0.000000000000002 -0.000000000000004 1.000000000000000
Restablezca la visualización al formato más corto con
format short
format influye solo en la visualización de números, no en la forma en que MATLAB
los calcula o los guarda.
Para realizar una multiplicación elemento por elemento en lugar de una multiplicación
de matrices, utilice el operador .*:
p = a.*a
p = 3×3
1 4 9
16 25 36
49 64 100
Cada uno de los operadores de matriz para la multiplicación, la división y la potencia
tiene un operador de arreglo correspondiente que opera elemento por elemento. Por
ejemplo, eleve cada elemento de a a la tercera potencia:
a.^3
ans = 3×3
1 8 27
64 125 216
343 512 1000
Concatenación
La concatenación es el proceso que consiste en unir arreglos para crear otros más
grandes. De hecho, el primer arreglo de este capítulo resultó de la concatenación de sus
elementos individuales. El operador de concatenación es el par de corchetes: [].
A = [a,a]
A = 3×6
1 2 3 1 2 3
4 5 6 4 5 6
7 8 10 7 8 10
La concatenación de arreglos uno junto a otro mediante el uso de comas se conoce
como concatenación horizontal. Cada arreglo debe tener la misma cantidad de filas. De
forma similar, cuando los arreglos tienen la misma cantidad de columnas, es posible
concatenarlos verticalmente mediante el uso de punto y coma.
A = [a; a]
A = 6×3
1 2 3
4 5 6
7 8 10
1 2 3
4 5 6
7 8 10

Números complejos
Los números complejos tienen partes reales e imaginarias, donde la unidad imaginaria
es la raíz cuadrada de -1.
sqrt(-1)
ans = 0.0000 + 1.0000i
Para representar la parte imaginaria de números complejos, use i o j.
c = [3+4i, 4+3j; -i, 10j]
c = 2×2 complex
3.0000 + 4.0000i 4.0000 + 3.0000i
0.0000 - 1.0000i 0.0000 +10.0000i
PRÁCTICA EN MATLAB

Ejercicio 1
Script
Command Window

Ejercicio 2
Script
Command Window

Ejercicio 3
Script
Command Window

Ejercicio 4
Script
Command Window
Ejercicio 5
Script

Command Window
Ejercicio 6
Script

Command Window
FINALIDAD DE LA CLASE
Matlab nos permitió plantear los ejercicios por medio del método de eliminación de Gaus de
manera eficaz y correcta, es importante tener en cuenta todas las funciones del programa lo cual
nos permitió poder efectuar eficazmente el planteamiento de cada ejercicio y por consecuente en
obtener los resultados casi al instante y muy bien desarrollar
Se especifico cada paso de los ejercicios elaborados dentro del programa de Matlab para que se
vea de manera más ordenada y saber correctamente que conlleva cada paso de cada uno de los
problemas, puesto que es de ayuda al momento de aplicar el método de eliminación de Gaus
para un adecuado y correspondiente desarrollo para la resolución del ejercicio.

El importante poder plantear correctamente cada paso del ejercicio, esto respecto a que en el
mínimo fallo, al momento de ejecutar el código en el script nos puede saltar un error indeseado
por lo que perderemos tiempo y nos tocaría plantear nuevamente el código o tratar de buscar
pacientemente en que línea se encuentre el error para corregirlo en caso de que el planteamiento
sea algo extenso.
Al realizar los comandos dentro del programa de Matlab, es necesario tener en cuenta que estén
bien ubicados los signos, puesto que esto puede ser incluso otro problema no poco menor,
puesto que, así como Matlab es muy útil para conseguir resultados rápidos y eficaces, también
conlleva a que se generen errores con facilidad si el planteamiento se hayan estas falencias, por
lo que es importante que se trate de tener muy en cuenta estos pequeños aspectos durante la
elaboración del código en el script.
CLASE1.5: PRACTICA DE EJERCICIOS DE LOS TEMAS
TRATADOS EN CLASE
Establecer un método para obtener soluciones a los problemas prácticos que con
frecuencia aparecen en casi todos los campos de estudio, es decir, representarlos
mediante modelos matemáticos.
El tema en el trabajo se basará sobre el método de eliminación de Gaus, donde haremos uso de
operaciones y de cómo usarlas en el programa de Matlab. Este método funciona de manera
inductiva, puesto que el primero paso es transformar en 0 todas las entradas de la primera
columna debajo de la primera fila.
Los comandos que se plantean usar en la herramienta de Matlab nos van a permitir desarrollar
este tipo de ejercicios de forma sistemáticas, por medio del método anteriormente mencionado,
puesto que dé está manera obtendremos resultados concisos y de forma rápida y de manera más
resumida caso contrario que sucede al desarrollarlos manualmente.
También está la eliminación de Gaus con pivoteo, y la cual consiste que al tener una matriz de
coeficientes y con un vector de términos independientes de un sistema de ecuaciones lineales, se
podrá transformar en una matriz aumentada y poder convertir esta matriz de coeficientes en una
matriz triangular superior dejando como pivote el número mayor, por lo cual, con la ayuda de
Matlab plantearemos y desarrollaremos este tipo de ejercicios.

Todos datos asociados a una persona y lo solucionaremos mediante el uso de


estructuras, denominadas “struct” en Lenguaje C (que veremos detalladamente en los
próximos capítulos) o conjuntos de datos que son del mismo Tipo por ejemplo las notas
de todas las materias que están cursando agrupadas en un arreglo o vector (denominado
“array” en Lenguaje C) en el cual no varía su tamaño o sea pueden guardar una cantidad
definida a priori de datos. Como no se puede modificar su tamaño en tiempo de
ejecución, son denominadas estructuras estáticas una de ellas “El arreglo”, es el motivo
de nuestro estudio en este capítulo. En un posterior Curso más avanzado conocerán
otros tipos de estructuras como son las dinámicas, Listas, Colas, Pilas y Árboles que
pueden variar su tamaño en tiempo de ejecución
Estas funciones permiten interactuar con y manipular arrays (matrices) de varias
maneras. Los arrays son esenciales para almacenar, manejar y operar sobre conjuntos de
variables.
DATOS COMPLEMENTARIOS
ELIMINACIÓN DE GAUSS
El método de Gauss permite resolver sistemas lineales de ecuaciones. La idea del
método consiste en efectuar operaciones de filas a la matriz del sistema de forma que el
sistema resultante (que es equivalente al original) tenga la matriz del sistema triangular
superior.
Veremos en primer lugar un ejemplo en el que, haciendo operaciones elementales por
filas haremos ceros debajo de la diagonal principal.
Consideramos el siguiente sistema de tres ecuaciones y tres incógnitas x + 2*y + 3*z =
5, 2*x + y = 1, x + y + 2*z = 4.
Para hacer operaciones elementales en estas ecuaciones podríamos efectuarlas sobre las
filas de la matriz ampliada [A b], pero en este ejemplo, realizaremos las mismas
operaciones sobre la matriz A y sobre el vector b de su formulación matricial.
Definimos la matriz del sistema y el vector término independiente.
A=[1 2 3; 2 1 0; 1 1 2];
b=[5;1;4];
Hacemos ceros en la primera columna debajo del elemento A(1,1) .
A la segunda fila le restamos dos veces la primera
A(2,:)=A(2,:)-2*A(1,:) ;
b(2)=b(2)-2*b(1) ;
% A la tercera fila le restamos la primera
A(3,:)=A(3,:)-A(1,:) ;
b(3)=b(3)-b(1) ;
% Vemos que hemos hecho ceros en la primera columna
disp([A b])
1 2 3 5
0 -3 -6 -9
0 -1 -1 -1
Para hacer cero en A(3,2) debemos restar a la tercera fila un múltiplo de la segunda.
A(3,:)=A(3,:)-(-1/-3)*A(2,:) ;
b(3)=b(3)-(-1/-3)*b(2) ;
% Vemos que hemos hecho ceros debajo de la diagonal, con lo que el sistema
% que resulta es triangular superior.
disp([A b])
1 2 3 5
0 -3 -6 -9
0 0 1 2
Método de Gauss (Programación del método).
Siguiendo la notación dada en clase al explicar el método de Gauss, la variable k
indicará la columna en la que vamos a hacer ceros. La variable i indica la fila en la que
estamos haciendo ceros.
Para simplificar la notación y ahorrar memoria, no usaremos superíndices, llamaremos
A0 a la matriz original del sistema y b0 al término independiente original. La matriz A
y el vector b contendrán los sucesivos sistemas equivalentes, si estamos haciendo ceros
en la columna k, A indicará la matriz con superíndice k.
Dado k, suponemos que ya se han hecho ceros en las columnas 1, ..., k-1 y hacemos
ceros en la columna k en las filas i>=k+1 mediante la operación por filas 'restar a la fila
i la fila k multiplicada por li' donde li es el valor li=A(i,k)/A(k,k) .
El programa ProgGauss.m implementa el método.
Dicho programa incluye las instrucciones tic y toc que sirven para mostrar el tiempo
que emplea Matlab en ejecutar un conjunto de instrucciones. Basta con poner la
instrucción tic antes del conjunto de instrucciones y toc al final. Al ejecutarse la
instrucción toc se muestra el tiempo que emplea Matlab en ejecutar el conjunto de
instrucciones.
Definimos el sistema que queremos resolver.
A0=[1,2,3,2 ; 3,-3,-6,1 ; 2,1,7,0 ; 2,3,2,2];
b0=[12;-10;22;9];
% Inicializamos la matriz A y el vector b en los que efectuaremos las
% operaciones por filas.
A=A0;
b=b0;
n=length(A);
Haremos ceros en la columna k, donde k va desde la primera columna a la última.
for k=1:n
% i va desde la fila k+1 hasta la última.
for i=k+1:n
li= A(i,k)/A(k,k);
% Restamos a la fila i un múltiplo de la fila k.
A(i,:)= A(i,:)-li * A(k,:);
% Efectuamos la misma operación en el vector b.
b(i)=b(i)-li * b(k);
end
% disp('Tras hacer ceros en la columna');
% disp(k)
% disp('queda el sistema equivalente:')
% disp([A b])
end
Una vez transformado el sistema original en uno equivalente pero triangular superior,
un método como el que se vió al principio de esta práctica permite hallar la solución del
sistema.
Podemos comprobar que la solución del sistema triangular A0*x=b0 es solución del
sistema original A*x=b.
x=A0\b0;
A*x-b
ans =
1.0e-015 *

0
0
0
-0.8882
ELIMINACIÓN GAUSSIANA CON PIVOTEO PARCIAL
OBJETIVO MÉTODO
El objetivo del método es encontrar una solución a un sistema de ecuaciones lineales,
basando su solución en un matriz triangular superior, buscando los números mayores
en las columnas de la matriz para colocarlos en la diagonal y así mejorar la calidad de
la solución.
GENERALIDADES
El procedimiento para seguir para la aplicación del método es el siguiente:
Se debe construir launa matriz de coeficientes y el vector con los términos
independientes, correspondientes al sistema, y se crea una matriz llamada la matriz
aumentada
Se busca el número mayor (en valor absoluto) en cada la columna correspondiente a la
etapa y se procede a un cambio de filas para ubicar el mayor elegido en la posición
correspondiente a la etapa.
Una vez ubicado el número mayor, se procede al cálculo de los multiplicadores
correspondientes a la etapa.
Con los multiplicadores hallados en cada etapa, se procede al cálculo de las nuevas
filas de la matriz aumentada.
Una vez se tiene la matriz aumentada en la forma triangular superior, se procede a
realizar una sustitución regresiva, para el cálculo de las variables.
ELIMINACIÓN GAUSSIANA CON PIVOTEO TOTAL
OBJETIVO MÉTODO
El objetivo del método es encontrar una solución a un sistema de ecuaciones lineales,
basando su solución en un matriz triangular superior, buscando los números mayores
(en valor absoluto) en toda la matriz para colocarlos en la diagonal y así mejorar la
calidad de la solución.
GENERALIDADES
El procedimiento para seguir para la aplicación del método es el siguiente:
Se debe construir una matriz de coeficientes y el vector con los términos
independientes, correspondientes al sistema, y se crea una matriz llamada la matriz
aumentada.
Se busca el número mayor (en valor absoluto) en toda la matriz y se procede a un
cambio de filas y columnas para ubicar el mayor elegido en la posición correspondiente
a la etapa.
Una vez ubicado el número mayor, se procede al cálculo de los multiplicadores
correspondientes a la etapa.
Con los multiplicadores hallados en cada etapa, se procede al cálculo de las nuevas
filas de la matriz aumentada.
Una vez se tiene la matriz aumentada en la forma triangular superior, se procede a
realizar una sustitución regresiva, para el cálculo de las variables.
MÉTODO DE ELIMINACIÓN DE GAUSS-JORDAN EN MATRICES
BINARIAS
Hsys = [A | I]
Donde H y Hsys tienen la misma dimensión (n-k,n) e I es una matriz identidad de
dimensión n-k.
Aquí podéis encontrar la función que he encontrado en github. Es una versión
modificada de la función 'rref' de Matlab adaptada para trabajar con matrices en GF (2).
Si hubiera alguna forma más sencilla de hacer esto, ¡estaré encantado de conocerla!
% This is a modified version of matlab's building rref which calculates
% row-reduced echelon form in gf(2). Useful for linear codes.
% Tolerance was removed because yolo, and because all values
% should only be 0 or 1. @benathon
function [A] = g2rref(A)
%G2RREF Reduced row echelon form in gf(2).
% R = RREF(A) produces the reduced row echelon form of A in gf(2).
%
% Class support for input A:
% float: with values 0 or 1
% Copyright 1984-2005 The MathWorks, Inc.
% $Revision: 5.9.4.3 $ $Date: 2006/01/18 21:58:54 $
[m,n] = size(A);
% Loop over the entire matrix.
i = 1;
j = 1;
while (i <= m) && (j <= n)
% Find value and index of largest element in the remainder of column j.
k = find(A(i:m,j),1) + i - 1;
% Swap i-th and k-th rows.
A([i k],j:n) = A([k i],j:n);
% Save the right hand side of the pivot row
aijn = A(i,j:n);
% Column we're looking at
col = A(1:m,j);
% Never Xor the pivot row against itself
col(i) = 0;
% This builds an matrix of bits to flip
flip = col*aijn;
% Xor the right hand side of the pivot row with all the other rows
A(1:m,j:n) = xor( A(1:m,j:n), flip );
i = i + 1;
j = j + 1;
end
PRÁCTICA EN MATLAB

Ejercicio 1
Script

Command Window
Ejercicio 2
Script

Command Window
FINALIDAD DE LA CLASE
Matlab nos permitió poder desarrollar los ejercicios de matrices que se plantearon por el método
de eliminación de gaus de manera correcta y eficaz, también nos permitió ahorrarnos en realizar
planteamiento de manera manual para realizar la respectiva comprobación y así evitándonos un
gran número de pasos que conlleva comúnmente este tipo de problemas.
Se desarrollaron los comandos correspondientes para cada ejercicio, esto respecto a que, en uno
de los ejercicios, daba un error a la hora de ejecutarlo para poder obtener su resolución, por lo
que se planteó un desarrollo similar al segundo ejercicio para así poder llegar a su resolución y
para poder comprobarse su respuesta con el desarrollo manual del material académico
compartido por el docente.
El importante comprobar las respuestas finales de los ejercicios planteados dentro del programa
de Matlab con la resolución manual de los mismos en el material otorgado por parte del
docente, esto es relevante porque nos ayuda a asegurarnos que nuestro código y método está
bien plasmado dentro de nuestro script y que las respuestas obtenidas son las correctas.
También es necesario tener en cuenta que los patrones y los pasos sean desarrollados en orden,
esto debido a que un determinado ejercicio con su respectivo código para obtener su resolución
puede generar distintos tipos de respuestas, así que esto no se debe dejar pasar por alto y
debemos asegurarnos de que no existan errores de signos o espacios innecesarios para evitar
estas falencias o resultados “falsos” al momento de plantear el script.
CLASE1.6: APROXIMACION POLIMOMIAL E INTERPOLACION
En este taller se va a tratar sobre la aproximación polinomial simple e interpolación, donde está
nos indica que la interpolación es de gran importancia para nuestro campo de ingeniería, esto
respecto ya que al realizar consultas de distintas fuentes de información que son presentadas de
forma tabular, es frecuente no hallar el valor que se busca con un punto en la tabla.
Dando que vamos a aprovechar sobre los conceptos que hemos venido aplicando y que hemos
comprendido y aprendido con anterioridad, puesto que nos servirá para poder desarrollar dentro
del programa de Matlab los ejercicios que se plantearán a lo largo del taller, haciendo uso de las
herramientas que nos ofrece para su elaboración y ejecución.
Por otra parte, también aplicaremos el método de polinomios de lagrange, el cual es otro de los
métodos de aproximación polinomial pero que no requiere de resolver un sistema de ecuación
lineal, puesto que los cálculos por de esta metodología se realizan directamente, esto debido a
que cuando el grado de los polinomios es alto se pueden llegar a presentar inconvenientes para
su resolución.

Se pondrá mayor Énfasis en los métodos de aproximación lineal, pero se consideraron


también casos característicos de aproximación no lineal, todos ellos enmarcados en el
método de los mínimos cuadrados que protagoniza el desarrollo del capítulo por ser el
de mayor interés e importancia para la práctica de la ingeniería.
En muchos problemas de ingeniería es necesario trabajar a menudo con conjuntos de
datos experimentales (x1,y1),..., (xN,yN), donde las abscisas {xk} (distintas entre sÌ)
representan la variable independiente, y las ordenadas {yk} la medida realizada.
Interesa entonces determinar la función y = f (x) que mejor se aproxime a los datos,
proceso matemático que se dé- nomina aproximación discreta en consonancia con el
número finito N de puntos (xi,yi) que se utilizan como datos de partida.
En ocasiones la representación gráfica de los datos puede ser fuente de información que
nos permita elegir el tipo de función f que mejor se ajusta a los mismos; pero también
puede ocurrir que, conociendo suficientemente el fenómeno físico en estudio,
dispongamos de un modelo matemático y de la forma de la función f que lo describe, a
falta de mayor concreción en parámetros físicos del modelo o, simplemente, de mayor
precisión en las medidas tomadas por limitaciones instrumentales y humanas.
DATOS COMPLEMENTARIOS
APROXIMACIÓN POLINOMIAL SIMPLE E INTERPOLACIÓN
Una de las mayores ventajas de aproximar información discreta o funciones complejas
con funciones analíticas sencillas, radica en su mayor facilidad de evaluación y
manipulación. Las funciones de aproximación se obtienen por combinaciones lineales
de elementos de familias de funciones denominadas elementales. En general tendrán la
forma:

en donde ai, 0 ≤ i ≤ n, son constantes por determinar y gi(x), 0 ≤ i ≤ n funciones de una


familia particular. Los monomios en x (x 0 , x, x 2 , …) constituyen la familia o grupo
más empleado; sus combinaciones generan aproximaciones del tipo polinomial

El grupo conocido como funciones de Fourier 1, sen x, cos x, sen 2x, cos 2x, …, Al
combinarse linealmente, genera aproximaciones del tipo

El grupo de funciones exponenciales

También puede usarse del modo siguiente

Aproximación polinomial simple


Una forma muy común de resolver este problema es sustituir los puntos (0) y (1) en la
ecuación de la línea recta: p(x) = a0 + a1x, de tal modo que resultan dos ecuaciones con
dos incógnitas que son a0 y a1. Con la solución del sistema se consigue una
aproximación de primer grado, lo que permite efectuar interpolaciones lineales; es decir
se sustituye el punto (0) en la ecuación de la línea recta y se obtiene
56.5 = a0 + 1*a1
y al sustituir el punto (1)
113= a0 + 5*a1
Sistema que al resolverse da
a0 = 4.375 y a1 = 14.125
Por lo tanto, estos valores generan la ecuación
p(x)= 42.375+14.125x
La ecuación resultante puede emplearse para aproximar la temperatura cuando la
presión es conocida. Al sustituir la presión x = 2 atm se obtiene una temperatura de
70.6°C. A este proceso se le conoce como interpolación
Donde los parámetros a0, a1 y a2 se determinan sustituyendo cada uno de los tres
puntos en la ecuación anterior, es decir

Al resolver el sistema se obtiene

De tal modo que la ecuación polinomial queda

Y puede emplearse para aproximar algún valor de la temperatura correspondiente a un


valor de presión. Por ejemplo, si x = 2 atm, entonces

La aproximación a la temperatura “correcta” es obviamente mejor en este caso.


Obsérvese que ahora se ha aproximado la función desconocida [T=f(P)] con un
polinomio de segundo grado (parábola) que pasa por los tres puntos más cercanos al
valor buscado. En general, si se desea aproximar una función con un polinomio de
grado n, se necesitan n+1 puntos, sustituidos en la ecuación polinomial de grado n:

Generan un sistema de n+1 ecuaciones lineales en las incognitas ai, i= 0,1, 2,…n.
Una vez resuelto el sistema se sustituyen los valores de ai en la ecuación con lo cual se
obtiene el polinomio de aproximación polinomial simple. Por otro lado, como se dijo al
principio de este capítulo, puede tenerse una función conocida pero muy complicad,
por ejemplo
La cual conviene, para propósitos prácticos, aproximar con otra función más sencilla,
como polinomio. El procedimiento es generar una tabla de valores mediante la función
original y a partir de dicha tabla aplicar el método descrito arriba.
POLINOMIOS DE LAGRANGE
El método de aproximación polinomial requiere la solución de un sistema de
ecuaciones algebraicas lineales que, cuando el grado del polinomio es alto, puede
presentar inconvenientes. Existen otros métodos de aproximación polinomial en que no
se requiere resolver un sistema de ecuaciones lineales y los cálculos se realizan
directamente, entre éstos se encuentra el de aproximación polinomial de Lagrange.
Se parte nuevamente de una función desconocida f(x) dada en forma tabular y se asume
que un polinomio de primer grado puede escribirse:

donde x1 y x0 son los argumentos de los puntos


conocidos [x0,f(x0)], [x1,f(x1)] y a0 y a1 son dos coeficientes por determinar. Para
encontrar el valor de a0, se hace x = x0 en la ecuación anterior que al despejar da:

y para hallar el valor de a1, se sustituye el valor de x con el de x1, con lo que resulta

de tal modo que al sustituir las ecuaciones nos queda

o en forma más compacta

en donde

de igual manera, un polinomio de segundo grado puede escribirse


de donde x0, x1 y x2 son los argumentos correspondientes a los tres puntos conocidos
[x0,f(x0)], [x1,f(x1)] y [x2,f(x2)]; los valores de a0, a1 y a2 se encuentran sustituyendo
x = x0, x = x1 y x = x2 respectivamente, en la ecuación anterior para obtener:

PRÁCTICA EN MATLAB

Ejercicio 1
Script
Command Window

Ejercicio 2
Script
Command Window

Ejercicio 3
Script
Command Window

FINALIDAD DE LA CLASE
La herramienta de Matlab nos permitió poder realizar los ejercicios requeridos por los métodos
de aproximaciones polinomial, dado que se nos pidió obtener la interpole de la función que se
nos planteó y por medio de los comandos que nos ofrece el programa, nos sirvió de gran ayudar
para desarrollar y poder llegar a los resultados requeridos.
Se especificó el código de cada comando plasmado dentro del script en el programa de Matlab,
respecto a su funcionalidad y a la referencia de cada uno para poder obtener el desarrollo de los
siguientes ejercicios, esto debido a que se utilizó también el método de polinomios de lagrange
por lo que se planteó cada paso correspondiente según su orden especifico.
El necesario tener en cuenta la teoría del tema que conlleva cada uno de los ejercicios y poseer
de los conocimientos necesarios para poder realizar la correcta plasmación o escritura del
código dentro del script del programa de Matlab, puesto que eso nos permite el poder
desarrollar y posterior ejecutar los comandos de manera correcta y poder llegar la respuesta que
nos pide la problemática de cada ejercicio.
El utilizar un lenguaje informático más avanzado, permite el desarrollo más rápido y eficaz para
este tipo de ejercicios, pero a su vez es contraproducente debido a que es sumamente más
común equivocarse con facilidad durante su desarrollo, por lo que es necesario tener en cuenta
que este tipo de códigos nos conlleva a invertir más tiempo de revisión y análisis numérico para
poder evitar errores.

También podría gustarte