4

我讨厌物理,但我喜欢软件开发。感恩节后我回到学校时,在完成这件可怕的事情之前,我还要再上两个季度的物理课。我目前正在阅读有关 F# 度量单位功能的帖子,但我从未使用过 F# 之类的语言。是否适合编写应用程序,以便我可以在做我喜欢的事情的同时学习一些物理知识?

我对运动学、平面运动、牛顿定律、万有引力、功、能量、动量和冲量、系统粒子、旋转运动学和动力学、角动量、静态平衡、振荡运动、波动、声音、物理光学、静电学、高斯定律、电场和电势、电容、电阻、直流电路、磁场、安培定律和电感.

我对 F# 感兴趣的原因是该语言提供的度量单位功能。

4

7 回答 7

11

在我看来,F# 是物理学的理想选择。它有一个名为“测量单位”的功能,可以为您进行尺寸分析,如果您弄错了,它会提供错误。例如,如果你写:

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

这会产生编译错误,因为重力是 < 米/秒 ^2 > 而不是 < 米 >。这可以防止大量与物理相关的编程错误。

有关更多信息,请查看Andrew Kennedy 的博客

于 2008-10-03T17:56:48.980 回答
5

我引用了一本名为“F# 为科学家”的书的介绍(介绍是免费的),这似乎是对该领域的一个很好的介绍,因为 F# 似乎非常适合这种领域。

你可能想看看介绍。

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

(不,我和作者没有关系;-)

于 2008-10-03T17:24:31.747 回答
2

是(任何语言都是)和否(了解你未来的同事将使用什么,比如他们可能使用 python。)。一个有趣的地方是堡垒

于 2008-10-03T17:44:11.270 回答
2

关于维度分析:我的一位物理学教授曾经给过我一个有趣的微积分技巧:假设在给定的烤箱中完美烹饪一磅火鸡需要一个小时,那么烹饪 2 磅火鸡需要多长时间是同一个烤箱?

嗯,维度分析显示

(1) 烹调火鸡所需的热能总量与火鸡的质量成正比,而质量本身与火鸡的体积成正比,而体积本身与平均“半径”的立方成正比,

烹饪热量所需能量 = k1 * (turkeyRadius" ^3) ==> 单位:m^3 * k(其中 k1 单位为 J / m^3)

(2) 烤箱提供的总热能与火鸡的表面乘以你煮它的时间成正比,

烤箱提供的热量=k2*时间*(turkeyRadius^2)(其中k2 单位为 J / s / m^2 )

然后通过使用 (1) = (2) ,您获得
时间 = k1 / k2 * turkeyRadius ^ (3/2)


- 烹饪时间与半径成正比 ^ 3/2
- 鉴于 turkeyRadius 与质量的立方根成正比,我们得到
烹饪时间 = k3 * sqrt(mass)

因此,烹饪我们的 2 磅火鸡需要 sqrt(2) 倍的时间,而且根本无需计算即可获得结果 - 仅进行尺寸分析。

于 2008-10-04T14:53:14.437 回答
2

是的,正如 Chris Smith 在回复中所说,F# 是构建函数式编程的好方法。我正在使用 F# 构建关于物理、工程和生物学的广泛讨论。我当然可以使用像你这样的学生的意见。没有考虑现实生活问题的编程是一种编程方式。另一种成功的方式是提供只有使用计算机的人才能使用的解决方案,当然这是另一种方式,也是一种创造财富的方式。

F# 专为物理等知识领域而设计。

于 2009-03-31T23:58:49.243 回答
1

Fsharp 是一种选择。如果你想学习一项可能对长期有益的技能,为什么不学习 python。你也将拥有 numpy 和 scipy 在你的指尖。

于 2008-10-03T17:29:51.657 回答
-1

学习任何计算机语言都不会教你物理,你可以通过用任何语言编写程序来学习物理。

维度分析是解决物理问题的一个相当方便的工具,它可以引导你远离“甚至没有错”。

我总是以 10^34 的系数得到错误的答案,因为我在某个地方弄错了我的单位;-)

于 2008-10-03T17:17:25.770 回答