Wolfram mathematica 将解算结果保存在变量中

Wolfram mathematica 将解算结果保存在变量中,wolfram-mathematica,mathematica-8,Wolfram Mathematica,Mathematica 8,我正在解以下两个变量的方程 Solve[{2*x1* y1 + 2*k*x3*y3 + (Sqrt[2 + q])*x1 == m1, 2*x1*y3 - 2*x3*y1 - (Sqrt[2 + q])*x3 == m2}, {x1, x3}] 代码的输出是 {{x1->18/61,x3->-(15/61)} 如何将这些输出保存在两个单独的变量中。首先,您已经给出了其他变量的特定值的输出,您没有向我们显示这些值。显然,您的编码方式会导致一些透明度损失。您最好继续这样做: Solve[{2*

我正在解以下两个变量的方程

Solve[{2*x1* y1 + 2*k*x3*y3 + (Sqrt[2 + q])*x1 == m1,
  2*x1*y3 - 2*x3*y1 - (Sqrt[2 + q])*x3 == m2}, {x1, x3}]
代码的输出是 {{x1->18/61,x3->-(15/61)}
如何将这些输出保存在两个单独的变量中。

首先,您已经给出了其他变量的特定值的输出,您没有向我们显示这些值。显然,您的编码方式会导致一些透明度损失。您最好继续这样做:

Solve[{2*x1* y1 + 2*k*x3*y3 + (Sqrt[2 + q])*x1 == m1,
  2*x1*y3 - 2*x3*y1 - (Sqrt[2 + q])*x3 == m2}, {x1, x3}]
eqn01 = 2*x1*y1 + 2*k*x3*y3 + (Sqrt[2 + q])*x1 == m1;
eqn02 = 2*x1*y3 - 2*x3*y1 - (Sqrt[2 + q])*x3 == m2;
params = {y1 -> 1., y3 -> 3, m1 -> 1, m2 -> 2, q -> 1, k -> 1}; (* yr vals here *)
solns = Solve[{eqn01, eqn02} /. params, {x1, x3}]
其次,WL通过解包支持多个赋值,所以如果您真的想保存两个解决方案的原样,您可以将它们解包。例如:

{soln11, soln12} = First@solns
一般来说,确实没有必要这样做。事实上,由于这是一个解决方案的两个部分,通常将它们分开是没有意义的。但是,获得实际值可能很有用:

{x1, x3} /. First@solns
当然,您可以将此值列表存储在变量中,但这很少需要。最后,如果你真的坚持引入变量仅仅是为了存储这两个独立的值——这几乎总是会造成不必要的混乱——你可以再次将它们解包:

{val1, val3} = {x1, x3} /. First@solns

首先,您已经给出了其他变量的特定值的输出,您没有向我们展示。显然,您的编码方式会导致一些透明度损失。您最好继续这样做:

eqn01 = 2*x1*y1 + 2*k*x3*y3 + (Sqrt[2 + q])*x1 == m1;
eqn02 = 2*x1*y3 - 2*x3*y1 - (Sqrt[2 + q])*x3 == m2;
params = {y1 -> 1., y3 -> 3, m1 -> 1, m2 -> 2, q -> 1, k -> 1}; (* yr vals here *)
solns = Solve[{eqn01, eqn02} /. params, {x1, x3}]
其次,WL通过解包支持多个赋值,所以如果您真的想保存两个解决方案的原样,您可以将它们解包。例如:

{soln11, soln12} = First@solns
一般来说,确实没有必要这样做。事实上,由于这是一个解决方案的两个部分,通常将它们分开是没有意义的。但是,获得实际值可能很有用:

{x1, x3} /. First@solns
当然,您可以将此值列表存储在变量中,但这很少需要。最后,如果你真的坚持引入变量仅仅是为了存储这两个独立的值——这几乎总是会造成不必要的混乱——你可以再次将它们解包:

{val1, val3} = {x1, x3} /. First@solns

{a,b}={x1,x3}/。First@Solve...
参见此处:
{a,b}={x1,x3}/。First@Solve...
请参见此处: