2009-09-13 51 views
3

我想以米或公里(均可能)爲單位傳遞參數值,並以米/秒爲單位獲得結果。如何在Mathematica中使用沿函數參數值的單位

我試圖做到這一點在下面的例子:

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。

如果你們中的任何人能夠修正給定的函數定義和其他語句以獲得想要的結果,我將非常感激。

回答

2

這裏做的一個方法,你使用Solve返回一系列規則來取代x一個值v[r, x],然後用Convert,這將做所產生的代數表達式的必要的簡化,以及事實:

With[{rule = [email protected][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爲你的答案。

1

您只需告訴Mathematica簡化表達式,假設單位是「正位」,這就是爲什麼它本身不執行簡化的原因。所以,像

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

所以,如果你得到的醜陋的東西,然後你只需鍵入%〜SimplifyWithUnits〜{}表或任何。

相關問題