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これを行う 1 つの方法を次に示します。ここでは、ルールのリストを返すファクトを使用して、 の値を代入xv[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 に答える