Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Stop a Computation - Wolfram Mathematica

Приостановка и прекращение вычислений

Может так случиться, что Вам захочется остановить Mathematica прямо посредине вычислений. Возможно, Вы запустили вычисление и спохватились, заметив неправильно введенные данные, или вычисление длится слишком долго. Mathematica обеспечивает несколько удобных способов прекратить вычисления, включая как команды меню, а также программные команды.

Команды меню для остановки или выполнения паузы в вычислениях доступны в меню StopAComputationRU_2.gif:

StopAComputationRU_3.gif

Чтобы продемонстрировать прекращение или приостановку вычислений, вначале зададим вычисление, требующее некоторого времени для выполнения.

Этот, заданный функцией Do, цикл последовательно выводит на экран целые числа от 1 до 1000, делая паузу в пол-секунды на каждом шаге. Весь этот процесс займет более десяти минут до завершения:

StopAComputationRU_4.gif

Чтобы прервать это вычисление, сначала выделим скобку ячейки ввода:

StopAComputationRU_5.gif

Затем выберем команду StopAComputationRU_6.gif из меню StopAComputationRU_7.gif:

StopAComputationRU_8.gif

Mathematica прекращает вычисление и отображает ячейку вывода с значением $Aborted:

StopAComputationRU_9.gif

Если команде StopAComputationRU_10.gif не удается прекратить вычисление, Вы можете сделать это путем прекращения работы активного вычислительного ядра.

Выберем название ядра из меню StopAComputationRU_11.gif ? StopAComputationRU_12.gif. Этот пункт находится в самом низу меню StopAComputationRU_13.gif в данном случае, название активного ядра -  Local:

StopAComputationRU_14.gif

Это прекращает все вычисления в выбранном ядре. Однако, с прекращением работы ядра, Вы потеряете результаты, полученные в ходе сессии, включая определения переменных и функций, а также результаты вычислений. Поэтому, нужно пользоваться этим методом с осторожностью.

Для выполнение вычислений, ядро должно работать. Поэтому, если Вы прекратили работу ядра, Вам нужно вновь его запустить. Чтобы сделать это, просто вычислите в "блокноте" любое выражение, либо запустите ядро командой меню StopAComputationRU_15.gif ? StopAComputationRU_16.gif.

Это пример запуска ядра Local после его остановки:

StopAComputationRU_17.gif

Mathematica позволяет мгновенно приостановить вычисления вместо полного их прекращения. Для этого, выделите скобку ячейки, содержащей выполняемое выражение (командный код), а затем выберите команду StopAComputationRU_18.gif из меню StopAComputationRU_19.gif:

StopAComputationRU_20.gif

Вам будет представлено диалоговое окно, позволяющее продолжить вычисление, прекратить вычисление, или запустить подсессию ядра во время приостановки вычисления:

StopAComputationRU_21.gif

Запуск подсессии ядра позволит Вам приостановить вычисление и вычислить другое выражение. Это бывает очень полезно для проверки статуса переменных во время длинного вычислительного процесса или для отладки командного кода.

Mathematica также предоставляет альтернативу использованию команды меню StopAComputationRU_22.gif для запуска подсессии ядра. При работающем вычислительном процессе, выделите скобку ячейки, которую Вы хотите вычислить, а затем выберите пункт меню StopAComputationRU_23.gif ? StopAComputationRU_24.gif.

    

Mathematica позволяет Вам направить в кернел сразу несколько ячеек для вычисления. Для этого, выделите несколько ячеек ввода и нажмите StopAComputationRU_25.gif.

Ячейки вычисляются одна за другой. Скобка каждой ячейки, направленной на вычисление, становится более широкой, что указывает на то, что она вычисляется или же ждет своей очереди быть вычисленной:

StopAComputationRU_26.gif

Для удаления ячейки из очереди на вычисление, начнем с выделения скобки требуемой ячейки. В показанном ниже примере, ожидающая своей очереди ячейка выделена, в то время ка к цикл, заданный функцией Do, продолжает выполняться:

StopAComputationRU_27.gif

Удалим выбранную клетку из очереди на вычисление, воспользовавшись командой StopAComputationRU_28.gif меню StopAComputationRU_29.gif:

StopAComputationRU_30.gif

    

Вы также можете остановить вычисление при помощи функции Abort в качестве части выражения Mathematica.

Остановим вычисление последовательности команд:

In[8]:=

StopAComputationRU_31.gif

StopAComputationRU_32.gif

Out[8]=

StopAComputationRU_33.gif

Зададим функцию для выполнения последовательной аппроксимации с фиксированной точкой, которая прекращается, если значение превышает определенный предел:

In[9]:=

StopAComputationRU_34.gif

В этом примере, неустойчивая итерация прекращается:

In[10]:=

StopAComputationRU_35.gif

Out[10]=

StopAComputationRU_36.gif

Здесь, стабильная итерация аппроксимирует к золотому сечению:

In[11]:=

StopAComputationRU_37.gif

Out[11]=

StopAComputationRU_38.gif