
No logro hacer una segunda iteracion a partir de los valores de una primer iteracion
Publicado por Andres (1 intervención) el 05/10/2015 08:45:03
Tengo el siguiente código que itera valores de x = 0.01 hasta 10 con paso de 0.01 para satisfacer que la ecuación de Mononobe donde debe ser mayor de 0° y menor o igual de 32° tal que 0° < Mononobe >= 32° , una vez satisfecha la condición imprime los valores para "x" y también el resultado que da con esa incógnita.
Bueno el problema es que dentro de este rango de valores puedo tener mas de 30 posibles valores para "x" (Depende de los datos de entrada - varia segun el caso - ) que satisfacen la ecuación y su limitante y después tengo que cumplir una segunda iteracion con esos 30 posibles valores e ir probando de nuevo uno por uno hasta satisfacer la segunda ecuación y su limitante.
He Intentado resolver esto asignando un rango a esos posibles 30 valores e ir probando mediante una estructura For Each .Pero el programa no logra hacer que pruebe todos y cada uno de los valores que resultan de la primer iteracion
Bueno el problema es que dentro de este rango de valores puedo tener mas de 30 posibles valores para "x" (Depende de los datos de entrada - varia segun el caso - ) que satisfacen la ecuación y su limitante y después tengo que cumplir una segunda iteracion con esos 30 posibles valores e ir probando de nuevo uno por uno hasta satisfacer la segunda ecuación y su limitante.
He Intentado resolver esto asignando un rango a esos posibles 30 valores e ir probando mediante una estructura For Each .Pero el programa no logra hacer que pruebe todos y cada uno de los valores que resultan de la primer iteracion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Private Sub CommandButton1_Click()
Const Pi = 3.14159265358979
Dim cociente As Double
Dim A As Range
On Error Resume Next ' Para evitar división entre cero
[A24] = 0
Kh = [B4]
Kv = 0.75 * [B4]
Phi = [B6]
Beta = [B7]
Teta = Phi + Beta
ResistWedge = Tan(Teta * (Pi / 180))
For x = 0.01 To 10 Step 0.01
CoefHor = Kh / x ' Coeficiente Horizontal
CoefVert = 1 - (Kv / x) ' Coeficiente Vertical
cociente = CoefHor / CoefVert
Mononobe = ((1 / (Tan(cociente))) - Beta) * (180 / Pi) ' Ecuacion de Mononobe
If 0 < Mononobe And Mononobe <= Phi Then
[A24] = [A24] + 1 ' Imprime el Num de Iteraciones que satisfacen la ecuación
Range("A" & [A24] + 25) = x ' Imprime todos los valores que satisfacen la ecuacion para la condicion
Range("B" & [A24] + 25) = Mononobe ' Imprime todos los resultados de la ecuacion de mononobe que cumplen
[A25] = "x ="
[B25] = "Mononobe"
Limiting = (1 - (1 - (Kv / x))) * Tan(Teta * (Pi / 180))
[G8] = CoefHor
[I8] = Limiting
If [G8] <= Limiting Then
[H8] = "<="
[J8] = "Sí Cumple"
ElseIf [G8] > Limiting Then
Set A = Range("A" & [A24] + 24) ' -----> CREO QUE AQUI NO RECONOCE EL RANGO
For Each numero In A ' Para cada numero en el Rango de x = numero que cumple la condicion
CoefHor = Kh / numero
CoefVert = 1 - (Kv / numero)
cociente = CoefHor / CoefVert
Mononobe = ((1 / (Tan(cociente))) - Beta) * (180 / Pi)
Cumple = (1 - (1 - (Kv / numero))) * Tan(Teta * (Pi / 180))
If [G8] <= Cumple Then
[I8] = Cumple
Exit For 'Se supone que si cumple para el bucle y sale peroo ..¿Como podria imprimir todos los valores que vuelven a cumplir si fuesen mas de 1
End If
Next
[F2] = x
'[F6] = CoefHor
'[F9] = CoefVert
'[F12] = cociente
'[F15] = 1 / Tan(cociente) * (180 / Pi)
'[F18] = Mononobe
[I7] = ResistWedge
[H7] = 1 - CoefVert
End If
End If
Next x
End Sub
- MononobeSismo.rar(25,9 KB)
Valora esta pregunta


0