40. Mathematica. Как можно изменить стандартный порядок вычисления выражения
40. Mathematica. Как можно изменить стандартный порядок вычисления выражения Существует семейство Holdxxx атрибутов, с помощью которых можно управлять порядком вычисления выражения. Перечислим основные атрибуты этого семейства: • Атрибут HoldAll блокирует вычисление всех подвыражений первого уровня, • Атрибут HoldFirst опускает вычисление первого подвыражения первого уровня, • Атрибут HoldRest блокирует вычисление всех подвыражений первого уровня, кроме первого. Такими свойствами наделяют символ, если требуется не вычислять какую-либо часть обрабатываемого системой выражения. При этом говорят, что тот или иной аргумент функции замораживается. SetAttributes[f, HoldFirst] f[l+5, x+2] f[1+5, 2+x] В рассмотренном выше примере заморожен первый аргумент выражения с головой f, поэтому система его не вычислила. В случае, когда необходимо локально вычислить некоторое замороженное подвыражение, применяют функцию Evaluate [expression].
41. Mathematica. Конструкции, управляющие ходом вычисления Table[ChebyshevT[n, x], {n, 1, 4}] {x, -1 + 2 x2, -3 x + 4 x3, 1 - 8 x2 + 8 x4} недостаточно в аргументах функции Plot указать функцию, вычисляющую уравнения этих кривых. Plot[Table[ChebyshevT[n, x], {n, 1, 4}], {x, -1, 1}] General: : stop: Eurther output of Plot: : plnr will be suppressed during this calculation. More.. Символ Plot имеет атрибут HoldAll, аргументы этой функции не вычисляются, и система вернет пустой график, предупредив пользователя сообщением. Функция Plot требует либо задания функций списком готовых уравнений, либо использования функции Evaluate для вычисления этих уравнений. Изменять стандартный порядок вычисления выражения можно также при помощи встроенных функций пакета Unevaluated, Hold, Hold-Form, HoldPattern, HoldComplete. Например, чтобы записать частичную сумму ряда, используем чистую функцию и функцию HoldForm
42. Mathematica. Управляющие структуры выбора Структуры выбора в Mathemaica представлены условными операторами, разветвляющими поток управления. Условный оператор позволяет выбирать различные пути вычисления в программе в зависимости от значения некоторого логического выражения. Основная структура выбора - условный оператор If. Его полная форма If[test, then, else, unknown] Помимо полной формы, этот оператор используется в сокращенных версиях: • If[test, then] • If[test, then, else] Оператор If [test, then] вычисляет выражение then в случае истинности выражения test и возвращает Null в случае, когда значение логического выражения test является ложным. Оператор в таком виде употребляют, когда нужно либо производить или не производить некоторое действие. Форма If[test, then, else] вычисляет выражение then в случае истинности выражения test, в противном случае вычисляется выражение else. Эта конструкция дает выбор между двумя альтернативными действиями. И, наконец, полная форма (26) оператора If выражения предусматривает обработку варианта, когда значение выражения test отлично от значений true и false. В Mathematica нет ограничений на тип выражений, входящих в условный оператор. Таким образом, внутри конструкции выбора может также находиться другой оператор If. Такие структуры называют вложенными управляющими структурами (nested control structure). Такими структурами вполне можно обходиться, но в системе существуют специальные структуры выбора с многочисленными ветвями Which и Swich. Оператор Which [testi, expression!, ..., testn, expression^ имеет четное число аргументов, среди которых п тестов и п выражений, подлежащих вычислению. При вычислении этой структуры последовательно вычисляются выражения testi, i=l, k-1 до тех пор, пока не найдется testk, имеющее значение True. В случае, когда такое условие testk существует, выполняется следующее за ним выражение expression^ Если же все testi имеют значение False, то результат выполнения оператора -значение Null. Если при проверке testi имеет не булево значение, оператор Which остается не вычисленным. Иногда, когда есть вероятность прохождения всех тестов на False, удобно иметь сообщение о создавшейся ситуации. Для этого последним тестом записывается True, а следующее за ним выражение содержит сообщение о ситуации. Конструкция
Switch [expression, рапегпь expression!, patternn, expression^ дает ветвление или выбор не в результате выполнения условия, а после проверки на соответствие выражения expression образцам pattern^ При этом вычисляется выражение, стоящее за первым из образцов, которому соответствует исходное выражение. Если expression не соответствует ни одному из образцов, возвращается не вычисленное выражение с головой Switch. Если в этой ситуации последним указать образец, то будет вычислено выражение, следующее за ним.
43. Mathematica. Управляющие структуры повторения Цикл (loop) - управляющая структура, которая вызывает повторяющееся выполнение некоторой последовательности инструкций. Повторяющиеся действия определяют тело цикла (loop body). Всякая конструкция повторения имеет общие компоненты: • Момент, когда поток управления передается первому выражению внутри цикла, называют точкой входа данного цикла, • Очередной проход через цикл, реализующий повторяющиеся действия, называют итерацией, • Точка, в которой повторение тела цикла завершается и управление передается инструкции, следующей за структурой повторения, называют точкой выхода из цикла. При моделировании явлений мы встречаемся с двумя основными типами циклических процессов: • Цикл, управляемый счетчиком (count-controlled), • Цикл, управляемый событием (event-controlled) Цикл, управляемый счетчиком, выполняется заданное число раз. Цикл, управляемый событием, завершается, когда внутри него происходит событие, дающее сигнал к прекращению работы. Циклы, управляемые счетчиком, используют переменную управления циклом (loop control variable). Перед входом в цикл эта переменная инициализируется, а в теле цикла она должна получать приращение. На выходе из цикла переменная имеет значение, отличное от значения при входе в цикл. Такое состояние переменной цикла не совсем естественно. Удобнее, чтобы переменная цикла изменяла свои значения только внутри цикла, то есть была локальной. Для этого существует механизм локализации переменных, который используется в конструкциях повторения Do, Table, Sum, Product. Одним из аргументов этих функций является итератор, или список итераторов, которые, являясь локальными переменными, управляют количеством повторений вычислений.
Циклы, управляемые событием, делятся на две группы: • Цикл с предусловием, • Цикл с постусловием Конструкция повторения While [test, loop body] является циклом с предусловием. При этом простое или составное выражение loop body вычисляется до тех пор, пока условие test истинно. Перед каждой итерацией проверяется условие test. В случае, когда условие test становится ложным, управление передается инструкции, следующей за оператором While в потоке управления. Конструкция повторения For [start, test, increment, loop body] вычисляет выражение start, затем - выражение test. В случае, когда test имеет значение True, выполняется loop body и increment с целью изменения счетчика, и снова вычисляется test. В случае, когда значением test является False, цикл завершает работу. Тело цикла может содержать управляющую структуру - так создаются вложенные циклы или более сложные управляющие структуры. При этом циклы и условные операторы вкладываются друг в друга полностью, они не могут частично пересекаться.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|