符号工具箱从符号名称中修剪最终 "dot"

Symbolic toolbox trims final "dot" from symbol name

我遇到了八度符号工具箱的奇怪行为,其中以 -dot 结尾的符号变量丢失了最后的 dot-后缀。

pkg load symbolic;
clear, clc;
syms xxxdot
syms % Symbolic variables in current scope: xxxdot
xxxdot % xxxdot = (sym) xxx

我只是偶然发现它,因为我有相同的变量,有和没有后缀 -dot。但请注意,如果定义了另一个符号变量而没有最后的 -dot,Octave symbolic 将不会合并它们。所以数学仍然正确:

pkg load symbolic;
clear, clc;
syms xxxdot xxx % Symbolic variables in current scope: xxxdot xxx
xxxdot + xxx % ans = (sym) xxx + xxx

有人知道这是从哪里来的吗?

我正在使用 Octave 4.2.2-1ubuntu1,octave-symbolic 2.6.0-3build1 (Ubuntu 18.04,内核 4.15.0-101-通用)

我猜你运行正在使用图形界面。

如果您在终端上 运行 octave,您会看到某些 Unicode 字符似乎是从 GUI 中得到的 运行。

此功能没有很好的文档记录(实际上根本没有),但请查看以下页面以了解正在发生的事情:

从本质上讲,octave / symbolic 似乎足够聪明,可以理解变量名后跟有效的类似 latex 的 'notation' 修饰符,如点、帽子、波浪线、ddot、dddot、ddddot 和相应地代表变量:

octave:1> sym('xdot'), sym('xddot'), sym('xdddot'), sym('xddddot'), sym('xhat'), sym('xtilde')
ans = (sym) ẋ
ans = (sym) ẍ
ans = (sym) x⃛
ans = (sym) x⃜
ans = (sym) x̂
ans = (sym) x̃

(实际上,unicode 在 Whosebug 上看起来不太好,但在终端中看起来没问题)。

正如 sympref 所建议的那样,如果您不喜欢这种行为(或者如果您使用的是 GUI 但它不起作用,呃),您可以更改它,例如sympref display asciisympref display flat.

话虽如此,我鼓励您履行社区职责,并将 GUI 缺少​​输出报告为 Octave 错误跟踪器上的错误。 :)
我确定这不是故意的,可能与用于 GUI 的终端缺乏对 unicode 的完全支持有关...