Está en la página 1de 9

Mtodo de Biseccin a) Metodologa de programacin: 1- Inicia Visual Basic, abre un nuevo archivo, nombrndolo como Biseccion, y en la propiedad Caption

de nuestro formulario escribe Mtodo de Biseccin

2- Coloca siete Label (etiquetas), cuatro TextBox, y dos CommnadButton en una posicin, con un tamao y con las caractersticas necesarias para que quede una interfaz como la siguiente

3- A las primeras seis etiquetas les cambiaremos solo la propiedad Caption por: Escribe la funcin a evaluar, Escribe los valores iniciales, X1=, X2=, Escribe el nmero de iteraciones y Raiz aproximada. A la ltima etiqueta le cambaremos la propiedad Name por Resul y en la propiedad Caption solo borraremos el contenido, pues en esta etiqueta es donde mostraremos el resultado. 4- A los cuatro TextBox les borraremos la propiedad Text y en la propiedad Name escribiremos Funcion, equis1, equis2 y Text4, respectivamente. El primer cuadro de texto recibir la funcin a evaluar, en los dos siguientes se escribirn los valores iniciales, y el ltimo lo ocuparemos para pedir el nmero de iteraciones que el programa realizar para el clculo de la raz de la funcin escrita. 5- Los CommandButton tendrn por Caption Borrar Todo y Calcular Raz, mientras que en Name escribiremos BorrarTodo y Calcular, respectivamente. 6- Tambin necesitaremos mostrar los resultados de cada iteracin que el programa realice, por lo que insertaremos un ListView. Para insertar este objeto necesitamos agregar un complemento dando clic derecho en la barra General que se encuentra a la izquierda de nuestro formulario y eligiendo la opcin Componentes.

7- En la ventana que nos aparece buscamos la opcin Microsoft Windows Common Controls 6.0, la seleccionamos y damos clic en Aceptar.

8- En la barra General nos aparecern nuevos objetos, de los cuales insertaremos un ListView, a esta le cambiaremos la propiedad Name por Lista.

9- A continuacin damos un clic derecho sobre la lista y elegimos propiedades. En la pestaa General seleccionaremos la opcin 3-IvwReport de View y tambin elegiremos la opcin Gridlines.

10- En la pestaa Encabezados de columna siete columnas, en el Text escribiremos X1, X2, XM, f(X1), f(Xm), f(X1)f(Xm) y Era(%), respectivamente.

11- Teniendo todos los objetos necesarios, procedemos a programar nuestro mtodo. 12. Antes de empezar la programacin de nuestra aplicacin insertamos dos complementos que previamente descargaremos y guardamos en la misma carpeta en donde guardamos nuestro proyecto. Para agregarlos damos clic en Agregar Modulo y Agregar Modulo de Clase, desde la pestaa Proyecto.

13. Damos doble clic en nuestro formulario y en el editor de cdigo Seleccionamos la opcin General, en donde declararemos las variables que necesitaremos y tambin declaramos a la Funcin F, con la que el programa evaluar los valores de las equis para la funcin que el usuario ingrese, procedemos a escribir el siguiente cdigo:

14-Da doble clic en botn Calcular escribiremos el cdigo con el cual se calcularan las races de la funcin ingresada por el usuario mediante el mtodo de Biseccin. Escribimos las siguientes lneas:

Lo que hacemos con el primer condicional es comprobar que usuario haya escrito algo en todos los cuadros de texto, en caso contrario se mandara un mensaje mediante un MsgBox indicando que falta un dato. Enseguida declaramos un arreglo XM(100) y era(100) como String, despus de eso asignamos a n el valor que el usuario ingrese para nmero de iteraciones, a x1 el primer valor inicial y a x2, el segundo valor inicial. Las siguientes dos lneas evalan los valores iniciales para la funcin F que el usuario ingreso en cuadro de texto Funcin. El segundo condicional comprueba que haya un cambio de signo para los valores iniciales evaluados en la funcin, y si no es as, el programa mandara un mensaje diciendo que los valores iniciales no encierran una raz. Dicha condicin se cumple cundo el producto de la funcin evaluada en x1 y la funcin evaluada en x2 es menor a cero. Despus de comprobar que los valores iniciales encierran una raz, programaremos un ciclo For que finalizara hasta el nmero de iteraciones n que el usuario indic. En las siguientes lneas se vuelve a evaluar los valores con la funcin y se aplica la frmula de xm que se va almacenando en un arreglo para que tambin sea evaluada en la funcin. Enseguida escribimos el cdigo con que se logra mostrar cada valor ocupado en el mtodo en un list view, se agrega el valor de x1, x2 xm, f(x1), f(Xm) Y f(X1)f(Xm) en las columnas respectivas, esto se logra al poner en subndice dentro del ndice principal con la propiedad ListSubItems, por eso todos tienen como ndice (contador). En el siguiente condicional aplicamos el mtodo de biseccin, es decir vamos comprobando en donde hay un cambio de signo (entre f de xm y f de x1 o f de x2), para asignar como nueva Xm a X1 o a X2 y repetir la operacin, hasta n (nmero de iteraciones). Con el ltimo condicional, que encierra a un nuevo ciclo anidado, lo que hacemos es calcular el error relativo absoluto, esto es mediante la funcin valor absoluto aplicada a la frmula del error relativo. La razn para inicializar un nuevo contador en 2, es debido a que el nmero de errores sern n-1. Una vez calculados los errores, se mostraran en la ltima columna de nuestra Lista. Finalmente mostramos el valor de la ltima Xm en la propiedad Caption de nuestra etiqueta Resul. 15- Damos doble clic sobre el botn Borrar todo y escribiremos el cdigo mostrado en la figura, con lo que borrara el contenido de nuestros objetos Lista, Funcion, equis1, equis2, Text4 y Resul.

16- En el evento Key Press de equis1, equis2 y Text4 escribimos lo siguiente:

Con este cdigo slo se podrn introducir nmeros positivos, negativos y con decimales, en el caso de equis1 y equis2, y en el caso de Text4 solo se podrn introducir valores positivos y enteros. b) Cdigo

El cdigo completo es el siguiente:


Function F(ByVal x As Double) As Double Dim Formula As String Dim Funct As New clsMathParser Formula = Funcion.Text Funct.StoreExpression (Formula) F = Funct.Eval1(x) End Function Private Sub BorrarTodo_Click() Lista.ListItems.Clear Funcion = "" equis1 = "" equis2 = "" Text4 = "" Resul.Caption = "" End Sub Private Sub Calcular_Click() If Text4.Text <> "" And Funcion <> "" And equis1 <> "" And equis2 <> "" Then Dim XM(100), era(100) As String n = Text4.Text x1 = equis1.Text X2 = equis2.Text fx1 = F(x1) fx2 = F(X2) If fx1 * fx2 < 0 Then For contador = 1 To n fx1 = F(x1) fx2 = F(X2)

XM(contador) = (x1 + X2) / 2 fxm = F(XM(contador)) Lista.ListItems.Add(contador).Text = x1 Lista.ListItems.Item(contador).ListSubItems.Add.Text = X2 Lista.ListItems.Item(contador).ListSubItems.Add.Text = XM(contador) Lista.ListItems.Item(contador).ListSubItems.Add.Text = fx1 Lista.ListItems.Item(contador).ListSubItems.Add.Text = fxm Lista.ListItems.Item(contador).ListSubItems.Add.Text = fx1 * fxm If fx1 * fxm < 0 Then X2 = XM(contador) ElseIf fx1 * fxm > 0 Then x1 = XM(contador) ElseIf fxm * fx1 = 0 Then XM(contador) = XM(contador) Exit Sub End If If contador > 1 Then For i = 2 To n era(i) = Format(Abs((XM(contador) - XM(contador - 1)) * 100 / XM(contador)), "###.######") Lista.ListItems.Item(contador).ListSubItems.Add.Text = era(i) Next i End If Resul.Caption = XM(contador) Next contador Else MsgBox "Los valores iniciales no encierran a la raz vuelve a escribir otras", 0, "Inserta nuevos datos" Exit Sub End If Else MsgBox "Falta un dato" End If End Sub Private Sub equis1_KeyPress(KeyAscii As Integer) If (KeyAscii < 48 Or KeyAscii > 57) Then If (KeyAscii <> 8 And KeyAscii <> 46 And KeyAscii <> 44 And KeyAscii <> 45) Then KeyAscii = 0 End If End Sub Private Sub equis2_KeyPress(KeyAscii As Integer) If (KeyAscii < 48 Or KeyAscii > 57) Then If (KeyAscii <> 8 And KeyAscii <> 46 And KeyAscii <> 44 And KeyAscii <> 45) Then KeyAscii = 0 End If End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) If (KeyAscii < 48 Or KeyAscii > 57) Then If (KeyAscii <> 8) Then KeyAscii = 0 End If End Sub

c) Evaluacin y resultados.