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



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

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

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

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

有谁知道这是从哪里来的?

我正在使用八度 4.2.2-1ubuntu1,八度符号 2.6.0-3build1 (Ubuntu 18.04,内核 4.15.0-101 通用(

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

如果您在终端上运行八度音阶,您将看到某些似乎从 GUI 中截断的 unicode 字符。

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

  • https://octave.sourceforge.io/symbolic/function/sympref.html(查看显示部分(
  • https://octave.sourceforge.io/symbolic/function/@sym/pretty.html

从本质上讲,八度/符号似乎足够聪明,可以理解变量名称后跟有效的类似乳胶的"符号"修饰符,如点、帽子、波浪号、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 在 StackOverflow 上看起来并不好,但在终端中看起来还可以(。

正如sympref所建议的那样,如果你不喜欢这种行为(或者如果你在GUI上并且它不起作用,duh(,你可以改变它,例如sympref display asciisympref display flat.

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

最新更新