Julia Symbolics中如何正确展开符号表达式q?
在Julia Symbolics中正确展开矩阵表达式
你的问题出在q是一个1×1的Matrix{Num}类型对象,直接对矩阵调用simplify(..., expand=true)无法完全触发表达式的展开逻辑。正确的做法是先提取矩阵中的单个表达式,再调用展开函数:
解决方案代码
using Symbolics @variables x y z # 执行矩阵乘法得到q q = [x y z]*[1 2 3;4 5 6;5 4 2]*[x y z]' # 提取矩阵内的表达式并展开 expanded_expr = expand(q[1])
说明
q[1]会把1×1矩阵中的Num类型表达式提取出来,脱离矩阵容器的限制expand()函数是Symbolics中专门用于展开代数表达式的工具,相比simplify的expand=true参数,它更直接针对展开操作,能得到完全展开且合并同类项的结果
执行上述代码后,会得到完全展开的二次型表达式:
x^2 + 6x*y + 8x*z + 5y^2 + 10y*z + 2z^2
你也可以用simplify(q[1], expand=true)达到同样效果,但直接使用expand()更简洁高效。
内容的提问来源于stack exchange,提问作者Vinod
相关产品推荐
相关产品推荐

