Pregunta

Odio la física, pero me encanta el desarrollo de software. Cuando regrese a la escuela después del Día de Acción de Gracias, tomaré dos cuartos más de Física antes de terminar con lo horrible. Actualmente estoy leyendo publicaciones en la función de unidades de medida F #, pero nunca he usado un lenguaje como F #. ¿Sería adecuado escribir aplicaciones para poder aprender algo sobre física mientras hago algo que me gusta?

Me interesan las aplicaciones de línea de comandos (incluso aquellas que solo puedo ejecutar y escupe una respuesta sin necesidad de entradas) para cosas como cinemática, movimiento planar, leyes de Newton, gravitación, trabajo, energía, impulso e impulso , sistemas de partículas, cinemática y dinámica rotacional, momento angular, equilibrio estático, movimiento oscilatorio, movimiento ondulatorio, sonido, óptica física, electrostática, ley de Gauss, campo eléctrico y potencial, capacitancia, resistencia, circuitos de CC, campo magnético, ley de amperios , e inductancia.

La razón por la que estoy interesado en F # es la funcionalidad de las unidades de medida que proporciona el lenguaje.

¿Fue útil?

Solución

En mi opinión sesgada, F # es ideal para la física. Tiene una característica llamada Unidades de medida que realiza análisis dimensionales por usted, proporcionando errores si se equivoca. Por ejemplo, si escribe:

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

Eso produciría un error de compilación , ya que la gravedad es < metros / segundos ^ 2 > y no < metros > ;. Esto evita una gran cantidad de errores de programación relacionados con la física.

Para obtener más información, consulte el blog de Andrew Kennedy .

Otros consejos

Monté en la presentación de una llamada de libro " F # para científicos " (la introducción está disponible de forma gratuita), y parece ser una buena introducción al campo, ya que F # parece estar muy bien adaptado a este tipo de campo.

Es posible que desee echar un vistazo a la introducción.

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

(Y no, no tengo ninguna relación con el autor ;-)

Sí (cualquier idioma es) y No (aprenda lo que usarán sus futuros colegas, como tal vez usan Python). Un lado interesante es Fortress .

Acerca del análisis dimensional: un divertido truco de cálculo que una vez me dio uno de mis profesores de física: dado que lleva una hora cocinar perfectamente un pavo de una libra en un horno determinado, ¿cuánto tiempo tomaría cocinar un pavo de 2 libras? el mismo horno?

Bueno, el análisis dimensional muestra

(1) que la cantidad total de energía térmica necesaria para cocinar el pavo es proporcional a la masa del pavo, que a su vez es proporcional a su volumen, que a su vez es proporcional al cubo de su promedio " radio "
es decir,
Energía térmica necesaria para cocinar = k1 * (turkeyRadius & Quot; ^ 3) == & Gt; unidad: m ^ 3 * k (donde la unidad k1 es J / m ^ 3)

(2) Que la cantidad total de energía térmica proporcionada por el horno es proporcional a la superficie del pavo multiplicada por la cantidad de tiempo que la cocina,
es decir,
Calor proporcionado por el horno = k2 * tiempo * (turkeyRadius ^ 2) (donde la unidad k2 es J / s / m ^ 2)

Luego, usando (1) = (2), obtienes
time = k1 / k2 * turkeyRadius ^ (3/2)

es decir
- el tiempo de cocción es proporcional al radio ^ 3/2
- dado que turkeyRadius es proporcional a la raíz cúbica de la masa, obtenemos
  tiempo de cocción = k3 * sqrt (masa)

Por lo tanto, tomará sqrt (2) veces más tiempo para cocinar nuestro pavo de 2 libras, y el resultado se obtiene sin ningún cálculo, solo análisis dimensional.

Sí, F # es una excelente manera de construir sobre programación funcional, tal como Chris Smith dijo en su respuesta. Estoy trabajando en la construcción de una extensa discusión sobre física, ingeniería y biología usando F #. Ciertamente podría usar la información de un estudiante como usted. La programación sin un problema de la vida real en mente es una forma de programación. La otra forma de éxito es proporcionar soluciones que solo usan las personas que usan computadoras, ciertamente otra forma de hacerlo y una que genera riqueza.

F # está hecho para dominios de conocimiento como Física.

Fsharp es una opción. Si quieres aprender una habilidad que también puede ser más beneficiosa a largo plazo, ¿por qué no aprender Python? También tendrás numpy y scipy a tu alcance también.

Aprender cualquier lenguaje de computadora no te enseñará física, y puedes aprender física escribiendo programas en cualquier idioma.

El análisis dimensional es una herramienta bastante útil para problemas de física, puede alejarlo de ser & "; ni siquiera está equivocado &";

Siempre he tenido un cierto placer perverso al obtener una respuesta incorrecta por factores de 10 ^ 34 porque había equivocado mis unidades en alguna parte ;-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top