Кленовые функции isControllable и isObservable: есть ли способ заставить их показывать шаги? - PullRequest
0 голосов
/ 02 декабря 2010

Таким образом, мы можем использовать isObservable для работы с некоторыми системами, но мне интересно, сможем ли мы сделать шоу-шоу или сделать что-то подобное.Это возможно?

1 Ответ

1 голос
/ 04 декабря 2010

Я полагаю, что вы на самом деле ссылаетесь на команды Observable и Controllable, которые являются частью пакета DynamicSystems.

В некоторых подпрограммах Maple есть так называемые userinfo сообщения,которые отображаются по выбору и которые могут показывать частичные шаги.Обычно они включаются с помощью вызова, подобного infolevel[DynamicSystems]:=6, где 6 - высший уровень детализации.При более низком значении может отображаться меньше деталей.К сожалению, эти конкретные подпрограммы DynamicSystems, похоже, не содержат никаких сообщений userinfo.Так что это не поможет напрямую в вашем случае.

Иногда один пакет вызывает другой.Процедура LinearAlgebra:-Rank вызывается в некоторый момент, когда вызывается Controllable.Я предполагаю, что вы не хотите видеть сообщения userinfo в Rank, что можно было бы включить, введя infolevel[LinearAlgebra]:=n для некоторого n от 1 до 6.

Альтернативой является установка 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 когда указан метод лестницы.Так что и здесь вы можете ввести showstat(DynamicSystems::StaircaseTransformation), чтобы увидеть источник этой внутренней (локальной) подпрограммы.Или вы можете trace эту подпрограмму также.

Как правило, вы можете ссылаться на exports модуля или пакета, используя обозначение :-.И вы можете передать такие имена trace и showstat, используя обозначение :: вместо :-, если только вы не установили kernelopts(opaquemodules=false).Если внутренний член субмодуля имеет более одного :- в своем имени, то вам придется использовать разделители в круглых скобках для ссылки на него с синтаксисом ::.Извините, это не так просто выразить.

...