【问题标题】:how to use units along function parameter values in Mathematica如何在 Mathematica 中沿函数参数值使用单位
【发布时间】:2010-11-27 23:13:55
【问题描述】:

我想以米或公里为单位传递参数值(两者都可能)并以米/秒为单位获得结果。

我已尝试在以下示例中执行此操作:

u = 3.986*10^14 Meter^3/Second^2;
v[r_, a_] := Sqrt[u (2/r - 1/a)];

Convert[r, Meter];

Convert[a, Meter];

如果我尝试使用定义的函数和转换:

a = 24503 Kilo Meter;
s = 10198.5 Meter/Second;
r = 6620 Kilo  Meter;
Solve[v[r, x] == s, x]

函数返回以下内容:

{x -> (3310. Kilo Meter^3)/(Meter^2 - 0.000863701 Kilo Meter^2)}

这不是用户友好的格式。

无论如何,我想以米或公里为单位定义 a 和 r,并以米/秒(米/秒)为单位获得结果 s。

如果你们中的任何人能够更正给定的函数定义和其他语句以获得想要的结果,我将非常感激。

【问题讨论】:

    标签: wolfram-mathematica units-of-measurement


    【解决方案1】:

    这是执行此操作的一种方法,您可以使用Solve 返回一个规则列表来将x 的值替换为v[r, x],然后使用Convert,这将进行必要的简化得到的代数表达式也是:

    With[{rule = First@Solve[v[r,x]==s,x] 
          (* Solve always returns a list of rules, because algebraic 
             equations may have multiple solutions. *)},
      Convert[v[r,x] /. rule, Meter/Second]]
    

    这将返回 (10198.5 Meter)/Second 作为您的答案。

    【讨论】:

      【解决方案2】:

      您只需要告诉 Mathematica 简化表达式,假设单位是“正数”,这就是它本身不进行简化的原因。所以,像

      SimplifyWithUnits[blabla_, unit_List]:= Simplify[blalba, (#>0)&/@unit];
      

      所以如果你得到那个丑陋的东西,你只需输入 %~SimplifyWithUnits~{Meter} 或其他任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多