0 calificaciones0% encontró este documento útil (0 votos)
40 vistas3 páginas
Este código en Visual Basic utiliza el método de bisección para encontrar las raíces de una función dada en un intervalo especificado. Primero solicita los parámetros de entrada y establece la tabla en Excel. Luego, calcula iterativamente un punto medio y evalúa la función hasta que se cumpla el criterio de parada o se agoten las iteraciones permitidas, mostrando el resultado final.
Este código en Visual Basic utiliza el método de bisección para encontrar las raíces de una función dada en un intervalo especificado. Primero solicita los parámetros de entrada y establece la tabla en Excel. Luego, calcula iterativamente un punto medio y evalúa la función hasta que se cumpla el criterio de parada o se agoten las iteraciones permitidas, mostrando el resultado final.
Este código en Visual Basic utiliza el método de bisección para encontrar las raíces de una función dada en un intervalo especificado. Primero solicita los parámetros de entrada y establece la tabla en Excel. Luego, calcula iterativamente un punto medio y evalúa la función hasta que se cumpla el criterio de parada o se agoten las iteraciones permitidas, mostrando el resultado final.
Sub Bisección() Range("A1:G100").Select 'Estos dos comandos permiten borrar los datos que halla en la hoja de Excel' Selection.ClearContents Cells(1, 1) = ("ITERACIONES") 'Esta sentencia permite asignar a una celda un nombre, en este caso a la celda (1,1) se le da el nomb Iteración' Cells(1, 2) = ("FUNCIÓN") Cells(1, 3) = ("Xo") Cells(1, 4) = ("X1") Cells(1, 5) = ("Xm") Cells(1, 6) = ("Ym") Cells(1, 7) = ("ERROR") Range("A1:G1").Font.Bold = True 'La propiedad Font.Bold pone en negrita las celdas desde A1 a G1' Columns("A").ColumnWidth = 12 'La propiedad ColumnWidth permite asiganrle el ancho deseado a una columna' Columns("B").ColumnWidth = 33 Columns("C").ColumnWidth = 6 Columns("D").ColumnWidth = 6 Columns("E").ColumnWidth = 6 Columns("F").ColumnWidth = 6 Columns("G").ColumnWidth = 8 Dim iteraciones As Double, Xo As Double, X1 As Double, Tolerancia As Double, Yo As Double, Y1 As Double 'El Double permite usar toda la capacidad del computador' iteraciones = InputBox("INGRESE EL NÚMERO DE ITERACIONES") 'Inputbox permite que el usuario ingrese datos ' Func = InputBox("INGRESE LA FUNCIÓN") Cells(2, 2) = Func 'Celda donde debe ser almacenado la función ingresada' Xo = InputBox("INGRESE LIMITE INFERIOR") Cells(2, 3) = Xo X1 = InputBox("INGRESE LIMITE SUPERIOR") Cells(2, 4) = X1 Tol = Val(InputBox("INGRESE LA TOLERANCIA DESEADA")) Yo = Func x = Xo 'Esto se hace para que el valor inicial sea reemplazado en la función y por tanto para que pueda ser evaluada' Yo = (Exp(-x ^ 2 + 2) - x * Sin(2 * x + 3) + 1) 'Función evaluada' y = X1 Y1 = (Exp(-y ^ 2 + 2) - y * Sin(2 * y + 3) + 1) If Yo = 0 Then MsgBox ("Xo (" & Xo & ") ES UNA RAÍZ") '" & variable&" pemite mostrar el valor asignado a la variable ' Else If Y1 = 0 Then 'If ejecuta las ordenes que se le dan mientras estas sean verdaderas, en este caso miramos si la función evaluada es u raíz' MsgBox ("X1 (" & X1 & ") ES UNA RAÍZ") Else If Yo * Y1 > 0 Then 'Con esta instrucción se puede saber si la función tiene algun cambio de signo en el intervalo para saber si hay un MsgBox ("NO EXISTE LA RAÍZ") Else Xm = (Xo + X1) / 2 'Con esta instrucciòn se reduce el tamaño del intervalo inicial en el cual se buscará la raíz, hallando su punto me Ym = 2 * Xm - 186 'Se evalua la función inicial con el nuevo punto medio (Xm) hallado en el paso anterior' E = Tol + 1 'Condición que asegura que el programa se ejecute mientras se cumplan las condiciones ' Cont = 1 Range("A" & Cont + 1) = Cont 'Esta instrucción ubica en la columna A de la hoja de Excel la iteración que se acaba de realizar' Range("E" & Cont + 1) = Xm Range("F" & Cont + 1) = Ym While Ym <> 0 And E > Tol And Cont < iteraciones 'La instrucción While permite ejecutar todas las ordenes asignadas siempre y cuan estas seas verdaderas' Aux = Xm 'Aux(Auxiliar) permite almacenar el valor de un variable que se necesitará luego' If Yo * Ym < 0 And X1 = Xm And Y1 = Ym Then Xo = Xm 'Con las cuatro instrucciones siguientes se busca establecer un nuevo Xo o X1 de acuerdo al lado del intervalo donde se encuentre la raíz' Yo = Ym 'La raíz se encuentra al lado derecho de la división del intervalo' Else X1 = Xm 'La raíz se encuentra al lado izquierdo de la división del intervalo' Y1 = Ym End If Xm = (Xo + X1) / 2 'Se hallan nuevamente el punto medio' Ym = (Exp(-x ^ 2 + 2) - x * Sin(2 * x + 3) + 1) 'Se evalua la función inicial para el nuevo punto medio' E = Abs(Xm - Aux) 'Se calcula el error absoluto, trayendo el valor anterior de Xm guardado en aux' Cont = Cont + 1 Range("A" & Cont + 1) = Cont Range("C" & Cont + 1) = Xo Range("D" & Cont + 1) = X1 Range("E" & Cont + 1) = Xm Range("F" & Cont + 1) = Ym Range("G" & Cont + 1) = E Wend If Ym = 0 Then MsgBox ("Xm (" & Xm & ") ES UNA RAÍZ") Else If E < Tol Then MsgBox ("Xm (" & Xm & ")es una Raíz con error de (" & E & ")") Else MsgBox ("NO HAY RAÍZ EN EL INTERVALO") End If End If End If End If End If End Sub