Domanda

Odio la fisica, ma adoro lo sviluppo del software. Quando torno a scuola dopo il Ringraziamento, prenderò altri due quarti di Fisica prima di aver finito con la cosa orribile. Attualmente sto leggendo post sulle unità di misura F #, ma non ho mai usato un linguaggio come F #. Sarebbe adatto a scrivere applicazioni in modo che io possa forse imparare qualcosa sulla fisica mentre faccio qualcosa che mi piace?

Sono interessato alle applicazioni da riga di comando (anche quelle che posso semplicemente eseguire e avere sputato una risposta senza bisogno di input) per cose come cinematica, moto planare, Leggi di Newton, gravitazione, lavoro, energia, quantità di moto e impulso , sistemi di particelle, cinematica e dinamica rotazionale, momento angolare, equilibrio statico, movimento oscillatorio, moto ondoso, suono, ottica fisica, elettrostatica, legge di Gauss, campo elettrico e potenziale, capacità, resistenza, circuiti CC, campo magnetico, legge di Ampere e induttanza.

Il motivo per cui sono interessato a F # è dovuto alla funzionalità delle unità di misura fornita dalla lingua.

È stato utile?

Soluzione

Secondo me, F # è l'ideale per la fisica. Ha una funzione chiamata Unità di misura che esegue l'analisi dimensionale per te, fornendo errori se sbagli. Ad esempio se scrivi:

let distance : float<meters> = gravity * 3.0<seconds>

Ciò produrrebbe un errore di compilazione , poiché la gravità è < metri / secondi ^ 2 > e non < metri > ;. Questo previene molti errori di programmazione legati alla fisica.

Per ulteriori informazioni, consulta il blog di Andrew Kennedy .

Altri suggerimenti

Ho guidato l'introduzione di una call book " F # per gli scienziati " (l'introduzione è disponibile gratuitamente) e sembra essere una buona introduzione al campo, poiché F # sembra adattarsi molto bene a questo tipo di campo.

Potresti dare un'occhiata all'introduzione.

http://www.ffconsultancy.com/products/fsharp_for_scientists/

(E no, non ho alcun rapporto con l'autore ;-)

Sì (qualsiasi lingua è) e No (scopri cosa useranno i tuoi futuri colleghi, come se magari usassero Python.). Un aspetto interessante è Fortress .

Sull'analisi dimensionale: un divertente trucco di calcolo una volta dato da uno dei miei professori di fisica: dato che ci vuole un'ora per cucinare perfettamente un tacchino da una libbra in un dato forno, quanto tempo ci vorrebbe per cucinare un tacchino da 2 libbre è lo stesso forno?

Bene, l'analisi dimensionale mostra

(1) che la quantità totale di energia termica necessaria per cucinare il tacchino è proporzionale alla massa del tacchino, che è esso stesso proporzionale al suo volume, che è esso stesso proporzionale al cubo della sua media " quot raggio &;
cioè
Energia termica di cottura necessaria = k1 * (turkeyRadius & Quot; ^ 3) == & Gt; unità: m ^ 3 * k (dove k1 è J / m ^ 3)

(2) Che la quantità totale di energia termica fornita dal forno è proporzionale alla superficie del tacchino moltiplicata per la quantità di tempo in cui la si cucina,
cioè
Calore fornito dal forno = k2 * tempo * (turkeyRadius ^ 2) (dove l'unità k2 è J / s / m ^ 2)

Quindi utilizzando (1) = (2), si ottiene
time = k1 / k2 * turkeyRadius ^ (3/2)

cioè
- il tempo di cottura è proporzionale al raggio ^ 3/2
- dato che il tacchino Radius è proporzionale alla radice cubica della massa, otteniamo
  tempo di cottura = k3 * sqrt (massa)

Quindi, ci vorrà sqrt (2) volte più a lungo per cucinare il nostro tacchino da 2 sterline, e il risultato è ottenuto senza alcun calcolo - solo analisi dimensionale.

Sì, F # è un ottimo modo per basarsi sulla programmazione funzionale, proprio come ha detto Chris Smith nella sua risposta. Sto lavorando alla costruzione di un'ampia discussione su fisica, ingegneria e biologia usando F #. Potrei certamente usare il contributo di uno studente come te. La programmazione senza un problema di vita reale in mente è un modo di programmare. L'altra strada che ha successo è quella di fornire soluzioni utilizzate solo dalle persone che usano il computer, sicuramente un'altra strada da percorrere e quella che crea ricchezza.

F # è realizzato per domini della conoscenza come la Fisica.

Fsharp è una scelta. Se vuoi imparare un'abilità che potrebbe anche essere di maggiore beneficio a lungo termine, perché non imparare Python. Avrai anche intorpidimento e scipy anche a portata di mano.

Imparare qualsiasi linguaggio informatico non ti insegnerà la fisica e puoi imparare la fisica scrivendo programmi in qualsiasi lingua.

L'analisi dimensionale è uno strumento piuttosto utile per problemi di fisica, può allontanarti dall'essere " nemmeno sbagliato " ;.

Ho sempre avuto un certo piacere perverso nel sbagliare una risposta con fattori di 10 ^ 34 perché avevo sbagliato le mie unità da qualche parte ;-)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top