Mathematica:如何使用具有多个参数的单个方程来计算任何参数

时间:2009-09-13 18:35:35

标签: wolfram-mathematica orbital-mechanics

目前,我使用具有已知/未知参数的不同组合的单个等式。因为我没有任何花哨的计算器,所以在Mathematica中定义方程并传递已知参数来计算未知值会容易得多。

如果有人能给出一个示例解决方案(如果可能的话,使用给定的公式),我将非常感激。

假设我们在椭圆轨道的给定点有一个卫星速度方程:

v = sqrt(u(2 / r - 1 / a))

其中

v =速度 u =常数3.986 * 10 ^ 14立方公尺/ s ^ 2 r =半径(距地球中心的距离) a =椭圆的半长轴

此等式可用于计算速度,或者例如我们知道机动将货物移动到其他轨道所需的速度是多少,并且必须在给定半径(r)

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用“:=”运算符在Mathematica中定义方程式。要定义示例等式:

v[u_, r_, a_] := Sqrt[u*(2/r-1/a)]

我不确定如何概括它以解决任何未知的问题...如果我弄明白我会回复你。

您可能想要尝试以下内容:

Solve[v[1, r, 7]==15, r]

这将解决r假设你知道v,u和a ...然后你可以改变每个未知的参数...

答案 1 :(得分:1)

有点晚了:) ...但Reduce []做你想要的。我们定义一个函数:

solveForMe[rules_] := Reduce[( v == Sqrt[3.986*10^14 *(2/r - 1/a)]) /. rules];

并使用任何有效的分配组合调用它。例如:

In[72]:= Off[Reduce::ratnz];
         solveForMe[{a -> 7 10^6, r -> 7 10^6}]
         solveForMe[{v -> 10, r -> 7 10^6}]
         solveForMe[{v -> 10, a -> 7 10^6}]

输出结果为:

Out[73]= v == 7546.05

Out[74]= a == 3.5*10^6

Out[75]= r == 1.4*10^7

HTH! ...