2017-09-04 51 views
0

我正在为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}] 

输出OD的代码是 {{X1 - >61分之18,X3 - > - (61分之15)}} 我怎样才能保存在2个独立的变量这些输出。

+0

'{a,b} = { x1,x3} /。First @ Solve ...' – agentp

+0

请参阅这里:https://mathematica.stackexchange.com/a/18706/12 – Szabolcs

回答

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} = [email protected] 

一般来说,确实没有必要这样做。事实上,由于这些是单一解决方案的两个部分,通常将它们分开是没有意义的。但是,它可以让你的手的实际值是有用的:

{x1, x3} /. [email protected] 

当然,你可以存储在一个变量值的这份名单中,但很少需要。最后,如果你真的坚持仅仅为了存储这两个单独的值而引入变量 - 这几乎总是会产生不必要的混乱 - 你可以再次解压它们:

{val1, val3} = {x1, x3} /. [email protected] 
相关问题