所以我们可以使用 isObservable 来处理某些系统,但我想知道我们是否可以制作 tham show staps 或做类似的事情。那可能吗?
1 回答
我假设您实际上指的是包中的Observable
andControllable
命令DynamicSystems
。
一些 Maple 例程具有所谓的userinfo
消息,它们是可选显示的,并且可以显示部分步骤。这些通常可以通过调用来启用,比如infolevel[DynamicSystems]:=6
6 是最高级别的详细信息。使用较低的值可能会显示较少的细节。不幸的是,这些特定的 DynamicSystems 例程中似乎没有任何用户信息消息。因此,这对您的情况没有直接帮助。
有时一个包调用另一个包。例程LinearAlgebra:-Rank
在某些时候被调用,当Controllable
被调用时。我猜你不希望在 中看到 userinfo 消息Rank
,这可以通过发出infolevel[LinearAlgebra]:=n
1 到 6 之间的一些 n 来启用。
另一种方法是设置printlevel
高。但是这样做会使所有 Maple 内部调用也变得冗长。比如说,设置的结果输出printlevel:=20
是压倒性的。我怀疑你会发现这种方法有用。
另一种选择是将某些例程设置为选项trace
。有时这样做需要知道适当的内部例程的名称。由于默认情况下并非所有非导出的模块局部变量都是可见的,因此这使情况变得更加复杂。您可以先尝试发出调用,trace(DynamicSystems::ControllableSS):
然后再调用Controllable
您的系统。这显示了一些中间结果,但除非您知道哪些源代码行正在生成这些结果,否则这些结果可能对您没有多大意义。您可以通过发出命令查看源代码,showstat(DynamicSystems::ControllableSS);
这是一个例子,
restart:
with( DynamicSystems ):
aSys := StateSpace( <<1,2>|<3,4>>, <<2,3>>, <<1,0>|<0,1>>, <<0,0>> ):
aSys:-a, aSys:-b, aSys:-c:
trace(DynamicSystems::ControllableSS):
Controllable( aSys );
showstat(DynamicSystems::ControllableSS);
通过查看ControllableSS
例程的源代码,您可以推断它DynamicSystems:-StaircaseTransformation
是在指定 staircase 方法时调用的。因此,您也可以在这里showstat(DynamicSystems::StaircaseTransformation)
查看该内部(本地)例程的来源。或者你也可以trace
这样。
作为一般规则,您可以使用符号来引用exports
模块或包。:-
并且您可以将此类名称传递给trace
并showstat
使用::
符号而不是:-
,除非您首先设置kernelopts(opaquemodules=false)
。如果内部子模块成员的名称中有多个:-
,那么您必须使用圆括号分隔符来使用::
语法来引用它。对不起,这不是那么容易表达的。