prendendo l'aiuto della sala) - pagina 2

 
Richie: Tuttavia, la formula di progressione è più o meno evidente a occhio nudo: Y = int(8.3069*e^(0.1825*x)+0.5).

Anche questo può entrare negli annali. Bene.

Solo che immagino che non sia "approssimativamente ovvio" (che è un gran boccone!), ma "approssimativamente ovvio a occhio nudo" :)

 

Certo che si può. La gente non capisce affatto gli scherzi. Ci vediamo quando sarai sobrio nella mia condizione :)

Ecco un'altra battuta per voi. Il programma funziona, ma non vi consiglierei di eseguirlo.

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
Mettete un pulsante e una casella di testo nel modulo. Nella casella di testo , inserire H.
 
Richie:

Lancia un pulsante e una casella di testo sul modulo. Nella casella di testo, inserire H.


E in mezz'ora si ottiene il risultato?
 

Potresti fare una ricerca di soluzioni in Excel, anche se non sono sicuro che funzionerebbe...

Si potrebbe abbozzare un programma che cerchi tra le varianti.

Si possono anche usare programmi matematici pesanti.


Quello che ti serve qui è un programma che ti dia diversi valori di a, b, c... con lo stesso valore di H.

Non c'è piuttosto alcuna regolarità in questi numeri.

Non dimenticare che oltre a questi numeri, che possono essere uguali ad a, ci sono b, c,... variabili che hanno valori propri, e in generale tali variabili 17 ))).

Ho provato in Excle, ma è un cervello che scoppia di funzioni cicliche, di rango, ecc. Se qualcuno può farlo, sono invidioso.

 

Possiamo formulare il problema come un problema di ottimizzazione:

Dato 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).

Trova un secondo vettore b, con valori di coordinate dell'insieme {0,1} (e, naturalmente, con lo stesso numero di coordinate, cioè 30) - tale che | a*b - H | -> min. Il prodotto di vettori è scalare. In Excel si risolve sicuramente con GA (addon "Cerca soluzioni").

Non conosco il significato profondo di questo problema. Tutte le varianti nel caso peggiore saranno 2^30 ~ 10^9, cioè in linea di principio il problema è risolvibile per i moderni Pisuk.

 
timezero:

Potresti fare una ricerca di soluzioni in Excel, anche se non sono sicuro che funzionerebbe...

Si potrebbe abbozzare un programma che cerchi tra le varianti.

Si possono anche usare programmi matematici pesanti.


Quello che ti serve qui è un programma che ti dia diversi valori di a, b, c... con lo stesso valore di H.

Non c'è piuttosto alcuna regolarità in questi numeri.

Non dimenticare che oltre a questi numeri, che possono essere uguali ad a, ci sono anche b, c,... variabili che hanno valori propri, e ce ne sono 17).

Ho provato in Exxle, ma mi romperà il cervello con funzioni cicliche, di rango, ecc. Se qualcuno ci riesce, sarò geloso di lui.

Guardato, sembra funzionare.

Bene, per esempio in a1 cercheremo un numero,

b1,c1,d1... saranno sostituiti da numeri, in b2-b17, c2-c17 la gamma di numeri di cui abbiamo bisogno.

In a1 la formula che sceglierà un numero dall'intervallo per un indice e lo aggiungerà ai vincoli dell'intervallo 2..17

 
E come si fa a descrivere questo con una formula in excel?
 
Non si può calcolare questo in Excel. Se ci sono 17 gruppi di 30 valori, avete un'idea di quante variazioni ci possano essere? Se hai davvero bisogno di una risposta, chiedi a qualcuno di scriverti un programma C, cerca un server molto potente, eseguilo e aspetta. Otterrete risultati in un paio d'anni.
 
Richie:

Certo che si può. La gente non capisce affatto gli scherzi. Ci vediamo quando sarai sobrio nella mia condizione :)

Ecco un'altra battuta per voi. Il programma funziona, ma vi consiglio di non eseguirlo.

Lancia un pulsante e una casella di testo sul modulo. Nella casella di testo, inserire H.



Meglio dichiarare array con numeri e indirizzi per indice, senza se, funzionerà molto più velocemente. Meglio in mq4, è 10 volte più veloce di vb6, ancora meglio in mql5, è ancora più veloce.

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:


ancora meglio in mql5 - è ancora più veloce.

Il calcolo per mql5 può richiedere tutta la vita cosciente di TC)