sábado, 12 de octubre de 2019

Análisis Numérico

Del Libro: Programación Visual Basic (VBA) para Excel y Análisis Numérico Autores: M.Sc. Walter Mora F., M.Sc. José Luis Espinoza B. Escuela de Matemática. Instituto Tecnológico de Costa Rica. Octubre 2005. Versión 0.1. Estos son los programas que pude construir mientras leía el libro y realizaba las actividades que asignaba el mismo.





Debe descargarse el modulo de Excel para poder escribir las ecuaciones y graficar las funciones en 2D y 3D. el modulo de llama: clsMathParser

Como es visual basic para aplicaciones debe funcionar con MicroSoft Excel. Preferiblemente 2007 o superior. No funciona con Calc u otra hoja de calculo de software libre.


Para mas detalles y descargar el archivo con los códigos fuente se tiene una publicación en la pagina: www.lawebdelprogramdor.com

https://www.lawebdelprogramador.com/codigo/Visual-Basic-para-Aplicaciones/2832-Analisis-Numerico.html

Sub Pascal()
   ' Macro Pascal
      ' Lectura de la cantidad de niveles:
   n = Cells(1, 5)
   ' Llenar unos:
   For i = 1 To n
      Cells(i, 1) = 1
      Cells(i, i) = 1
   Next i
   ' Llenar el resto:
   If n > 2 Then
      For i = 3 To n
         For j = 2 To i - 1
            Cells(i, j) = Cells(i - 1, j) + Cells(i - 1, j - 1)
         Next j
      Next i
   End If
End Sub

Sub Borrar()
   ' Borrar
   n = Cells(1, 5).Value
   For i = 1 To n
      For j = 1 To i
         Cells(i, j).Value = Null
      Next j
   Next i
End Sub

Sub G_2D()
   Dim n As Integer
   Dim h As Double
   Dim formula As String
   Dim graf As Chart
   Dim chartsTemp As ChartObjects 'contador de charts (gr¶aficos) para eliminar el anterior
   Dim OK As Boolean
   Dim Fun As New clsMathParser
   n = Cells(6, 5)
   a = Cells(6, 3)
   b = Cells(6, 4)
   h = (b - a) / n
   formula = Cells(2, 3)
   OK = Fun.StoreExpression(formula) 'lectura de la f¶ormula
   If Not OK Then GoTo Error_Handler
      For i = 0 To n
         Cells(6 + i, 1) = a + i * h
         Cells(6 + i, 2) = Fun.Eval1(a + i * h)
   Next i
   '----------------------- eliminar gr¶aficos anteriores-------------
   Set chartsTemp = ActiveSheet.ChartObjects
   If chartsTemp.Count > 0 Then
      chartsTemp(chartsTemp.Count).Delete
   End If
'-----------------------------------------------------------------
   datos = Range(Cells(6, 1), Cells(6 + n, 2)).Address 'rango a graficar
Set graf = Charts.Add 'gr¶afico y sus carater¶³sticas
With graf
   .Name = "Gr¶afico"
   .ChartType = xlXYScatterSmoothNoMarkers
   .SetSourceData Source:=Sheets("Graficas en 2D").Range(datos), PlotBy:=xlColumns
   .Location Where:=xlLocationAsObject, Name:="Graficas en 2D"
End With
'---------------------------------------------------------------
If Err Then GoTo Error_Handler
Error_Handler: Cells(1, 1) = Fun.ErrorDescription 'imprimir mensaje error
'---------------------------------------------------------------
End Sub

Sub G3D()
' Grafica en 3D
   Dim xmin, xmax, ymin, ymax, hx, hy, xi, yi As Double
   Dim n As Integer
   Dim fxy As String 'funci¶on f(x,y)
   Dim graf As Chart
   Dim OK As Boolean
   Dim Fun As New clsMathParser ' as¶³ se llama el m¶odulo de clase aqu¶³
   fxy = Cells(2, 2)
   xmin = Cells(5, 3)
   xmax = Cells(5, 4)
   ymin = Cells(5, 5)
   ymax = Cells(5, 6)
   n = Cells(3, 2) ' n¶umero de puntos n x n
   hx = (xmax - xmin) / n
   hy = (ymax - ymin) / n
   If hx > 0 And hy > 0 And n > 0 Then
      For i = 0 To n
         xi = xmin + i * hx
         Cells(7, 2 + i) = xi
         For j = 0 To n
            yi = ymin + j * hy
            Cells(8 + j, 1) = yi
            OK = Fun.StoreExpression(fxy) 'formula actual es 'f(x,y)'
            If Not OK Then GoTo Error_Handler
               Fun.Variable("x") = xi
               Fun.Variable("y") = yi
            Cells(8 + j, 2 + i) = Fun.Eval() 'retorna f(xa,ya)
         Next j
      Next i
   End If
'----------------------- eliminar gr¶aficos anteriores-------------
Set chartsTemp = ActiveSheet.ChartObjects
If chartsTemp.Count > 0 Then
chartsTemp(chartsTemp.Count).Delete
End If
'-----------------------------------------------------------------
datos = Range(Cells(7, 1), Cells(7 + n, n + 2)).Address 'rango a graficar
Range(datos).Select
Selection.NumberFormat = ";;;" 'ocular celdas
Charts.Add
ActiveChart.ChartType = xlSurface
ActiveChart.SetSourceData Source:=Sheets("Graficas en 3D").Range(datos), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graficas en 3D"
'---------------------------------------------------------------
If Err Then GoTo Error_Handler
Error_Handler: Cells(1, 1) = Fun.ErrorDescription 'enviar un mensaje de error
'---------------------------------------------------------------
End Sub

Sub Romberg()
   ' Integración de Romber
   Dim R() As Double
   Dim a, b, h, suma As Double
   Dim n As Integer
   Dim formula As String
   Dim OK As Boolean
   Dim Fun As New clsMathParser ' as¶³ se llama el m¶odulo de clase aqu¶³
   formula = Cells(1, 2)
   a = Cells(2, 3)
   b = Cells(2, 4)
   n = Cells(2, 5)
   ReDim R(n, n)
   h = b - a
   OK = Fun.StoreExpression(formula) 'formula actual es 'formula'
   If Not OK Then GoTo Error_Handler
   '-------------------------------------------------------------------
   For i = 1 To 20 'limpiar
      For j = 1 To 20
         Cells(2 + i, j) = Null
      Next j
   Next i
   '-------------------------------------------------------------------
   R(1, 1) = h / 2 * (Fun.Eval1(a) + Fun.Eval1(b))
   'paso3 de algoritmo de Romberg
   For i = 1 To n
      'paso 4
      suma = 0
      For k = 1 To 2 ^ (i - 1)
         suma = suma + Fun.Eval1(a + h * (k - 0.5)) 'eval¶ua en la f¶ormula actual
      Next k
      R(2, 1) = 0.5 * (R(1, 1) + h * suma)
      'paso5
      For j = 2 To i
         R(2, j) = R(2, j - 1) + (R(2, j - 1) - R(1, j - 1)) / (4 ^ (j - 1) - 1)
      Next j
      'paso 6 salida R(2,j)
      For j = 1 To i
         Cells(3 + i - 1, j) = R(2, j) 'columnas 2,3,...n
      Next j
      'paso 7
      h = h / 2
      'paso 8
      For j = 1 To i
          R(1, j) = R(2, j)
      Next j
   Next i
   '---------------------------------------------------------------
   If Err Then GoTo Error_Handler
Error_Handler:        Cells(1, 1) = Fun.ErrorDescription
   '---------------------------------------------------------------
End Sub


miércoles, 29 de octubre de 2014

Liberada Última Versión de CSPro

El Sistema de Procesamiento de Censos y Encuestas (CSPro) es un paquete de software de dominio público (Gratuito más no Software libre), utilizado por cientos de organizaciones entre ellas el INE de Venezuela y decenas de miles de personas para inclusión, edición, tabulación y difusión de datos de censos y encuestas. CSPro está diseñado para ser tan fácil de usar como sea posible, pero lo suficientemente potente como para manejar las aplicaciones más complejas. Puede ser utilizado por una amplia gama de personas, desde los asistentes de personal no técnico a los demógrafos de alto nivel y los programadores.

CsPro es el Software utilizado por el INE de Venezuela para procesar los datos del CENSO 2011 y la ENDEVE 2010. Permite crear un diccionario flexible para establecer fácilmente la operacionalizacion de las variables en estudio, ya sea para cargar los datos o para procesarlos. Contiene un poderoso lenguaje de programación que permite la imputación de datos censales por los distintos métodos utilizados como "El vecino más cercano" por ejemplo. La tabulación de los datos es bastante sencilla, con solo hacer clic en la variable y arrastrarla al tabulado se crea la tabla de frecuencia muy parecida a las tablas dinámica en Excel.

CSPro se utiliza principalmente para la entrada de datos, edición, tabulación y difusión. Algunas organizaciones utilizan CSPro en conjunto con otros paquetes estadísticos, pero CSPro también se puede utilizar como el único programa para el procesamiento de los datos del censo o encuesta. Por ejemplo, una organización puede recopilar datos mediante computadoras tablet o PDA, con el software CSPro o utilizar la herramienta de entrada de datos de los resultados clave de los cuestionarios en papel. Después de la recogida de datos, se puede editar e imputar datos en antes de preparar los cuadros analíticos apropiados con la herramienta de tabulación. Por último, la organización puede utilizar CSPro para generar productos de difusión de datos independientes basados en web.

Acá mostramos un ejemplo de programa de Imputación en CSPro:


Por ultimo dejamos algunos links:

Para descargar el instalador (.exe):
Nota: Solo hay que llenar una pequeña encuesta que servira para recibir actualizaciones en el futuro:


Instalador de CSPro

Para descargar videos

Videos

Para descargar los manuales (en pdf):

Documentación (Manuales)


lunes, 27 de octubre de 2014

Inauguración Académica

Semana de la Estadística y el Acuariado

Semana de la Estadística y el Actuariado

Felicitaciones a todos los Estadísticos en Venezuela y el Mundo!!! La escuela de estadística y ciencias actuariales de la UCV, celebra la semana de la estadística y el actuariado. Estadística al día se una a esta celebración divulgando en la web dicho evento para nuestros lectores y seguidores.
Para el día de hoy tenemos:
Más información visite en Twitter: @SEA_EECA

miércoles, 6 de agosto de 2014

Introducción al Muestreo

Este es un pequeño documento el cual fue construido como resumen de estudio para presentar el primer parcial de la materia Muestreo I, en la Escuela de Estadística y Ciencias Actuariales. Espero les sea útil a los lectores y seguidores de Estadística al día Saludos.

Nota: No es un libro de texto, solo es un compendio de distintos libros, el cual fue redactado respetando los nombres y la autoría de los respectivos autores consultados. El documento puede ser descargado en formato PDF del siguiente link:

http://www.mediafire.com/view/v5d91ab5u53whty/Res_Muestreo.pdf



lunes, 4 de agosto de 2014

Invitación


Se invita a todos nuestros lectores y seguidores al próximo evento de Matemáticas en Venezuela.

XXVII Escuela Venezolana de Matemáticas EMALCA Venezuela
Facultad de Ciencias - Universidad de Los Andes
Mérida, 31 de agosto al 5 de septiembre de 2014

Donde se discutirán temas como: 
1.- Introducción a los Anillos Finitos: Computación y Aplicaciones.
2.- Espacios de Lebesgue con exponente Variable
3.- Conjuntos de Sidón
4.- Introducción a la Mecánica de fluidos y Modelización.

Descarque el afiche y el triptico de aca....

http://www.mediafire.com/view/2f14bw52z51lfpc/triptico_dorso_EVM.pdf

http://www.mediafire.com/view/s6hm49c1a7raooa/Afiche_xxvii_escuela_venezolana_de_matematicas.pdf

http://www.mediafire.com/view/t09jb978dy1h1rj/triptico_frente_EVM.pdf

Es una buena oportunidad de fortalecer el area cientifica en Venezuela... y hacer turismo...

lunes, 2 de julio de 2012

USO DEL SOFTWARE WINQSB EN EL PLANTEAMIENTO Y SOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN LINEAL


          La toma de decisiones en los distintos niveles de las organizaciones cada vez es de mayor complejidad, dadas las crecientes restricciones de disponibilidad de todo tipo de recursos. La academia de las Ciencias se ha preocupado de investigar y proporcionar herramientas que faciliten a los gerentes el abordaje de estos procesos, teniendo en cuenta que no es recomendable asumir un curso de acción confiados únicamente en la intuición. La llamada administración científica aboga por el uso de los métodos cuantitativos en la toma de decisiones empresariales; de ahí que en los planes de estudio correspondientes a la formación de profesionales de la ingeniería industrial, la administración en sus diferentes matices, las finanzas y sobre todo en estadística, aunque también en muchas más disciplinas, figuren asignaturas que pretendan que los egresados de estas titulaciones se apropien de un cúmulo de herramientas que les facilite el análisis y la toma de decisiones en situaciones complejas.

            WinQSB (Quantitative System Business), podría decirse que es el software más utilizado en la actualidad por estudiantes de pregrados y postgrados que incluyen en su plan de estudios asignaturas como la investigación de operaciones o temas relacionados. Sin embargo no existe en nuestro medio una guía en español para el docente y el estudiante, que permita el aprovechamiento máximo de los módulos que contempla la aplicación.

            Como un aporte al curso de Investigación de Operaciones I de la carrera de Estadística en la Universidad Central de Venezuela y en cumplimiento de los objetivos de estudio para este semestre (Semestre I-2012), nos dimos a la tarea de investigar y presentar este pequeño manual, basados en las experiencia de clase, y haciendo énfasis en la resolución de problemas de Programación Lineal, para describir brevemente, las bondades de este Software en este tema en particular.



Una vez seleccionado el módulo con el cual se desee trabajar, aparecerá una ventana cuyas características iníciales serán similares para todos los módulos del WinQSB.
Al acceder a cualquiera de los módulos se abre una ventana en la que debemos elegir entre crear un nuevo problema (File >New Problem) o leer uno ya creado (File > Load Problem). Las extensiones de los ficheros con los modelos las pone el programa por defecto, por lo tanto solamente debemos preocuparnos del nombre, que no deberá tener más de 8 caracteres.
Todos los módulos del programa tienen en común los siguientes menús desplegables:

  • File: incluye las opciones típicas de este tipo de menús en Windows, es decir, permite crear y salvar ficheros con nuevos problemas, leer otros ya existentes o imprimirlos.
  • Edit: incluye las utilidades típicas para editar problemas, copiar, pegar, cortar o deshacer cambios. También permite cambiar los nombres de los problemas, las variables, y las restricciones. Facilita la eliminación o adición de variables y/o restricciones, y permite cambiar el sentido de la optimización.
  • Format: incluye las opciones necesarias para cambiar la apariencia de las ventanas, colores, fuentes, alineación, anchura de celdas, etc.
  • Solve and Analyze: esta opción incluye al menos dos comandos, uno para resolver el problema y otro para resolverlo siguiendo los pasos del algoritmo.
  • Results: incluye las opciones para ver las soluciones del problema y realizar si procede distintos análisis de la misma.
  • Utilities: este menú permite acceder a una calculadora, a un reloj y a un editor de gráficas sencillas.
  • Window: permite navegar por las distintas ventanas que van apareciendo al operar con el programa.
  • WinQSB: incluye las opciones necesarias para acceder a otro módulo del programa.
  • Help: permite acceder a la ayuda on-line sobre la utilización del programa o las técnicas utilizadas para resolver los distintos modelos. Proporciona información sobre cada una de las ventanas en la que nos encontremos.




La parte superior de la ventana llamada TITULO indica el nombre del módulo seleccionado, en este caso se optó por mostrar el módulo de Programación Lineal y Entera (Linear and integer programming) que es el objeto de nuestro estudio. Debajo encontramos los menú Archivo (File) y Ayuda (Help). El menú archivo comprende las siguientes opciones:

 
  • Nuevo problema (New Problem): Permite introducir un nuevo problema.
  • Abrir Problema (Load Problem): Abre un problema que se ha guardado con anterioridad.
  • Salir (Exit): Sale del programa.
  •  
    • Contenido (Contents): Contenido completo de la ayuda sobre el módulo seleccionado.
    • Buscar ayuda en... (Search for Help on...): Búsqueda de ayuda mediante palabras claves.
    • Cómo usar la ayuda (How to Use Help): Indicaciones (puede ser en español) de como se utiliza la ayuda para sacarle el máximo provecho.
    • Ayuda sobre la ventana actual (Help on Current Windows): Interesante opción que muestra la ayuda sólo sobre los elementos que aparecen actualmente en la ventana.
    • Acerca de... (About LP-ILP): Muestra datos sobre la creación del programa e información sobre la licencia.

    El programa también cuenta con una barra de herramientas que ayuda de forma significativa la selección de las opciones más usadas.

    El primer botón permite la creación de un nuevo problema, el segundo abre un problema existente, mientras que el tercero, permite salir del programa.
    En el centro de la venta se encuentra un espacio vacío el cual llamaremos ZONA DE TRABAJO, donde se procederá a alimentar con información al programa.

    PROGRAMACIÓN LINEAL Y ENTERA
    CREANDO UN NUEVO PROBLEMA DE PROGRAMACIÓN LINEAL O ENTERA

    La opción Nuevo Problema (New Problem) genera una plantilla en el cual se introducirán las características de nuestro problema:



     
     



    A continuación se describirán cada una de las casillas de esta ventana:
  • Título del problema (Problem Title): Se escribe el título con que identificamos el problema.
  • Número de variables (Number of Variables): Se escribe la cantidad de variables con que cuenta el sistema en el modelo original.
  • Número de restricciones (Number of Constraints): Se anotan la cantidad de restricciones con que cuenta el modelo (no se debe contar la restricción de no negatividad).
  • Objetivo (Objective Criterion): Los problemas de programación lineal y entera se clasifican en dos: problemas de Maximización (Maximization) y Minimización (Minimization).
  • Formato de entrada de datos (Data Entry Format): Permite elegir entre dos plantillas distintas para introducir los datos del modelo. La primera alternativa se asemeja a una hoja de calcula, mientras que la segunda, es una plantilla diseñada especialmente para este fin.
  • Tipo de variable (Default Variable Type): En esta parte se indica las características del modelo:
·  Continuas no negativas (Nonnegative continuous): Indica que el modelo lo componen variables continuas no negativas (iguales o mayores a cero).
·  Enteras no negativas (Nonnegative Integer): Variables enteras no negativas.
·  Binarias (Binary): Variables cuyo valor solo serán 0 o 1.
·  Sin asignar / Irrestrictas (Unsigned/unrestricted): Variables irrestrictas.

INGRESANDO EL MODELO
Si se escogió por la plantilla tipo hoja de cálculo (Spreadsheet Matrix Form), se mostrará una nueva ventana dentro de la ZONA DE TRABAJO, la cual servirá para introducir el modelo matemático.




 
 










La primera fila (Variable -->) corresponde a los encabezados de las variables (en gris) definidas automáticamente por el sistema como X1, X2 y X3, seguido por el operador de relación (Direction) y la solución de las restricciones o Lado de la mano derecha (Right Hand Side -R. H. S). El nombre de las variables se puede cambiar accediendo al submenú Nombre de variables (Variables Names) del menú Editar (Edit).





La segunda fila (Maximize) permite introducir los coeficientes de la función objetivo. Luego aparecen una serie de filas identificadas por la letra C y un consecutivo, las cuales corresponden a la cantidad de restricciones con que cuenta el modelo:




 
 





Por último aparecen tres filas donde definimos el valor mínimo aceptado por cada variable (Lower Bound), el valor máximo (Upper Bound) y el tipo de variable (Variable Type). En el caso del valor máximo, M significa que la variable podrá recibir valores muy grandes (tendientes a infinito).

RESOLVIENDO UN PROBLEMA

Cuando haya terminado de ingresar el modelo en la plantilla, podrá utilizar las herramientas que provee el menú Resolver y Analizar (Solve and Analyze). Este menú cuenta con las siguientes opciones:




 
 










 
  • Resolver el problema (Solve the Problem): Resuelve el problema mediante el método Simplex Primal. Muestra la solución final completa.
  • Resolver y mostrar los pasos (Solve and Display Steps): Muestra cada uno de los pasos o las interacciones realizadas por el Simplex hasta llegar a la solución óptima.
  • Método Gráfico (Graphic Method): Resuelve el problema de programación lineal mediante el método gráfico (para problemas que trabajan con dos variables).

Seleccionamos la primera opción del menú Resolver y Analizar (Solve and Analyze), donde se mostrará una pequeña ventana con el mensaje “El problema ha sido resuelto. La solución óptima ha sido lograda”.
Pulsamos el botón ACEPTAR y automáticamente el programa generará la solución optima.



 
 










Esta matriz presenta suficiente información sobre el modelo resuelto. La primera parte (Solution Summary) corresponde al análisis de las variables definidas (X1, X2 y X3).
La columna Valores de la solución (Solution Value) presenta los valores óptimos encontrados. En este ejemplo se tiene que X1 es 0 unidades, X2 es 105,4795 unidades y X3 es 243,8356 unidades. 
La columna Costo o Utilidad Unitaria (Unit Cost or Profit) muestra los coeficientes de la función objetivo para cada variable.
La columna Contribución Total (Total Contribution) representa el costo o utilidad generado por cada variable. Por ejemplo, si el valor de la variable X2 es 105,4795 unidades y la utilidad unitaria es $210, el beneficio total resultará de la multiplicación de ambos valores dando como resultado $22.150,69. Justo debajo de la última contribución aparece el valor de Z óptimo ($53.849,32).
La columna Costo Reducido (Reduced Cost) identifica el costo que genera incrementar una unidad para cada variable no básica. La siguiente columna llamada Estatus de la Variable (Basis Status) muestra si una variable es básica (Basic) o no (at bound).
La siguiente parte de la matriz final (Constraint Summary), presenta las variables de holgura del sistema (C1, C2, C3).
La columna Lado de la mano derecha (Left Hand Side) muestra el valor alcanzado al reemplazar los valores de X1, X2 y X3 en cada restricción (recuerde que cada restricción se identifica con su variable de holgura o exceso).
Las dos columnas siguientes (Direction y Right Hand Side) muestran las especificaciones dadas a las restricciones en cuanto al operador de relación (≤) y los valores originales de las restricciones (3.300, 3.500 y 2.900).
La columna Déficit o Superávit (Slack or Surplus) muestran los valores de las variables de holgura y la columna Precios Sombras (Shadow Price) corresponde a los precios sombras; cuánto se estaría dispuesto a pagar por una unidad adicional de cada recurso.
RESOLVIENDO EL MODELO PASO A PASO
Regrese nuevamente a la plantilla correspondiente al modelo inicial (sin  solucionar). Procederemos a marcar la opción Resolver y mostrar los pasos (Solve and Display Steps). La primera tabla corresponde a la tabla inicial del Simplex:




 
 






WINQSB cuenta con opciones de navegación para pasar de una tabla a otra (este menú se llama Simplex Iteration) hasta encontrar la solución óptima:



 
 







Al pulsar sobre la opción Próxima Interacción (Next Iteration) se avanza a la siguiente tabla del Simplex:


 


            La opción Escoger variable de entrada (Choose Entering Variable) permite seleccionar la variable que entra al sistema de forma manual.
Debe pulsar sobre la variable no básica que desee que entre (en este caso se muestra a X1, X3 y C2 como no básicas). Para mostrar la última tabla del Simplex directamente podrá optar por seleccionar la opción llamada Ir a la última tabla (Go To The Last Tableau). La última opción Nonstop to Finish muestra el resultado final completo (junto al análisis de sensibilidad).
  • Para descargar el programa y el material solo haga click en los siguientes links: