Está en la página 1de 5

Universidad Tecnológica de Panamá

Centro Regional de Chiriquí

Facultad de Ingeniería Civil

Asignatura: Soluciones Numéricas En Ingeniería


Tarea: Eliminación Gaussiana

Estudiante: James Joel Morales Arauz


Cedula: 4-818-611
Profesora: Mariluz Centella
0079
Fecha: 21 de septiembre de 2023
Problema 1:

PROBLEMA PARA RESOLVER.

UN INGENIERO CIVIL REQUIERE 4800 METROS CUBICOS DE ARENA, 5810 DE


GRAVA FINA, Y 5690 DE GRAVA GRUESA PARA LA CONSTRUCCION DE UN
PROYECTO. LA EMPRESA TIENE 3 CANTERAS DE DONDE OBTENER ESTOS
MATERIALES. LA COMPOSICIÓN DE CADA CANTERA ES LA SIGUIENTE: EN %

CANTERA 1: 52 DE ARENA, 30 DE GRAVA FINA Y 18 DE GRAVA GRUESA

CANTERA 2: 20 DE ARENA, 50 DE GRAVA FINA Y 30 DE GRAVA GRUESA

CANTERA 3: 25 DE ARENA, 20 DE GRAVA FINA Y 55 DE GRAVA GRUESA.

DETERMINE ¿CUÁNTOS CÚBICOS SE DEBE TOMAR DE CADA CANTERA, PARA


CUMPLIR CON LAS NECESIDADES DE ESTE INGENIERO??

Desarrollo

A continuación los algoritmos……..


Imports System

Module Program
Sub Main()
' Coeficientes de las ecuaciones
Dim coefficients(2, 2) As Double
coefficients(0, 0) = 0.52
coefficients(0, 1) = 0.2
coefficients(0, 2) = 0.25
coefficients(1, 0) = 0.3
coefficients(1, 1) = 0.5
coefficients(1, 2) = 0.2
coefficients(2, 0) = 0.18
coefficients(2, 1) = 0.3
coefficients(2, 2) = 0.55

' Cantidades requeridas de arena, grava fina y grava gruesa


Dim required_quantities(2) As Double
required_quantities(0) = 4800
required_quantities(1) = 5810
required_quantities(2) = 5690

' Calcular la matriz inversa de coefficients


Dim inverse_coefficients(2, 2) As Double
InvertMatrix(coefficients, inverse_coefficients)

' Calcular las cantidades requeridas


Dim solutions(2) As Double
For i As Integer = 0 To 2
For j As Integer = 0 To 2
solutions(i) += inverse_coefficients(i, j) * required_quantities(j)
Next
Next

' Imprimir las soluciones en la consola con redondeo


Console.WriteLine($"Arena = {solutions(0)} metros cúbicos")
Console.WriteLine($"Grava Fina = {solutions(1)} metros cúbicos")
Console.WriteLine($"Grava Gruesa = {solutions(2)} metros cúbicos")
End Sub

' Función para calcular la matriz inversa


Sub InvertMatrix(ByRef A(,) As Double, ByRef result(,) As Double)
Dim n As Integer = A.GetLength(0)
Dim augmented(,) As Double = New Double(n - 1, 2 * n - 1) {}

' Crear una matriz aumentada [A|I]


For i As Integer = 0 To n - 1
For j As Integer = 0 To n - 1
augmented(i, j) = A(i, j)
augmented(i, j + n) = If(i = j, 1.0, 0.0)
Next
Next

' Aplicar eliminación gaussiana para obtener [I|A^-1]


For i As Integer = 0 To n - 1
Dim pivot As Double = augmented(i, i)
For j As Integer = 0 To 2 * n - 1
augmented(i, j) /= pivot
Next
For k As Integer = 0 To n - 1
If k <> i Then
Dim factor As Double = augmented(k, i)
For j As Integer = 0 To 2 * n - 1
augmented(k, j) -= factor * augmented(i, j)
Next
End If
Next
Next

' Extraer la matriz inversa de la matriz aumentada


For i As Integer = 0 To n - 1
For j As Integer = 0 To n - 1
result(i, j) = augmented(i, j + n)
Next
Next
End Sub
End Module
CONCLUSION

Como una pequeña conclusión tengo que, para abordar con este problema

del ingeniero, use el lenguaje de programación Visual Basic para asi

desarrollar el software. Logre la creación de las estructuras de los datos

necesarios, hasta incluyendo matrices para representar las cantidades

requeridas. Las indicaciones sobre la tarea implementan un método

especifico de eliminación gaussiana para resolver el sistema de

ecuaciones de manera eficiente.

También podría gustarte