使用度量单位计算轨迹

马丁

我正在学习F#,并且尝试首次使用“计量单位”的概念。我有以下问题:

  • 最后一个let(getPosition函数中的变量y给我以下错误:“度量单位'u ^ 2 m / second'与度量单位'm'不匹配”。公式或这是我的使用os计量单位吗?

  • 我正在使用Microsoft.FSharp.Data.UnitSystems.SI中定义的计量单位。有没有一种方法可以不指定使用名称的较短版本?(例如UnitNames.second对比second)。

  • 我必须使用cos和sin函数。这两个函数需要一个浮点数,而不是一个浮点数。我使用LanguagePrimitives.FloatWithMeasure将浮点数转换为度量单位。这是唯一的方法吗?它使代码非常冗长。

谢谢!

open System
open Microsoft.FSharp.Data.UnitSystems.SI

module GeneralBallisticTrajectory = 
    [<Measure>] type radian

    let gravitationalAcceleration : float<UnitNames.metre/UnitNames.second^2> = 9.80665<UnitNames.metre/UnitNames.second^2>

    let getPosition (angle: float<radian>) (velocity: float<UnitNames.metre/UnitNames.second>)  (t: float<UnitNames.second>) =
        let x = velocity * t * (cos (float angle) |> LanguagePrimitives.FloatWithMeasure<UnitNames.metre/UnitNames.second>)
        let abc = (0.5 * gravitationalAcceleration) * t * t // returns float<UnitNames.metre>

        // The unit of measure 'UnitNames.metre' does not match the unit of measure 'UnitNames.metre ^ 2/UnitNames.second'
        let y = (velocity * t * (sin (float angle) |> LanguagePrimitives.FloatWithMeasure<UnitNames.metre/UnitNames.second>)) - abc

        (x, y)
背风处

您可以通过添加一个短名称来使用

open Microsoft.FSharp.Data.UnitSystems.SI.UnitNames

到您的文件。

至于错误,目前尚不清楚为什么将sin调用结果转换为量度类型,因为它velocity * t具有与相同的量度类型(米)abc以下似乎是您想要的:

open System
open Microsoft.FSharp.Data.UnitSystems.SI
open Microsoft.FSharp.Data.UnitSystems.SI.UnitNames

module GeneralBallisticTrajectory = 
    [<Measure>] type radian

    let gravitationalAcceleration : float<metre/second^2> = 9.80665<metre/second^2>

    let getPosition (angle: float<radian>) (velocity: float<metre/second>)  (t: float<second>) =
        let x = velocity * t * (cos (float angle) |> LanguagePrimitives.FloatWithMeasure<metre/second>)
        let abc = (0.5 * gravitationalAcceleration) * t * t // returns float<UnitNames.metre>

        let y = (velocity * t * (sin (float angle))) - abc
        (x, y)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DAX中的运行/累积总计,仅使用度量,不计算列

来自分类Dev

使用度量值查询Prometheus标签值

来自分类Dev

可以在Excel中使用度量“ k”表示法吗?

来自分类Dev

在css中使用cols的度量单位

来自分类Dev

使用squants库,如何为方法指定特定的度量单位?

来自分类Dev

javascript中文件大小使用什么度量单位?

来自分类Dev

如何使用精确的单位和度量创建图

来自分类Dev

计算弹丸的轨迹弧

来自分类Dev

从边界框计算轨迹

来自分类Dev

nltk标记化度量单位

来自分类Dev

/ proc / PID /预定的度量单位

来自分类Dev

nltk标记化度量单位

来自分类Dev

从numpy中的多个轨迹计算平均轨迹

来自分类Dev

使用CSS单位计算表达式

来自分类Dev

使用熊猫计算以毫秒为单位的时差

来自分类Dev

使用bash计算时间(以秒为单位)

来自分类Dev

何时在Power BI中使用计算字段与度量?

来自分类Dev

灌浆使用什么度量标准来计算距离?

来自分类Dev

使用AVERAGE()计算的DAX度量值的MDX语法

来自分类Dev

在度量中使用计算列时出错

来自分类Dev

在System.Numerics.Vector <T>中使用F#度量单位

来自分类Dev

MySQL的空间缓冲区调用中使用的度量单位是什么?

来自分类Dev

我应该使用哪个度量单位进行响应式设计?

来自分类Dev

MySQL的空间缓冲区调用中使用的度量单位是什么?

来自分类Dev

MDX 计算度量

来自分类Dev

用于确定JVM何时进入内存/ GC故障的有用度量

来自分类Dev

Typedef将度量单位放入C

来自分类Dev

glVertex参数以什么单位度量?

来自分类Dev

Xcode中的度量单位是什么