Regula falsi, secante, biseccion

Victoria
11 de Julio del 2004
Hola, necesito que me manden el codigo de algunos de los 3 metodos para realizarlo en Visual Basic, Gracias...

rjevil
11 de Julio del 2004
esto esta hecho con matlab, tu ya te encargas de trasladarlo a visual basic


% METODO de SECANTE
% Función para calcular la raiz de la función f
%
% Llamada: secante(p0,p1,tol,n)
%
% Argumentos:
% p0,p1:puntos de partida
% tol: Tolerancia exigida
% n: número máximo de iteraciones.
%
%
function y=secante(p0,p1,tol,n)
flops(0);

if (p0<p1)
'p0 ha de ser mayor que p1'
else
for k=1:n
if (f(p1)-f(p0))==0 % El denominador no puede ser 0
'¡¡¡El denominador es cero!!!'
break
end
p2=p1-(f(p1).*(p1-p0))./(f(p1)-f(p0));
p0=p1;
p1=p2;
if ((abs(f(p2))<tol) & (abs(p2-p1)<tol)) % criterios de paro
break
end
disp(p0)
end

y=p2;
end

n=flops;
disp('Numero operaciones:')
disp(n)

Bartolon
11 de Julio del 2004
Espero que esto te sirva:

Método de bisección:

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


Método de Regula Falsi:

Sub Regula_Falsi(ByVal a As Double, ByVal b As Double, ByVal Tol As Double, _
ByVal N As Integer, ByRef Flag As Boolean, ByRef r As Double)
Dim q, q0, q1, p As Double
Dim i As Integer
i = 2
q0 = f(a)
q1 = f(b)
Do While (i <= N)
p = b - q1 * (b - a) / (q1 - q0)
If Abs(p - b) < Tol Then
Flag = True
r = p
Exit Sub
End If
i = i + 1
q = f(p)
If (q * q1 < 0) Then
a = b
q0 = q1
End If
b = p
q1 = q
Flag = False
Loop
End Sub


Saludos!
Bartolom
Chile