^^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.

Prima di aggiornare, discutiamo

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.

 

  1. Manca una segnalazione numerica, per rendersi conto se il programma si e' fermato o gira.
  2. Se il pg ha una fine, segnalarla. Quando non si muove piu' nulla e' finito
  3. Se la flag non e' quella prevista, segnalare.
  4. Se e' tesina, ci deve essere spiega in anticipo degli "err msg", che sono limitazioni dei parametri.
  5. 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.
  6. Nello spostamento, una carica puo' o no sorpassare un'altra carica ?
  7. La probabilita' che 2 float random siano uguali e' ....
    Che senso ha verificare che siano diversi ?
  8. 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.

 

  1. 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.

    1.  se si utilizzano Utilizzando i float per la posizione,
    2. e se si definisce lo spostamento minimo fisso come variabile COSTANTE ,
    3. 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.

  2. 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.

  3. 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':

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':

  1. una funzione f
  2. definita su tutti i punti dello spazio disponibile al moto delle cariche
  3. che vale 0 sui punti dove non ci sono cariche, e 1 dove c'e' una carica.