我正在为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 - > - (61分之15)}} 如何将这些输出保存在2个单独的变量中。
答案 0 :(得分:0)
首先,您已经为其他变量的特定值提供了输出,您尚未向我们展示。不出所料,你编码的方式会导致一些透明度的损失。你最好继续这样做:
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