Как сделать программу в вольфрам математика
Следующий пример показывает применение цикла Do для задания функции, вычисляющей п-е число Фибоначчи:
Обратите внимание на применение в этом примере функции Module. Она создает программный модуль с локальными переменными (в нашем случае fn1 и fn2), в котором организовано рекуррентное вычисление чисел Фибоначчи.
Наконец, последний пример показывает применение цикла Do для создания цепной дроби:
Циклы типа For
Другой вид цикла – цикл For – реализуется одноименной функцией:
В ней сначала один раз вычисляется выражение start, а затем поочередно вычисляются выражения body и incr до тех пор, пока условие test не перестанет давать логическое значение True. Когда это случится, то есть когда test даст False, цикл заканчивается.
Следующий пример показывает создание простой программы с циклом For и результат ее выполнения:
Программа, приведенная выше, позволяет наблюдать за изменением значений управляющей переменной цикла i и переменной х, получающей за каждый цикл приращение, равное 5*i. В конце документа показан пример на использование функции возврата значений Return [x]. В цикле For не предусмотрено задание локальных переменных, так что надо следить за назначением переменных – при использовании глобальных переменных неизбежны побочные эффекты.
Циклы типа While
Итак, функция For позволяет создавать циклы, которые завершаются при выполнении (эволюции) какого-либо условия. Такие циклы можно организовать и с помощью функции While [test, expr], которая выполняет expr до тех пор, пока test не перестанет давать логическое значение True.
Ниже дан практический пример организации и использования цикла While:
В основе процедурного программирования лежит понятие процедуры и типовых средств управления — циклов, условных и безусловных выражений и т. д. Процедурный подход — самый распространенный в программировании, и разработчики Mathematica были вынуждены обеспечить его полную поддержку. Однако программирование систем Mathematica и в этом случае остается функциональным, поскольку элементы процедурного программирования существуют в конечном счете в виде функций.
Обратите внимание на то, что в теле процедуры символ г используется как вспомогательная переменная. Эта процедура возвращает символьное выражение
В общем случае в теле процедуры могут находиться произвольные выражения, разумеется, с синтаксисом, присущим языку программирования системы. Процедура может не возвращать никаких значений, а просто выполнять определенный комплекс операций. Область записи подобных элементарных процедур ограничена ячейкой (строкой) ввода.
Для задания процедуры со списком локальных переменных и телом ргос может использоваться функция Module [ ,ргос]. С применением этой функции мы столкнемся позже.
Для создания полноценных процедур и функций, которые могут располагаться в любом числе строк, может использоваться базовая структура — блок:
- Block [, procedure] — задание процедуры с декларацией списка локальных переменных х, у. ;
- Block[ , procedure] — задание процедуры с декларацией списка переменных х, у. с заданными начальными значениями.
Пример использования базовой структуры:
Обратите внимание: последние действия показывают, что переменная и, введенная в тело базовой структуры, является действительно локальной переменной, и присвоение ей символьного выражения (1 + х) ^ 2 в теле блока игнорируется вне этого блока. Если переменная и до применения в функции была не определена, то она так и остается неопределенной. А если она имела до этого некоторое значение (в нашем случае — 123 456), то и по выходе из процедуры она будет иметь это значение.
Многие задачи в системе Mathematica решаются с использованием линейных алгоритмов и программ. Они могут быть представлены непрерывной цепочкой выражений, выполняемых последовательно от начала до конца.
Однако в большинстве случаев серьезные вычисления базируются на использовании циклических и разветвленных алгоритмов и программ. При этом, в зависимости от промежуточных или исходных данных, вычисления могут идти по разным ветвям программы, циклически повторяться и т. д. Для реализации разветвленных программ язык программирования должен содержать управляющие структуры, то есть специальные конструкции языка, реализующие в программах ветвление. Они используются при различных методах программирования, в том числе при процедурном и функциональном программировании.
К важнейшим управляющим структурам в языках программирования относятся циклы. С их помощью осуществляется циклическое исполнение некоторого выражения ехрr заданное число раз. Это число нередко определяется значением некоторой управляющей переменной (например, i, j и т. д.), меняющейся либо с шагом +1, либо от начального значения imin до конечного значения imax с шагом di. Циклы могут быть одинарными или множественными — вложенными друг в друга. Последние используют ряд управляющих переменных. Такого рода циклы организуются с помощью функции Do: О Do [expr, ] — выполняет imax раз вычисление ехрг; О Do [expr, ] — вычисляет ехрг с переменной i, последовательно принимающей значения от 1 до imax (с шагом 1);
- Do [expr, ]—вычисляет ехрr с переменной i, последовательно принимающей значения от imin до imax с шагом 1;
- Do [expr, ] — вычисляет ехрг с переменной i, последовательно принимающей значения от 1 до imax с шагом di;
- Do [expr, , . ] — вычисляет expr, организуя ряд вложенных циклов с управляющими переменными j, i и т. д.
Примеры организации цикла Do и его исполнения представлены ниже:
For [ start , test , incr , body ]
executes start , then repeatedly evaluates body and incr until test fails to give True .
Читайте также: