Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Объем памяти, доступный на вашем компьютере, может значительно влиять на ваши символьные расчеты. Во-первых, некоторые расчеты не могут запуститься без достаточной памяти. В этом случае вы добираетесь “из памяти” ошибка. Во-вторых, если механизм MuPAD® использует виртуальную память путем свопинга данных по и от устройства хранения данных, расчеты могут запуститься намного медленнее, чем они запускаются, если система не использует виртуальную память. Наблюдение использования памяти при выполнении кода может помочь вам понять, использует ли ваш код доступную память эффективно.
Самый простой инструмент для наблюдения использования памяти является строкой состояния. Можно найти строку состояния в нижней части блокнота MuPAD. Если вы не видите строку состояния, выберите View > Status Bar. Крайне левый конец строки состояния отображает текущее состояние механизма, включая память и время, используемое во время новых расчетов. В то время как расчет все еще запускается, информация о строке состояния продолжает изменяться.
Если механизм не соединяется с вашим блокнотом, строка состояния отображает Not Connected. Для получения дополнительной информации о строке состояния, смотрите Информацию о статусе Просмотра.
Когда вы выполняете расчеты в нескольких блокнотах MuPAD, каждый блокнот запускает свой собственный двигатель. В этом случае см. за общей суммой памяти, используемой всеми механизмами MuPAD (процессы mupkern.exe).
Когда расчет занимает много времени, чтобы запуститься, может быть полезно отобразить информацию о прогрессе. В этом случае MuPAD может выпустить периодические сообщения, показывающие использование активной памяти, зарезервированную память, и время оценки. Можно управлять частотой, с которой MuPAD распечатывает такие сообщения.
Чтобы установить частоту этих периодических сообщений, используйте Pref::report
функция. По умолчанию, значение Pref::report
0; MuPAD не распечатывает периодические сообщения о состоянии. Если вы увеличиваете значение к 1, MuPAD распечатывает сообщения о состоянии приблизительно каждый час. (Точная частота зависит от вашей машины.) Максимальное значение принято Pref::report
9.
Предположим, что вы хотите сгенерировать и отсортировать список 10 000 000 случайных целых чисел. Эти операции занимают много времени из-за огромного числа элементов. Если вы устанавливаете значение Pref::report
к 4, MuPAD отображает несколько сообщений о состоянии при выполнении этих операций:
Pref::report(4):
sort([random() $ i = 1..10^7]):
[used=167852k, reserved=168579k, seconds=30] [used=294614k, reserved=295370k, seconds=60] [used=421376k, reserved=422161k, seconds=90]
Если вы увеличиваете значение Pref::report
к 6, MuPAD распечатывает сообщения о состоянии более часто:
Pref::report(6):
sort([random() $ i = 1..10^7]):
[used=84035k, reserved=84661k, seconds=10] [used=126987k, reserved=127664k, seconds=21] [used=169940k, reserved=170600k, seconds=32] [used=212892k, reserved=213537k, seconds=43] [used=255844k, reserved=256540k, seconds=54] [used=298797k, reserved=299476k, seconds=65] [used=341749k, reserved=342413k, seconds=76] [used=384701k, reserved=385416k, seconds=87] [used=427654k, reserved=428352k, seconds=98] [used=470606k, reserved=471355k, seconds=109]
Каждый раз, когда вы выполняете этот пример, MuPAD добавляет новый список 107 случайных чисел и хранилищ, которые перечисляют в таблице истории. По умолчанию таблица истории содержит до 20 элементов. В то время как этот список остается в таблице истории, MuPAD не может выпустить память, должен был сохранить 107 целых чисел. Чтобы выпустить эту память, используйте одну из этих альтернатив:
Продолжите расчеты, ожидая, пока MuPAD не запишет 20 новых элементов в таблицу истории. Выполнение расчетов с уменьшаемой суммой доступной памяти может быть очень медленным.
Отключите механизм MuPAD, соединенный с блокнотом путем выбора Notebook > Disconnect. Новый механизм запускается, когда вы оцениваете любую команду в блокноте.
Очистите таблицу истории путем устанавливания значения переменной HISTORY
к 0. Эта переменная задает максимальное количество элементов в таблице истории. Восстановить значение по умолчанию HISTORY
, введите delete
HISTORY
:
HISTORY := 0: delete HISTORY: HISTORY
Для получения дополнительной информации о механизме истории в MuPAD, смотрите Механизм Истории.
Для дальнейших расчетов также восстановите значение по умолчанию Pref::report
:
Pref::report(NIL):
MuPAD может распечатать информацию об использовании памяти, когда вы выполняете процедуру в режиме трассировки. В этом случае система сообщает об использовании памяти относительно каждого шага вызова процедуры.
Например, создайте рекурсивную процедуру juggler
это вычисляет последовательность номера Жонглера для любого начального положительного целочисленного n
:
juggler := proc(n:Type::PosInt) begin J := append(J, n); if n = 1 then return(J) end_if: if testtype(n, Type::Even) then juggler(floor(n^(1/2))) else juggler(floor(n^(3/2))) end_if end_proc:
Предположим, что вы хотите видеть отчет использования памяти для каждого вызова этой процедуры. Сначала вызовите prog::trace
функция с Mem
опция. Затем переключите выполнение juggler
процедура к режиму трассировки:
prog::trace(Mem): prog::trace(juggler)
Теперь, когда вы вызываете juggler
процедура, отчет трассировки показывает использование памяти для каждого вызова juggler
:
J := []: juggler(7)
enter juggler(7) [mem: 5338408] enter juggler(18) [mem: 5373600] enter juggler(4) [mem: 5374080] enter juggler(2) [mem: 5374584] enter juggler(1) [mem: 5375064] computed [7, 18, 4, 2, 1] [mem: 5375032] computed [7, 18, 4, 2, 1] [mem: 5374648] computed [7, 18, 4, 2, 1] [mem: 5374264] computed [7, 18, 4, 2, 1] [mem: 5373880] computed [7, 18, 4, 2, 1] [mem: 5373524]
Mem
опция независима от прослеженной процедуры. Теперь, если вы используете prog::trace
прослеживать любую другую процедуру, prog::trace
использование памяти отображений на каждом шаге той процедуры. Удалите эту глобальную опцию для дальнейших расчетов:
prog::trace(Mem = FALSE)
Прекратить прослеживать juggler
процедура, используйте prog::untrace
функция:
prog::untrace(juggler):