3

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

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

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。

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

4

2 回答 2

2

这是执行此操作的一种方法,您可以使用返回规则列表的事实Solve来替换xinto的值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作为您的答案返回。

于 2009-09-14T13:59:17.233 回答
1

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

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

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

于 2009-09-23T21:35:55.290 回答