Sza*_*lcs 6 wolfram-mathematica
我想在Mathematica中绘制一个"分解树".
我有一个函数f,它接受一个对象并返回该对象的所有组件作为列表.出于这个问题的目的,让我们按如下方式分解Mathematica表达式(我的实际f依赖于外部数据库来分解不同类型的对象,所以我不能轻易地发布它):
f[e_?AtomQ] := {}
f[e_] := List @@ e
Run Code Online (Sandbox Code Playgroud)
我想创建一个树图,显示在递归继续应用时如何分解对象f.对于f上面的特定示例TreeForm,除了应该在每个节点上显示完整表达式(而不仅仅是头部)之外,我们应该得到与输出非常相似的东西.节点的子节点将成为其返回的组件f.
请注意,元素可以在这样的分解树中重复,但在输出中不会重复元素,TreePlot因为它与图形一起使用.一个想法是为每个节点生成一个唯一的"内部名称",构建一个图形,并使用TreePlot,将其设置为显示节点的实际形式而不是它们的"内部名称"
这个怎么样?
tf[x_] := f[x] /. {{} :> x, r_ :> x @@ tf /@ r}
Run Code Online (Sandbox Code Playgroud)

如果任何条款不是惰性的,这种"简单"(?)方法将不起作用.
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |