如何提取mathematica输出

时间:2010-09-22 20:43:36

标签: wolfram-mathematica

我的mathematica单元格的输出只是一个由Solve[%, Subscript[u, i, j + 1]]生成的长代数方程。

{{Subscript[u, i, 1 + j] -> (1/(
   2 h^2))(-2 h^2 k Subscript[f, i, j] + 2 h^2 Subscript[u, i, j] + 
     2 b h^2 k Subscript[u, i, j] - 
     h k Subscript[u, -1 + i, j] Subscript[\[Mu], i, j] + 
     h k Subscript[u, 1 + i, j] Subscript[\[Mu], i, j] + 
     2 k Subscript[u, -1 + i, j] Subscript[\[Sigma], i, j] - 
     4 k Subscript[u, i, j] Subscript[\[Sigma], i, j] + 
     2 k Subscript[u, 1 + i, j] Subscript[\[Sigma], i, j])}}

我想在这个表达式的右侧收集$ u_ {i,j} $这些术语,但我不知道如何处理Solve []的输出。即我想做点什么

Collect[%, {Subscript[u, i, j - 1], Subscript[u, i, j], Subscript[u, 
  i, j + 1]}]

但是这里%并没有完全解决问题。关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:3)

Mathematica返回嵌套列表,因为通常会有多个带有多个变量的解决方案。

提取替换规则的RHS的最有效方法是实际使用它,例如

In[1]:= x/.Solve[x - m b - m c == 0,x]
        Collect[First[%],m]
Out[1]= {b m + c m}
Out[2]= (b + c) m

也就是说,命令Part [](或[[]])可以使用多个参数,因此不需要重复:

In[3]:= Solve[x-m b-m c==0,x]
        Collect[%[[1,1,2]],m]
Out[3]= {{x->b m+c m}}
Out[4]= (b + c) m

答案 1 :(得分:1)

如果计算出来,Mathematica会返回嵌套列表,可以通过%[[1]] [[1]]

访问