Bioritmi, stimolo per programmatori

Oggi sono venuto a conoscenza dei bioritmi e ho scoperto che sono una stimolo interessante per farci un programmino anche se ancora non so quale linguaggio di programmazione usare.

I bioritmi non hanno un valore scientifico e nemmeno statistico almeno per il momento, sono uno dei tanti modi pensati per anticipare il nostro futuro o il nostro presente, in questo caso per valutare il nostra stato emotivo, fisico ed intellettivo; ci sarebbe stato bene anche quello della fortuna ma non ci hanno pensato.

Come il ritmo cicardiano

I bioritmi, come il ritmo cicardiano, sono dei cicli, il ciclo cicardiano dura 24 ore, il ciclo fisico ha una durata di 23 giorni, il ciclo emotivo 28 giorni e quello intellettivo dura 33 giorni; una convenzione li fa partire alla nostra nascita, anche se sarebbe logico pernsare che partono al concepimento, ma data la difficoltà di determinare la data di concepimento partono dalla data di nascita. Quindi alla nostra nascita tutti assieme partono da zero salendo fino a raggiunge il livello massimo a metà del ciclo e ritornando a zero alla fine del ciclo; sembrerebbe che i giorni critici sono quelli in cui il ciclo inizia (o finisce visto che quando uno finisce ne inizia un altro) mentre i giorni buoni sono quelli di metà ciclo in cui il livello è al massimo; nelle raffigurazioni vedo che dopo un ciclo positivo ne inizia uno negativo, almeno dal punto di vista grafico, devo indagare per capire se si tratta solo di una carineria grafica o se il negativo ha un senso. Appena lo scopro continuo a scrivere e prepareremo insieme una applicazione per fare i vari calcoli.

Cicli positivi e cicli negativi

Non ho scoperto il motivo per cui dopo un ciclo positivo inizia un ciclo negativo della stessa durata; fra l’altro girando su internet ho visto che i grafici sono sempre delle onde sinusoidali mentre mi aspettavo onde a forma di dente di sega, visto che i valori salgono fino a metà ciclo e poi scendono. Quindi, se vogliamo utilizzare un ciclo sinusoidale largamente diffuso la formula per calcolare il valore di un bioritmo ad una certa data è: valore = sin(2 π t / b) dove t è il numero di giorni dalla data di nascita al giorno di cui vogliamo conoscere il valore e g sarà 23 28 o 33 a seconda di quale bioritmo vogliamo conoscere; se invece vogliamo utilizzare il metodo istintivo la formula sarà: Valore = mod(t / b) se il valore è maggiore di metà ciclo, andrà sostituito con b – valore. Mod è una funzione che restituisce il resto di una divisione, ad esempio mod(8,3) = 2;

Vediamo il programma in python

A questo punto vediamo come procedere per scrivere il programmino, per prima cosa dobbiamo scegliere un linguaggio di programmazione fra i tanti esistenti e successivamente un ambiente per eseguire le istruzioni. Ho girato e valutato parecchio, alla fine ho deciso di utilizzare il Python, linguaggio semplice ma efficace e utilizzare un interprete (l’interprete è il programma che legge le istruzioni, le interpreta e le esegue) online, in modo che per provare gli esempi dovete solo collegarvi qui senza scaricare nulla. Se volete una guida semplice, in italiano, per studiare il linguaggio la trovate qui.

from datetime import datetime
formato_data = '%d/%m/%Y %H:%M:%S'
data1 = datetime.strptime('22/06/1963 0:0:0', formato_data)
data2 = datetime.strptime('26/10/2020 0:0:0', formato_data)
giorni_differenza = (data2 - data1).days
print(giorni_differenza)

Il codice qui sopra serve per calcolare la differenza fra date, nel nostro caso la differenza fra la data di nascita e la data di oggi, una differenza espressa in giorni come in giorni sono espressi i cicli. Dal menù sulla sinistra cliccate su [+new] e inserite il nome che volete dare al programma, ad esempio “prova.py”, poi incollate le righe qui sopra. La prima riga serve ad importare la libreria di gestione delle date, con il nome datetime. La seconda riga indica il formato che intendiamo utilizzare per la data, potremmo scriverlo a costante nella seconda e terza riga al posto della variabile formato_data ma assegnare il valore ad una variabile ci permette di non ripeterlo e rendere la lettura più semplice. La terza riga imposta nella variabile data1 la mia data di nascita, ore minuti e secondi sono a zero visto che nel nostro caso non servono. Stessa cosa per la quarta riga con la data di oggi. La quinta riga imposta nella variabile giorni_differenza la differenza delle due date espressa in giorni (.days). l’ultima riga visualizza il risultato in basso a destra dello schermo.

Applichiamo le formule

Ora conoscendo il valore dei giorni possiamo applicare la formula per determinale il valore odierno del bioritmo, aggiungiamo queste istruzioni:

import math 
print ('bioritmo fisico       ',math.sin(2*math.pi*giorni_differenza/23))
print ('bioritmo emotivo      ',math.sin(2*math.pi*giorni_differenza/28))
print ('bioritmo intellettivo ',math.sin(2*math.pi*giorni_differenza/33))
print ('bioritmo fortuna      ',math.sin(2*math.pi*giorni_differenza/16))

Con la prima riga diciamo all’interprete Python che vogliamo utilizzare le librerie math, in questo caso non utilizziamo la formula from libreria import nome ma direttamente import libreria, in questo caso dobbiamo fare riferimento alla libreria solo con il nome standard. Per correttezza sarebbe bene mettere le import tutte insieme ad inizio sorgente. Le successive 4 righe utilizzano la funziona print con due paramentri, per stampare le informazioni affiancate, il primo è la descrizione che essendo una stringa va messa fra apici, la seconda è il valore del bioritmo calcolato con la formula che abbiamo visto prima.Ho aggiunto il bioritmo della fortuna che se esistesse, secondo me, sarebbe di 16 giorni (nella tombola napoletana il numero sedici è associato al Culo/fortuna).

Una cosa che mi sono chiesto appena visto il valore è il range di questi valori, 0,623 o comunque un numero non ha valore se non lo confrontiamo con altri, a questo punto per sapere il range di valori ho scritto queste righe di codice e le ho sostituite a quelle che erano presenti

import math 
for giorni in range(1,23):
    print ('bioritmo fisico       ',giorni,' ',math.sin(2*math.pi*giorni/23))

L‘istruzione for ci permette di eseguire l’istruzione che segue un certo numero di volte, sostituendo alla variabile che se il comando (giorni in questo caso) tutti i valori specificati in range, in questo caso tutti i numeri da 1 a 23; così possiamo vedere che il risultato va da -1 a + 1 (sono tutti numeri decimali per cui converrebbe moltiplicarli per avere numeri più leggibili).

Disegniamo il grafico

Vediamo ora come disegnare il grafico, utilizziamo l’ultimo esempio ed modifichiamolo per tracciare l’andamento sinuisodale del bioritmo, il codice è il seguente:

import tkinter
import math
window_main = tkinter.Tk(className='prima prova', )
window_main.geometry("450x250")
canvas = tkinter.Canvas(window_main, bg="#a0ebbb", height=200, width=300)
x = 20
y = 20
for giorni in range(1,100):
    valore = math.sin(2*math.pi*giorni/23)
    canvas.create_line(x, y, x+4, y+valore*4)
    x = x + 4 
    y = y + valore * 4
canvas.pack()
window_main.mainloop() 

Le prime due righe importano le librerie che ci servono, math che già conosciamo e tkinter, una libreria grafica semplice da utilizzare; le successive tre istruzioni servono a creare una finestra 450×250 pixel e il “canvas” l’area su cui disegnare; x e y sono le coordinate di partenza della linea che tracciamo per avere il grafico, cioè tracciamo una linea dal punto precedente al punto nuovo calcolato aggiungendo 4 pixel in orizzontale e 4 volte il valore in verticale; questo è il risultato:

A questo punto lascio a voi completare il programmino, aggiungendo le istruzioni per acquisire la data di nascita e la data di cui si vuole sapere lo stato dei bioritmi, duplicare le istruzioni per i vari ritmi, fare i grafici di colore diverso, magari tracciare una riga verticale nel punto in cui c’e’ la data di oggi e uno orizzontale sulla posizione zero per vedere più facilmente i punti critici e qualsia altra cosa vi venga in mente. Se avete domande fate pure.

Maurizio

Lascia un commento