6 DataStructures and Arrays

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

● La programación estructurada ayuda a entender mejor un código.

● Hasta ahora se han visto varias maneras de estructurar códigos: Option


Explicit, Dim, Public statement, etc.

● Ahora se analizarán otras formas: arreglos( arrays ) y Archivos ( records ).

Un array es una colección de valores que están referenciados a un solo


nombre de variable.

● El acceso a los valores individuales se hace por medio de indices ( subscripts ).

● Estos deben ser del mismo tipo de variable

30/10/16 1
Por ejemplo, para ecuaciones de varias variables del tipo:

z=3x 1+4x 2 −7x 3

Pueden reescribirse en código VBA :

y=3∗x (1)+4∗x(2)−7∗x(3)

Para trabajar en VBA, se debe declarar este arreglo:

Dim aname (sbs) [As type] [,varname(sbs) [As type ]]

● aname: nombre del arreglo


● sbs: tamaño del arreglo
● type: tipo de datos

30/10/16 2
En el ejemplo, tenemos una ecuación de varias variables; se puede “dimensionar” un arreglo
para trabajar, de esta manera:

Dim x(4) as Double

Cabe anotar, los indices ( subscrips) en VBA comienzan en “0” ( cero). Haciendo una
representación, los sitios de memoria se “verían” así:

Option explicit
X(0) X(1) X(2) X(3) x(4)
Sub Ejemplo
Dim i As Integer
1 2 3
Dim x(4) As Double, y as Double
Y For i = 1 To 3
x(i)= i*i
-44 Next i
Y = 3*x(1) + 4*x(2) - 7*x(3)
MsgBox Y
End Sub

30/10/16 3
Cada sector de memoria es accesado independientemente, haciendo los cálculos
respectivos, designados en el código:

El arreglo debe tener el tamaño suficiente para guardar todos los elementos necesarios,
mientras más grande sean los arreglos, consumen más memoria RAM y además relentizan
el funcionamiento del sistema.

Una aplicación típica en ingeniería, son las distribuciones de temperatura

x 0 2,5 5 7,5 10
T 40 175 245 255 200

30/10/16 4
Una opción para guardar los valores de la tabla y convertirlos de grados Celsius a
Farenheit, puede ser:

Option explicit
Sub TempSimp()
Dim Tc0 As Double, Tc1 As Double, Tc2 As Double
Dim Tc3 As Double, Tc4 As Double
Dim Tf0 As Double, Tf1 As Double, Tf2 As Double
Dim Tf3 As Double, Tf4 As Double
Tc0 = 40: Tc1 = 175: Tc2 = 245:Tc3 = 255:Tc4 =2040
Tf0 = 9/5*Tc0 +32
Tf1 = 9/5*Tc1 +32
Tf2 = 9/5*Tc2 +32
Tf3 = 9/5*Tc3 +32
Tf4 = 9/5*Tc4 +32
End Sub

Si bien, funcionaría para calcular los valores y hacer la operación, es extremadamente


ineficiente en términos de uso de memoria y recursos.

30/10/16 5
ESTRUCTURAS MULTIDIMENSIONALES.

Lenguajes de programación como VBA permiten manejar entidades matemáticas en más


de una dimensión ( vectores, matrices, tensores, etc.).

Un ejemplo es una distribución de temperaturas en una placa plana

Y
100
Filas 95
90
80
70

Columnas X

30/10/16 6
ESTRUCTURAS MULTIDIMENSIONALES.

T(0,0) = 70:T(0,1) = 60: T(0,2) = 50:T(0,3) = 30:T(0,4) = 20


T(1,0) = 80:T(1,1) = 70: T(1,2) = 60:T(1,3) = 50:T(1,4) = 40
T(2,0) = 90:T(2,1) = 80: T(2,2) = 70:T(2,3) = 600:T(2,4) = 50
T(3,0) = 95:T(3,1) = 90: T(3,2) = 80:T(3,3) = 70:T(3,4) = 60
nr = 3
nc = 4
Una forma de cambar todas las temperatura a grados Farenheit es:

For i = 1 to nr
For j = 1 To nc
Tf(i,j)= 9/5 *Tc(i,j) +32
Next i
Next i

30/10/16 7
En muchos campos de la ingeniería, se encuentran sistemas que se puede modelizar
usando sistemas de ecuaciones lineales. Estos pueden ser resueltos por métodos directos
como la Eliminación Gausiana ó Descomposición LU en formas triangulares superiores e
inferiores.

Eliminación Gausiana Básica.

1. Ir a la columna no cero extrema izquierda.

2.Si el primer renglón tiene un cero en esta columna, intercambiarlo con otro que no lo tenga

3.Luego, obtener ceros debajo de este elemento delantero, sumando múltiplos adecuados
del renglón superior a los renglones debajo de él

4.Cubrir el renglón superior y repetir el proceso anterior con lasubmatrizrestante. Repetir


conel resto de los renglones (en este punto la matriz se encuentra en la forma de escalón).

5. Comenzando con el último renglón no cero, avanzar hacia arriba: para cada renglón
obtener un 1 delantero e introducir ceros arriba de este sumando múltiplos correspondientes
a los renglones correspondientes
30/10/16 8
Un tren de separación como se muestra
en la figura, trata un flujo molar de 70 mol/min.
Con los datos mostrados, plantee los balances
de materia y calcule los flujos B, C, B1, B2,D1 y
D2.

Determine la Recuperación ( R ).

R = Componente en corriente salida /


Componente en corriente entrada

Use las herramientas de EXCEL, MINVERSE y


MMULT.

Verifique usando el SOLVER. (GOAL and SEEK)

30/10/16 9
Métodos de Descomposición. [ A][ x ]=[ b]
Los métodos de descomposición (o factorización) se fundamentan en que toda matriz
regular A puede, con las permutaciones adecuadas, descomponerse en el producto
de una matriz triangular inferior L (LOW) y una matriz triangular superior U (UP).

A= L∗U

El Método LU Crout. consiste en descomponer la matriz A en el producto de L


matriz triangular inferior y U matriz triangular superior y U tiene 1's a lo largo de
su diagonal.

30/10/16 10
Ahora usaremos cada una de las matrices calculadas de la siguiente forma:

[ L ] [ d ]=[b]

[][]
d 11 b14 Sustituyendo los datos que
conocemos, obtenemos el
d 21 b 24 vector:
d 31 b34 dij

[ U ] [ x ]=[ d ] Usando los vectores


obtenidos de:
d

[][]
ij
x 11 d 11
x 21 d 21
Obteniendo:
x 31 d 31 x ij
30/10/16 11
El Macro de VBA que usaremos (CROUT) se basa en un procedimiento alternativo: la
reducción de Crout (Perry, 2003)
j−1
c i , j =ai , j −∑ c i , k c k , j para i⩾ j
k =1

[ ]
i −1
1
ci , j= a −∑ c c para i< j
c i , i i , j k =1 i , k k , j

También se transforma el vector del término independiente:

[ ]
i−1
1
d i= b −∑ c c para i< j
c i , i i , j k =1 i , k k , j

La solución se calcula así:


n
x i =d i − ∑
k =i +1
ci ,k x k

30/10/16 12
Considere una placa plana (figura 1.1), en la cual los costados se mantienen a
temperaturas constantes de 0ºC y 100ºC. La distribución de temperatura
bidimensional en estado estacionario al interior de la placa plana viene
determinada por la ecuación la Laplace (si, el mismo de la transformada...) .

La ecuación de conducción de calor requiere aproximaciones para la segunda


derivada con respecto al espacio (x,y) y primera derivada en tiemo. Aproximando
esta ecuación en cada uno de los 9 nodos, marcados con un circulo negro, las
derivadas parciales que aparecen en la ecuación de Laplace son:

30/10/16 13
30/10/16 14
Utilice el algoritmo de CROUT ( PNMsuit ) para solucionar el sistema de
ecuaciones lineales y aproximar la distribución de temperatura en la placa
30/10/16 plana, grafíque en (x,y) la solución. 15
Trasladamos todo el sistema al libro de EXCEL.
30/10/16 16
Se invoca la lista de Macros
disponibles en PNMsuit.

30/10/16 17
Se ejecuta el método CROUT
El Macro solicita delimitar el área de celdas que contiene los términos
correspondientes a los coeficientes de las variables.

30/10/16 18
30/10/16 Ahora el Macro solicita delimitar la celdas que contienen los términos 19
independientes.
30/10/16
Ahora hay que delimitar las celdas que contendrán el vector solución. 20
SOLUCIÓN DEL SISTEMA

Correlación espacial de los datos


( I de Moran)
30/10/16 21
ALGORITMO DE THOMAS
● El algoritmo de Thomas es una manera eficiente de solucionar sistemas lineales
caracterizados por presentar una forma de matriz tridiagonal.

● Se basa en la descomposición LU en el que el sistema de matriz Ax = b, se reescribe como


LUx = b, donde L es una matriz triangular inferior y U es una matriz triangular superior.

● El sistema puede ser resuelto de manera eficiente resolviendo primero L ρ=b para luego
solucionar Ux =ρ siendo x el vector solución.

● En general, hay dos pasos; en el primero se toma la matriz A en dos matrices L y U,


resolviendo primero L ρ=b y reemplazando hacia arriba y luego resolviendo Ux =ρ

30/10/16 22
Ax=b
ALGORITMO DE THOMAS
Estas matrices aparecen también muy habitualmente, por ejemplo, al interpolar por splines o al
resolver problemas de valores de contorno para ecuaciones diferenciales ordinarias.
Se usa para sistemas grandes, de 1000 o más ecuaciones, ya que no usa memoria para
guardar los elementos de las matrices que son ceros.
ALGORITMO
● Leer los vectores : ai , bi , c i , r i

● Para k = 1: n-1 haga

( )
a
b k+1 =b k +1 − k +1 c k
bk

r k+1=r k +1− ( )
a k+1
bk
rk

x n= ( )
rn
bn
● Para k = n-1 : 1 haga
r k −c k x k +1
30/10/16 xk = 23
bk
ALGORITMO DE THOMAS

30/10/16 24

También podría gustarte