Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda con metodo biseccion ya hize el codigo?

Estas en el tema de Ayuda con metodo biseccion ya hize el codigo? en el foro de Visual Basic clásico en Foros del Web. Hola amigos hize el codigo para el metodo de biseccion....ahora q tengo tengo un textbox para el resultado, la ecuaicon es fija...tengo dos textbox uno ...
  #1 (permalink)  
Antiguo 05/03/2009, 09:09
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Ayuda con metodo biseccion ya hize el codigo?

Hola amigos hize el codigo para el metodo de biseccion....ahora q tengo tengo un textbox para el resultado, la ecuaicon es fija...tengo dos textbox uno para el intervalo y otro para el b...y tengo mi boton ejecutar y limpiar....q quiero..el siguiente codigo muestra q los intervalos a y b son como constantes...q quiero...y nohe podido lograr hacer q el bajor de los intervalos a y b no sean fijos...sino q los puedas digitar en sus respectivos textbox....... ya q si los dejo asi como si fuesen fijos cuando haga el mi archivo .EXE solo servira para esos puntos...me ghustaria q me ayudaran lo mas pronto posible les paso el codigo.... gracias por leerlo...cualquier ayuda les agradesco...

Option Explicit
Dim a, b As Double
Dim TOL As Double
Dim res As Double
Dim N As Integer

Function f(ByVal x As Double) As Double
f = Cos(x) - 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 cmdEjecutar_Click()
Call Biseccion(a, b, TOL, N, res)
txtr.Text = res
End Sub

Private Sub Form_Load()
a = 0.5
b = 0.785398163
TOL = 0.000001
N = 20
End Sub

Private Sub cmdSalir_Click()
Unload Me
End Sub
  #2 (permalink)  
Antiguo 06/03/2009, 04:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda con metodo biseccion ya hize el codigo?

Cita:
Iniciado por kosios Ver Mensaje
Hola amigos hize el codigo para el metodo de biseccion....ahora q tengo tengo un textbox para el resultado, la ecuaicon es fija...tengo dos textbox uno para el intervalo y otro para el b...y tengo mi boton ejecutar y limpiar....q quiero..el siguiente codigo muestra q los intervalos a y b son como constantes...q quiero...y nohe podido lograr hacer q el bajor de los intervalos a y b no sean fijos...sino q los puedas digitar en sus respectivos textbox....... ya q si los dejo asi como si fuesen fijos cuando haga el mi archivo .EXE solo servira para esos puntos...me ghustaria q me ayudaran lo mas pronto posible les paso el codigo.... gracias por leerlo...cualquier ayuda les agradesco...

Option Explicit
Dim a, b As Double
Dim TOL As Double
Dim res As Double
Dim N As Integer

Function f(ByVal x As Double) As Double
f = Cos(x) - 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 cmdEjecutar_Click()
Call Biseccion(a, b, TOL, N, res)
txtr.Text = res
End Sub

Private Sub Form_Load()
a = 0.5
b = 0.785398163
TOL = 0.000001
N = 20
End Sub

Private Sub cmdSalir_Click()
Unload Me
End Sub
hola podrian ayudarme ...urgente
  #3 (permalink)  
Antiguo 06/03/2009, 05:34
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Ayuda con metodo biseccion ya hize el codigo?

No veo cual es el problema.

Supongamos que le dices al usuario que introduzca el valor de 'a' en el Text1 y el de 'b' en el Text2, en el botón ejecutar, antes de llamar al procedimiento 'Biseccion', pones este código:

a = Text1.Text
b = Text2.Text


  #4 (permalink)  
Antiguo 06/03/2009, 07:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Ayuda con metodo biseccion ya hize el codigo?

gracias voy a probarlo...y te digo como me fue...soy principiante en vvisual apenas llevo una semana
  #5 (permalink)  
Antiguo 06/03/2009, 07:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Ayuda con metodo biseccion ya hize el codigo?

Private Sub cmdEjecutar_Click()
a = Text1.Text
b = Text2.Text
Call Biseccion(a, b, TOL, N, res)
txtr.Text = res
End Sub

mira lo coloque asi y listo...pero cuando coloco un valor en el intervalo text1...por ejemplo 0.5 y en el text2 osea intervalo 0.9.....me sale un valor q no corresponde osea 6.56657567657. y asi....cuando coloco....en el text1 osea intervalo a= 0 y b= 0.5 o b=0.9 ...cualquier decimal en b....sirve me da el q es....y halla la raiz... pero si cambio el valor de a diferente de 0 enseguida se daña-....mira el codigo q hize en biseccion q sera lo q pasa
  #6 (permalink)  
Antiguo 06/03/2009, 07:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con metodo biseccion ya hize el codigo?

Usa Val() para convertir las variables en numéricas:
Código vb:
Ver original
  1. a = Val(Text1.Text)
  2. b = Val(Text2.Text)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.