You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Mathematica不将标量与向量逐元素相乘,保留原式形式

Mathematica中保留标量与向量乘积的显示形式

当你定义u = {1,2,3}后,a*u默认会展开为{a,2a,3a}。要实现显示为a {1,2,3}的效果,可尝试以下几种方法:

方法1:使用Inactive包裹乘法

通过Inactive阻止乘法自动展开,保留原式结构:

u = {1, 2, 3};
expr = Inactive[Times][a, u]

输出显示为a {1,2,3}。若需要实际计算展开结果,执行Activate[expr]即可得到{a,2a,3a}。

方法2:自定义Format规则

针对特定变量u设置显示规则:

u = {1, 2, 3};
Format[a_ * u] := a_ u

此后输入a*u会直接显示为a {1,2,3}。如果需要通用到所有标量与列表的乘积,可调整规则为:

Format[c_?NumberQ * v_List] := c v

注意:通用规则可能影响其他列表乘法的显示,按需使用。

方法3:通过MakeBoxes控制输出格式

直接定义表达式的输出盒子结构,精细控制显示效果:

u = {1, 2, 3};
MakeBoxes[a_ * u, StandardForm] := RowBox[{MakeBoxes[a], " ", MakeBoxes[u]}]

该方法仅改变显示形式,表达式的实际计算值仍为展开后的结果。

内容的提问来源于stack exchange,提问作者Felipe Jiménez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:09:52