amigo mira coloque lo q me dijsite y si sirve--..pero sigue teniendo el problema de los intervalos.........si coloco intervalos como 0.5 a 0.9 o 0.5 a 9...me sale un numero q no es....cuando coloco....los intervalos 0, 9 ; 0,7 y asi si me da me da d elo mejor ...si coloco 1, 7.6 no sirve ....apenas coloco un decimal no sirve.... mira te coloco atra vez el codigo con lo q me enviaste haber si fue q coloque algo malo........a por cierto agrege un botom q se llama confirmar... parte d elos q ya tengo q es ejecutar, limpiar y salir....si pudieras corregirme el codigo... seria mas sencillo...para mi de comprender...se q es la salida facil pero ya no tengo tiempo temngo q explicar este programa....no es presentarlo como trabajo sino exponerlo y q sirva...por eso..te pido...asi algo indiscretamente e irrespetuasamente... si me podrias correir el codigo mandamen el q estaroia bien...q yo tengo q de todas maneras explicar las cosas...gracias y disculpa nuevamente
Option Explicit
Dim TOL As Double
Dim res As Double
Dim N As Integer
Public a As Double
Public b As Double
Function f(ByVal x As Double) As Double
f = x - (2 ^ (-x))
End Function
Sub Biseccion(ByVal a As Double, ByVal b As Double, ByVal TOL As Double, _
ByVal N As Integer, ByRef res As Double)
Dim p, fa, fp As Double
Dim i As Integer
Dim Flag As Boolean
i = 1
fa = f(a)
Flag = False
Do While (i <= N) And Not (Flag)
p = a + (b - a) / 2
fp = f(p)
If fp = 0 Or (b - a) / 2 < TOL Then
res = p
Flag = True
End If
i = i + 1
If fa * fp > 0 Then
a = p
fa = fp
Else
b = p
End If
Loop
If Not Flag Then
MsgBox "El método fracaso por exceder el numero de iteraciones", vbExclamation, "Bisección"
End If
End Sub
Private Sub cmd_Click()
a = CDbl(Text1.Text)
b = CDbl(Text2.Text)
End Sub
Private Sub cmdEjecutar_Click()
Call Biseccion(Text1.Text, Text2.Text, TOL, N, res)
txtr.Text = res
End Sub
Private Sub Command1_Click()
txtr.Text = ""
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Form_Load()
TOL = 0.001
N = 20
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub