Está en la página 1de 18

Dim N%, A#(70), i%, X#, XF#, F#, M%, Dx#, k%, F2#, err#, L%, B#(70),

C#(70), R#, R1#, E#, X1#, X2#, X3#, X4#, Xr#, D#, G#
Private Sub BORR_Click()
INVESTIGA.Enabled = True
INVESTIGA.Visible = True
VIETA.Enabled = True
VIETA.Visible = True
POLI.Enabled = True
POLI.Visible = True
INTER.Enabled = True
INTER.Visible = True
NEWTON.Enabled = True
NEWTON.Visible = True
ECUA.Enabled = True
ECUA.Visible = True
Cls
List1.Clear
List2.Clear
List3.Clear
List4.Clear
List5.Clear

List1.Visible = False
List2.Visible = False
List3.Visible = False
List4.Visible = False
List5.Visible = False

Label2.Visible = False
End Sub

Private Sub ECUA_Click()


INVESTIGA.Enabled = False
INVESTIGA.Visible = True
VIETA.Enabled = False
VIETA.Visible = True
POLI.Enabled = True
POLI.Visible = True
INTER.Enabled = False
INTER.Visible = False
NEWTON.Enabled = False
NEWTON.Visible = True
BORR.Enabled = True
BORR.Visible = True

B(1) = A(1)
For i = 2 To (N + 1)
B(i) = B(i - 1) * X1 + A(i)
Next i
Print: Print
Print

Print: Print Tab(30); "LA POLINMICA BAJADA DE GRADO ES"


Print
'imprimir la ecuacion bajada de grado
Print Tab(40); "Y = ";
For i = 1 To (N - 1)
If B(i) >= 0 Then
Print " + "; Round(Abs(B(i)), 5); " X ^ "; (N - i);
Else
Print " - "; Round(Abs(B(i)), 5); " X ^ "; (N - i);
End If
Next i
If B(N) >= 0 Then
Print " + "; Round(Abs(B(i)), 5)
Else
Print " - "; Round(Abs(B(i)), 5)
End If
If (N - 1) = 2 Then
D = B(1)
If (D <> 0) Then
E = B(2)
F = B(3)
G=E^2-4*D*F
If (G >= 0) Then
If (G > 0) Then
X3 = (-E + Sqr(G)) / 2 / D
X4 = (-E - Sqr(G)) / (2 * D)

Else
X3 = (-E / 2 / D)
X4 = X3

End If
Print
Print
Print Tab(45); "la solucion en X2 = "; Round(X3, 4)
Print
Print Tab(45); "la solucion en X3 = "; Round(X4, 4)
Else
Xr = -E / 2 / D
xi = Sqr(Abs(G)) / (2 * D)

Print Tab(40); "la solucion en X1 = "; Xr; " + "; xi; " i "
Print Tab(40); "la solucion en X2 = "; Xr; " - "; xi; " i "
End If
End If
Else
Print
Print Tab(50); "No es una ecuacin de segundo grado"
End If

End Sub

Private Sub INTER_Click()


OLE1.DoVerb
POLI.Enabled = True
POLI.Visible = True
NEWTON.Enabled = False
NEWTON.Visible = True
INVESTIGA.Enabled = False
INVESTIGA.Visible = True
VIETA.Enabled = False
VIETA.Visible = True
ECUA.Enabled = False
ECUA.Visible = True
BORR.Enabled = False
BORR.Visible = True
End Sub
Private Sub INVESTIGA_Click()
VIETA.Enabled = True
VIETA.Visible = True
POLI.Enabled = False
POLI.Visible = True
INTER.Enabled = False
INTER.Visible = False
NEWTON.Enabled = False
NEWTON.Visible = True
ECUA.Enabled = False
ECUA.Visible = True
BORR.Enabled = True
BORR.Visible = True
SALIR.Enabled = True
SALIR.Visible = True

F = A(N + 1)
For k = 1 To N
F = F + A(k) * X ^ (N + 1 - k)
Next k
If (F = 0) Then
Print Tab(70); " = "; X; "Es la solucin"
Print Tab(70); " Y = 0"
Else
Do
M = Val(InputBox(" Nmero de Iteraciones ", " Mtodo de
investigacin"))
Loop Until (M > 0)
Dx = (XF - X) / M
For i = 1 To M
X = X + Dx
F2 = A(N + 1)
For k = 1 To N
F2 = F2 + A(k) * X ^ (N + 1 - k)
Next k
If (F * F2 = 0) Then
Print Tab(54); " X = "; X; " Solucin "
Print Tab(54); " Y = 0"
Exit Sub
Else
If (F * F2 > 0) Then
F = F2
Else
X2 = X
X1 = X - Dx
Print
Print
Print Tab(54); " X1 = "; Round(X1, 4); Spc(5); "Y(X)= "; Round(F,
4);
Print Tab(54); " X2 = "; Round(X2, 4); Spc(5); "Y(X)= "; Round(F2,
4)
F = F2
Exit Sub
End If
End If

Next i
End If
End Sub

Private Sub NEWTON_Click()


INVESTIGA.Enabled = True
INVESTIGA.Visible = True
VIETA.Enabled = False
VIETA.Visible = True
POLI.Enabled = False
POLI.Visible = True
INTER.Enabled = False
INTER.Visible = False
BORR.Enabled = True
BORR.Visible = True
ECUA.Enabled = False
ECUA.Visible = True
X = Sqr((Abs(((-A(2) / A(1)) ^ 2) - 2 * (A(3) / A(1)))))
XF = -X
Print: Print
Print Tab(50); "X inicial ="; Round(X, 4); Spc(15); "X final ="; Round(XF,
4)
End Sub

Private Sub POLI_Click()


NEWTON.Enabled = True
NEWTON.Visible = True
INVESTIGA.Enabled = False
INVESTIGA.Visible = True
VIETA.Enabled = False
VIETA.Visible = True
INTER.Enabled = False
INTER.Visible = False
BORR.Enabled = True
BORR.Visible = True

Cls
Do
N = Val(InputBox("INGRESE EL GRADO DE LA ECUACIN", "DATOS"))
Loop Until (N > 1)
For i = 1 To (N + 1)
Do
A(i) = Val(InputBox("Ingrese el coeficiente (" & i & ")", "COEFICIENTES DE LA
FUNCIN"))
Loop Until (A(1) <> 0)
Next i
Print
Print
Print
Print
Print Tab(30); " LA POLINOMICA ES "; Spc(10); " Y = "; " ";
For j = 1 To N
If A(j) >= 0 Then
Print " + "; Abs(A(j)); " X ^ "; (N + 1 - j);
Else
Print " - "; Abs(A(j)); " X ^ "; (N + 1 - j);
End If
Next j
If A(N + 1) >= 0 Then
Print " + "; Abs(A(j))
Else
Print " - "; Abs(A(j))
End If
End Sub

Private Sub SALIR_Click()


End
End Sub

Private Sub VIETA_Click()


INVESTIGA.Enabled = False
INVESTIGA.Visible = True
POLI.Enabled = False
POLI.Visible = True
INTER.Enabled = False
INTER.Visible = False
NEWTON.Enabled = False
NEWTON.Visible = True
ECUA.Enabled = True
ECUA.Visible = True
BORR.Enabled = True
BORR.Visible = True

List1.Visible = True
List2.Visible = True
List3.Visible = True
List4.Visible = True
List5.Visible = True

Label2.Visible = True

err = Val(InputBox(" INGRESE EL ERROR ", "Mtodo de Birge Vieta"))


For k = 1 To M
B(1) = A(1)
For i = 2 To (N + 1)
B(i) = B(i - 1) * X1 + A(i)
Next i
R = B(N + 1)
If (R = 0) Then
Print Tab(50); "La solucin es = "; X1
Exit Sub
End If

C(1) = B(1)

For L = 2 To N
C(L) = C(L - 1) * X1 + B(L)
Next L
R1 = C(N)
If R1 = 0 Then
Print Tab(50); " No hay solucin derivada en X1 = 0"
Exit Sub
Else
E = R / R1
X1 = X1 - E
List1.AddItem k
List2.AddItem (FormatNumber(X1, 5))
List3.AddItem (FormatNumber(R, 5))
List4.AddItem (FormatNumber(R1, 5))
List5.AddItem (FormatNumber(E, 5))
End If
If (Abs(E) <= err) Then
Print
Print
Print Tab(50); "LA SOLUCION ES ="; X1
Exit Sub
End If
Next k
Print Tab(50); "En"; M; " INTERACIONES NO CONVERGE LA SOLUCION"

End Sub

Print

Print
Print

Print Tab(50); "ANDRES SANCHEZ "


Print
Print
Print
Print Tab(60); "QUINTO A"

End Sub

Private Sub EJEC_Click()


Cls
'DECLARACION DE VARIABLES'
Dim I, K, M As Integer
Dim ERR, P As Single
Dim A(50), B(50), C(50), R, R1, E, XI, X1, X2, F, F2, DX, X2S, X3S, XSS, XF As
Double
'LIMPIAR LAS LISTAS'
List1.Clear
List2.Clear
List3.Clear
List4.Clear
List5.Clear
List6.Clear
List7.Clear
List8.Clear
List9.Clear

'LLAMAR TEXTOS'
Label1.Visible = True
Label2.Visible = True
Label3.Visible = True
Label4.Visible = True
Label5.Visible = True
Label6.Visible = True
Label7.Visible = True
Label8.Visible = True
Label9.Visible = True
'LLAMAR A LAS LISTAS'
List1.Visible = True
List2.Visible = True
List3.Visible = True
List4.Visible = True
List5.Visible = True
List6.Visible = True
List7.Visible = True
List8.Visible = True
List9.Visible = True

Print
Print Tab(10); "CONOCIDO UNA POLINMICA DE GRADO N, CON EL
PROCEDIMIENTO DE CALCULAR X INICIAL CON LA RELACIN DE NEWTON,
ENCONTRAR UN INTERVALO SOLUCIN CON EL MTODO DE INVESTIGACIN"
Print Tab(10); "CALCULAR EL X1 CON EL MTODO DE BIRGE VIETTA, SI LA
POLINMICA BAJADA DE GRADO ES CUADRTICA, CALCULAR X2 Y X3
SOLUCIONES"
Print

'N = GRADO DE LA POLINMICA'


Do
N = Val(InputBox("INGRESE EL VALOR DEL GRADO DE LA POLINOMICA"))
Loop Until (N > 1)

'I = VALOR DEL CONTADOR'


For I = 1 To (N + 1)
Do
'A = COEFICIENTES DE LA POLINMICA'
A(I) = Val(InputBox("INGRESE LOS VALORES DE LOS COEFICIENTES DE LA
POLINMICA"))
Loop Until (A(1) <> 0)
Next I
'XI = VALOR INICIAL DEL INTERVALO'
XI = Sqr(Abs(((-A(2) / A(1)) ^ 2) - 2 * (A(3) / A(1))))
'XF = VALOR FINAL DEL INTERVALO'
XF = -XI
'F = VALOR INDEPENDIENTE'
F = A(N + 1)
'K = VALOR DEL CONTADOR'
For K = 1 To N
'F = VALOR FUNCIONAL DE LA POLINMICA'
F = F + A(K) * XI ^ (N + 1 - K)
Next K
If F = 0 Then
Print
Print Tab(15); "X = "; XI; " ES LA SOLUCION PORQUE F(X) = 0"
'TERMINAR EL PROGRAMA'
Exit Sub
Else
Do
'M = NUMERO DE ITERACIONES'
M = Val(InputBox("INGRESE EL NUMERO DE ITERACIONES"))
Loop Until (M > 0)
'DX = NTERVALO ENTRE LOS X CONSECUTIVOS'
DX = (XF - XI) / M
For I = 1 To M
XI = XI + DX
'F2 = VALOR INDEPENDIENTE'
F2 = A(N + 1)
'K = VALOR DEL CONTADOR'
For K = 1 To N
'F2 = VALOR FUNCIONAL DE LA POLINMICA'
F2 = F2 + A(K) * XI ^ (N + 1 - K)
Next K
If (F * F2) = 0 Then
Print Tab(15); "X = "; XI; " ES LA SOLUCION PORQUE F(X) = 0"
'TERMINAR EL PROGRAMA'
Exit Sub
Else
If (F * F2) > 0 Then
F = F2
Else
'X2 = VALOR LIMITA FINAL DEL INTERVALO EN XI'
X2 = XI
'X1 = VALOR LIMITA INICIAL DEL INTERVALO EN XI'
X1 = XI - DX

'IMPRIMIR EN LAS LISTAS'


List1.AddItem (X1)
List2.AddItem (F)
List3.AddItem (X2)
List4.AddItem (F2)

F = F2
End If
End If
Next I
End If

'ERROR PERMISIBLE PARA X SOLUCIN'


ERR = Val(InputBox("INGRESE EL ERROR"))

For K = 1 To M
'VECTORES'
B(1) = A(1)
For I = 2 To (N + 1)
B(I) = B(I - 1) * X1 + A(I)
Next I
'R = RESIDUO DE LA DIVISIN DE LA POLINMICA'
R = B(N + 1)
If R = 0 Then
Print
Print Tab(15); "LA RAZ SOLUCIN ES "; X1

Exit Sub
End If
'VECTORES'
C(1) = B(1)
For L = 2 To N
C(L) = C(L - 1) * X1 + B(L)
Next L
'R1 = RESIDUO DE LA DIVISIN DE LA POLINMICA'
R1 = C(N)
If R1 = 0 Then
Print
Print Tab(15); "NO EXISTE SOLUCIN DERIVADA EN X = 0"
Exit Sub
Else
'VALOR DE APROXIMACIN EN X ENTRE DOS VALORES CONSECUTIVOS'
E = R / R1
X1 = X1 - E

'IMPRIMIR EN LAS LISTAS'


List5.AddItem (K)
List6.AddItem (X1)
List7.AddItem (R)
List8.AddItem (R1)
List9.AddItem (E)
End If

If Abs(E) <= ERR Then


Print
Print Tab(15); "LA RAZ SOLUCIN X1 ES "; X1
If N = 3 Then
Print
Print Tab(15); "LA POLINMICA BAJADA DE GRADO ES CUADRTICA"
P = ((B(2)) ^ 2) - (4 * (B(1)) * (B(3)))
If P > 0 Then
X2S = ((-B(2)) + Sqr(P)) / (2 * (B(1)))
X3S = ((-B(2)) - Sqr(P)) / (2 * (B(1)))
Print
Print Tab(15); "LA RAZ SOLUCIN X2 ES "; X2S
Print
Print Tab(15); "LA RAZ SOLUCIN X3 ES "; X3S
Else
XSS = (-B(2)) / (2 * (B(1)))
X2S = (Sqr(Abs(P))) / (2 * (B(1)))

Print
Print Tab(15); "LA RAZ SOLUCIN X2 ES "; XSS; " + "; X2S; " i"
Print
Print Tab(15); "LA RAZ SOLUCIN X3 ES "; XSS; " - "; X2S; " i"
End If
Else
Print
Print Tab(15); "LA POLINMICA BAJADA DE GRADO NO ES CUADRTICA"
End If

Exit Sub
End If
Next K
Print
Print Tab(15); "EN "; M; " ITERACIONES NO CONVERGE A LA SOLUCIN"

End Sub

Private Sub LIMP_Click()


'comando para limpiar la pantalla'
Cls

Print

'LIMPIAR LAS LISTAS'


List1.Clear
List2.Clear
List3.Clear
List4.Clear
List5.Clear
List6.Clear
List7.Clear
List8.Clear
List9.Clear

End Sub

Private Sub SALIR_Click()


End

End Sub

También podría gustarte