con la ayuda de la sala) - página 2

 
Richie: Sin embargo, la fórmula de progresión es más o menos evidente a simple vista: Y = int(8,3069*e^(0,1825*x)+0,5).

Esto también puede entrar en los anales. Bien.

Sólo que supongo que no es "aproximadamente obvio", sino "aproximadamente obvio a simple vista" :)

 

Por supuesto que sí. La gente no entiende nada de bromas. Lo veré cuando esté sobrio a mi condición :)

Aquí hay otra broma para ti. El programa funciona, pero no te aconsejo que lo ejecutes.

Private Sub Command1_Click()
Dim i1 As Integer
Dim i2 As Integer
Dim i3 As Integer
Dim i4 As Integer
Dim i5 As Integer
Dim i6 As Integer
Dim i7 As Integer
Dim i8 As Integer
Dim sum As Long
For i1 = 0 To 30
For i2 = 0 To 30
For i3 = 0 To 30
For i4 = 0 To 30
For i5 = 0 To 30
For i6 = 0 To 30
For i7 = 0 To 30
For i8 = 0 To 30
 sum = Chisla(i1) + Chisla(i2) + Chisla(i3) + Chisla(i4) + Chisla(i5) + Chisla(i6) + Chisla(i7) + Chisla(i8)
   If sum = Int(Val(Text1.Text)) Then
   Print i1; i2; i3; i4; i5; i6; i7; i8
   End If
Next i8
Next i7
Next i6
Next i5
Next i4
Next i3
Next i2
Next i1
End Sub


Private Function Chisla(Nomer As Integer)
If Nomer = 0 Then Chisla = 0
If Nomer = 1 Then Chisla = 10
If Nomer = 2 Then Chisla = 12
If Nomer = 3 Then Chisla = 14
If Nomer = 4 Then Chisla = 17
If Nomer = 5 Then Chisla = 21
If Nomer = 6 Then Chisla = 25
If Nomer = 7 Then Chisla = 30
If Nomer = 8 Then Chisla = 36
If Nomer = 9 Then Chisla = 43
If Nomer = 10 Then Chisla = 52
If Nomer = 11 Then Chisla = 62
If Nomer = 12 Then Chisla = 74
If Nomer = 13 Then Chisla = 89
If Nomer = 14 Then Chisla = 107
If Nomer = 15 Then Chisla = 128
If Nomer = 16 Then Chisla = 154
If Nomer = 17 Then Chisla = 185
If Nomer = 18 Then Chisla = 222
If Nomer = 19 Then Chisla = 266
If Nomer = 20 Then Chisla = 319
If Nomer = 21 Then Chisla = 383
If Nomer = 22 Then Chisla = 460
If Nomer = 23 Then Chisla = 552
If Nomer = 24 Then Chisla = 662
If Nomer = 25 Then Chisla = 795
If Nomer = 26 Then Chisla = 954
If Nomer = 27 Then Chisla = 1145
If Nomer = 28 Then Chisla = 1374
If Nomer = 29 Then Chisla = 1648
If Nomer = 30 Then Chisla = 1978
End Function
Poner un botón y un cuadro de texto en el formulario. En el cuadro de texto , introduzca H.
 
Richie:

Coloca un botón y un cuadro de texto en el formulario. En el cuadro de texto, introduzca H.


¿Y en media hora tienes el resultado?
 

Podrías hacer una búsqueda de soluciones en Excel, aunque no estoy seguro de que eso funcione...

Podrías esbozar un programa que busque variantes.

También puedes utilizar programas matemáticos pesados.


Lo que necesitas aquí es un programa que te dé diferentes valores de a, b, c... para el mismo valor de H.

Más bien no hay regularidad en estos números.

No olvides que además de estos números, que pueden ser iguales a, existen b,c,... variables que tienen sus propios valores, y en general tales variables 17 ))).

Lo intenté en Excle, pero es un cerebro repleto de funciones cíclicas, de rango, etc. Si alguien puede hacerlo, me da envidia.

 

Podemos formular el problema como un problema de optimización:

Dado a=(10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978).

Encuentra un segundo vector b, con valores de coordenadas del conjunto {0,1} (y, por supuesto, con el mismo número de coordenadas, es decir, 30) - tal que | a*b - H | -> min. El producto de vectores es escalar. En Excel se soluciona seguro con GA (addon "Search for solutions").

No conozco el significado más profundo de este problema. Todas las variantes en el peor de los casos serán 2^30 ~ 10^9, es decir, en principio el problema es solucionable para los Pisuk modernos.

 
timezero:

Podrías hacer una búsqueda de soluciones en Excel, aunque no estoy seguro de que eso funcione...

Podrías esbozar un programa que busque entre las variantes.

También puedes utilizar programas matemáticos pesados.


Lo que necesitas aquí es un programa que te dé diferentes valores de a, b, c... con el mismo valor de H.

Más bien no hay regularidad en estos números.

No olvides que además de estos números, que pueden ser iguales a, también existen b,c,... variables que tienen sus propios valores, y hay 17 de ellos).

Lo he intentado en Exxle, pero me rompe el cerebro con las funciones cíclicas, de rango, etc. Si alguien lo consigue, me dará envidia.

Mirado, parece que funciona.

Bien, por ejemplo en a1 buscaremos un número,

b1,c1,d1... serán sustituidos por números, en b2-b17, c2-c17 el rango de números que necesitamos.

En a1 la fórmula que escogerá un número del rango por un índice y lo añadirá a las restricciones del rango 2..17

 
¿Y cómo se describe esto con una fórmula en Excel?
 
Esto no se puede calcular en Excel. Si hay 17 grupos de 30 valores, ¿tiene idea de cuántas variaciones puede haber? Si realmente necesitas una respuesta, pide a alguien que te escriba un programa en C, busca un servidor muy potente, ejecútalo y espera. Tendrás resultados en un par de años.
 
Richie:

Por supuesto que sí. La gente no entiende nada de bromas. Lo veré cuando esté sobrio a mi condición :)

Aquí hay otra broma para ti. El programa funciona, pero te aconsejo que no lo ejecutes.

Coloca un botón y un cuadro de texto en el formulario. En el cuadro de texto, introduzca H.



Mejor declarar array con números y dirección por índice, sin if, funcionará mucho más rápido. Mejor en mq4, es 10 veces más rápido que en vb6, aún mejor en mql5, es aún más rápido.

Chisla[]={10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978};

 
Integer:


aún mejor en mql5 - es aún más rápido.

Calcular para mql5 puede llevar toda la vida consciente de TC)