F#适合物理应用吗?

4

我不喜欢物理,但我喜欢软件开发。感恩节后我还要上两个季度的物理课程才能结束这可怕的学习。我正在阅读关于F#单位测量功能的帖子,但我从未使用过像F#这样的语言。编写应用程序是否适合我,以便在做我喜欢的事情时学习一些物理知识呢?

我对命令行应用程序很感兴趣(甚至可以只执行并输出答案而无需输入),例如运动学、平面运动、牛顿定律、引力、功、能量、动量和冲量、粒子系统、旋转运动学和动力学、角动量、静力学平衡、振动运动、波动、声音、物理光学、静电学、高斯定律、电场和电势、电容、电阻、直流电路、磁场、安培定律和电感。

我对F#感兴趣是因为它提供了单位测量功能。


2
物理和微积分是我在学校最有收获的几年。它们相互补充得非常好。拥抱它——把物理看作编程(问题解决)而不是死记公式,你可能会发现它不那么可怕。 - Bill K
7个回答

11

在我个人的偏见下,F#非常适合物理学。它具有一个叫做度量单位 (Units of Measure) 的特性,可以为您进行尺寸分析,并在您出错时提供错误信息。例如,如果您编写:

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

由于重力单位是 < meters/seconds^2 > 而不是 < meters >,因此会导致编译错误。这可以避免许多与物理相关的编程错误。

欲了解更多信息,请查看 Andrew Kennedy 的博客


这就是为什么我特别询问 F# 的原因 :) 我会修改我的问题。 - Thomas Owens

5
我看了一本名为“F# for scientists”的书的介绍(该介绍可以免费获取),这似乎是该领域的一个很好的入门,因为F#似乎非常适合这种领域。你可能想看一下这个介绍。链接:http://www.ffconsultancy.com/products/fsharp_for_scientists/(不过我与作者没有关系哦)

2
是的(任何语言都可以),不是的(学习你未来同事使用的语言,比如他们可能使用Python)。有趣的是Fortress

2
关于量纲分析:这是一个有趣的微积分技巧,由我的物理教授之一提出:假设在给定的烤箱中完美地烹饪一只重一磅的火鸡需要一个小时,那么在相同的烤箱中烹饪一只重两磅的火鸡需要多长时间?
好吧,量纲分析表明:
(1)烹饪火鸡所需的总热能量与火鸡的质量成比例,火鸡的体积又与其平均“半径”的立方成比例。

所需的烹饪热能 = k1 * (火鸡半径 ^ 3) ==>单位:m^3 * k(其中k1单位为J / m^3)
(2)烤箱提供的总热能量与你烹饪的时间乘以火鸡表面积成比例。

烤箱提供的热能 = k2 * 时间 * (火鸡半径 ^ 2)(其中k2单位为J / s / m^2)
然后通过使用(1)=(2),您可以得到
时间 = k1 / k2 * 火鸡半径 ^(3/2)

- 烹饪时间与半径 ^ 3/2成比例 - 鉴于火鸡半径与质量的立方根成比例,我们得到 烹饪时间 = k3 * sqrt(质量)
因此,烹饪2磅的火鸡需要多花sqrt(2)倍的时间,而这个结果完全不需要计算 - 只需要进行量纲分析即可。

2
是的,F#是构建功能编程的好方法,正如克里斯·史密斯在他的回复中所说。我正在使用F#构建有关物理学,工程学和生物学的广泛讨论。像您这样的学生肯定可以为我提供帮助。没有真正的生活问题而进行编程是一种编程方式。另一种成功的方式是提供仅由使用计算机的人使用的解决方案,当然还有一种建立财富的方式。
F#适用于物理等知识领域。

1

F#是一个选择。如果您想学习一项可能更具长期效益的技能,为什么不学习Python呢?那样您也可以方便地使用numpy和scipy。


我喜欢 F# 的原因是因为它有度量单位,并且它会给我一个好理由回到 .NET 编程。 - Thomas Owens

-1

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

量纲分析是解决物理问题的一种非常方便的工具,它可以避免犯下“甚至不正确”的错误。

我总是因为单位搞错了而得到10^34倍的错误答案,但这让我感到某种奇怪的快乐 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接