^^N cariche libere statiche su un segmento. Programma in Python.
29/06/2013 16:25 Leo
Per utilizzarlo appieno (siccome non ho ancora avuto tempo di fare una user
interface) si devono modificare i parametri, come il numero di cariche, il tipo
di distribuzione, la "risoluzione del grafico", il loro spostamento minimo, etc.,
all'interno del programma.
Il numero di cariche non può essere elevatissimo per vedere il risultato più o
meno fluidamente.
∃ modi per accelerare, vedremo in seguito.
Ho usato programmazione leggermente più complicata del necessario (oggetti al
posto di un semplice intero per coordinata) poiché in questo modo è possibile
evolvere più facilmente (per esempio dall'1D al 2D, oppure cariche diverse da
1).
Bene, ma senza esagerare.
Stavo creando una versione più leggera per aumentare le prestazioni, ma ho
finito prima questa.
∃ modi per accelerare, vedremo in seguito.
Ancora non è perfetta, per esempio quando finisce di muoversi
(quando finisce di muoversi?) non sempre è
simmetrica, cosa improbabile dal punto di vista fisico (con le impostazioni
date), cosa dovuta al fatto che sono possibili spostamenti di data grandezza preimpostata.
Siamo sicuri che debba essere simmetrica? E' intuizione o
ragiorne?
Sviluppi possibili:
- fare un controllo di "immobilità", e se positivo diminuire lo
spostamento minimo
- inserire l'interfaccia utente
- inserire per il grafico barre di riferimento, scale per il
numero di cariche
- etc. etc.
Quando puoi lo possiamo discutere, e se lo aggiorno ti mando le
nuove versioni.
4 luglio 2013 Rob. Osservazioni al programma informatico di Leo. Disordinate.
Sono solo osservazioni, non richieste di modifica al programma.
Qualche commento e' pero' da fare.
- Manca una segnalazione numerica, per rendersi conto se il programma si
e' fermato o gira.
- Se il pg ha una fine, segnalarla. Quando non si muove piu' nulla e'
finito
- Se la flag non e' quella prevista, segnalare.
- Se e' tesina, ci deve essere spiega in anticipo degli "err msg", che
sono limitazioni dei parametri.
- Credo meglio scegliere a caso lo spostamento della carica, se poi non e'
una diminuzione, faccio l'altro, se anch'esso non diminuisce, cambio carica.
- Nello spostamento, una carica puo' o no sorpassare un'altra carica ?
- La probabilita' che 2 float random siano uguali e' ....
Che senso ha verificare che siano diversi ?
- Forse il posto migliore per verificare che siano diversi e' il tentativo
di calcolo dell'energia, in cui si calcola proprio la distanza. Se e' < di
un tot, o l'en maggiore di un tot, ma meglio la distanza, allora si scarta
lo spostamento. Questo e' pero' per cariche di ugual segno, poiche' per
quelle di segno diverso, e' proprio la coincidenza di posizione la loro
"pace", il loro stato statico.
8-7-2013 Leo. Qualche nota sul programma.
Nel primo momento in cui programmavo la simulazione avevo in mente il
concetto di "posto" e "carica", però nel procedere ho notato che conduceva a
vari problemi momentanei, quindi al posto di una rappresentazione discreta ho
preferito per un primo momento quella pseudo-continua.
??? problemi, momentanei, problemi momentanei, pseudo-continua.
- Il vantaggio della discreta come la avevo impostata all'inizio è che lo
spostamento minimo coincide con la grandezza del "posto" (quindi non vi sono
posizioni non raggiungibili).
Non ho trovato dove spieghi perche'
lo valuti un vantaggio; e' forse (quindi non vi sono posizioni non
raggiungibili) ? Se e' cosi' si ripropone ad esso la domanda.
-
- se si utilizzano
Utilizzando i float per la posizione,
- e se si definisce lo spostamento minimo
fisso come
variabile COSTANTE ,
- allora
una posizione è possibile per una carica
solo se dista dal suo punto
iniziale di un valore multiplo dello spostamento minimo.Vero per
i nr reali ideali, ma non sono sicuro che sia cosi' per i
Floating point
number.
Lo dico solo per chiarezza d'idee, irrilevante per il programma.
- Se due cariche hanno
posizione iniziale distante di una lunghezza non divisibile per il minimo
spostamento (equi: ≠ da un multiplo interno del minimo
spostamento) non si possono trovare sul
solito
(gergalismo indigeno) punto, dando origine ad errori
come per esempio nell'1D un sorpasso che non sarebbe effettivamente possibile.
Si potrebbe inserire un controllo di non sorpasso, o ritenere che abbia
senso fisico, precisando il senso fisico del modello.
- Lo svantaggio del discreto è che possono esservi casi in cui vi è un qualcosa di
non vero nella realtà, come l'oscillazione infinita che hai illustrato nella
pagina di commento, e che può condurre ad errori nel programma dovuti alla
discretizzazione (come un qualcosa che dovrebbe essere discreto ma non lo è,
quindi nuovamente posizioni irraggiungibili --> errori ed approssimazioni).
E' poco chiaro poiche' si vogliono dire troppe cose in poche
parole. Cio' e' possibile quando l'intesa e' potente, invece la nostra e' da
costruire. Di sfuggita ho letto un paio di vecchie mail
qui, e ho visto che la
richiesta approfondimento dell'intesa e' di vecchia data.
L'ambiente di lavoro Python di Roberto
Non avendo esperienza mi sono guardato in giro, e ho avuto la fortuna di
trovare una distro portable
con PyGame, cosi':
- non installo a caso appesantendo il computer
- non ho dovuto imparare a installare moduli.
Ho caricato la source che mi hai inviato nell'IDE
PyScripter
e tutto ha funzionato.
I'm completely operational, and all my circuits are functioning perfectly."
-- HAL, the homicidal computer in 2001: A Space Odyssey
Un possibile modello matematico per la distribuzione di cariche e':
- una funzione f
- definita su tutti i punti dello spazio disponibile al moto delle cariche
- che vale 0 sui punti dove non ci sono cariche, e 1 dove c'e' una carica.