Esempio semplificato

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
Pasquale
Livello 11
Livello 11
Messaggi: 2278
Iscritto il: mer mag 25, 2005 1:14 am

Esempio semplificato

Messaggio da Pasquale » gio dic 06, 2018 10:38 pm

Come preannunciato nella discussione "A rapporto", segue l'esempio semplificato, relativo a calcoli approssimativi fatti eseguire dal Decimal Basic con la tecnica dei punti "sparati" a caso.
.
Quadrati.jpg
Quadrati.jpg (8.63 KiB) Visto 216 volte
Abbiamo due quadrati, di cui uno all'interno dell'altro. Quello più grande ha lato 6 e l'altro lato 2.
Si vuole conoscere il rapporto fra l'area del quadrato piccolo EFGH e la parte di area del quadrato ABCD allo stesso circostante, ovvero: (2x2)/(6x6-2x2) = 4:32 = 0,125
Vogliamo cioè verificare di quanto si discosta il valore trovato dalla routine in Decimal, rispetto a quello già noto di 0,125, per capire se in altre circostanze, in cui il valore ignoto è difficoltoso trovare, si può fare affidamento o meno su tale tecnica, non foss'altro che per trarne indicazioni approssimate.

Appare abbastanza intuitivo che più punti casuali si "sparano" nell'area interessata all'esperimento, tanto più il risultato tende ad avvicinarsi a quello giusto.

Nel caso specifico, la routine scaglia in modo casuale (o pseudocasuale che sia) 10.000.000 di punti sulla superficie da 6x6: una parte finisce all'interno del quadrato piccolo, mentre una quantità maggiore va ad interessare la restante superficie.

Al termine dei due conteggi. la routine calcola il rapporto fra le due quantità (p/g).


LET p=0 ' i punti caduti nel quadrato piccolo
LET g=0 ' i punti caduti intorno al quadrato piccolo
RANDOMIZE
FOR m=1 TO 10000000
LET x=INT(RND*6001)/1000
LET y=INT(RND*6001)/1000
IF x>=2 AND x<=4 AND y>=2 AND y<=4 THEN
LET p=p+1
ELSE
LET g=g+1
END IF
NEXT M
LET R=p/g
PRINT "Valore cercato =";INT(R*10000)/10000
END

Per il risultato occorre attendere un po' e se lo stesso non è soddisfacente si può provare ad aumentare i punti casuali da generare.
Si può operare in modo da ridurre l'attesa, se ci si accontenta di una maggiore imprecisione, tanto per avere un'idea di massima sul risultato e magari affinare successivamente i comandi della routine.
Naturalmente, se il valore cercato non è già noto, per capire quanti cicli occorre far fare al FOR-NEXT per ottenere un valore finale abbastanza attendibile, si può procedere inizialmente con una ripetizione del ciclo più bassa (con minore attesa per il risultato), lanciando più volte la routine e ponendo attenzione alla diversità dei vari risultati: se troppo distanti fra loro, oltre farne una media indicativa, si procede poi all'aumento del valore di FOR m = 1 TO ....
Si noteranno dei risultati meno distanti fra loro rispetto al precedente esperimento, ma aumenterà l'attesa. Se non si è ancora soddisfatti, si aumenta ancora, finchè non si otterrà un risultato più stabile.

Ad ogni buon fine, lanciando più volte la routine qui sopra così com'è, si può notare che i risultati, approssimati alla quarta cifra decimale, sono abbastanza stabili e vicini allo 0,125 atteso.

Buon divertimento. :D
_________________

\text {     }ciao Immagine ciao
E' la somma che fa il totale (Totò)

Rispondi