Материал: Matlab. Практический подход. Самоучитель

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Самоучитель Matlab

На заметку

Для добавления в конец списка нового элемента может использоваться функция append() или так называемый точечный синтаксис. Здесь использован второй способ. Инструкцией вида список.[элемент] возвращается список, который получается объединением исходного списка и элемента, указанного после точки в квадратных скобках. Поэтому команда L:=L.[rnd()], например, означает, что переменной L в качестве значения присваивается список, который получается добавлением в конец списка – текущего значения L элемента, вычисляемого как rnd() (случайное число).

После выполнения оператора цикла список L заполнен десятью случайными числами. На следующем этапе создаем случайную матрицу из нулей и единиц. Для этого командой ones:=random(2) создаем функцию, которая генерирует целое случайное число в диапазоне от 0 до 1 включительно, то есть с равной вероятностью генерирует нули и единицы.

На заметку

Если функции random() передан один аргумент (например, m), то это все равно, как если бы был указан диапазон 0..m-1. Другими словами, будут генерироваться неотрицательные целые числа, меньшие аргумента функции random().

Командой n:=5 инициализируется переменная n, а затем эта переменная используется в команде A:=matrix(n,n,[ones()$i=1..n*n]). В результате создается упомянутая выше матрица из нулей и единиц. Матрица записывается в переменную A. Формируется матрица с помощью встроенной функции matrix(). Первые два аргумента функции matrix() определяют размер матрицы (в данном случае матрица состоит из n строк и n столбцов). Третий аргумент – список элементов матрицы. Матрица элементов заполняется построчно. Список элементов создается инструкцией [ones()$i=1..n*n]. Это заключенная в квадратные скобки последовательность. Последовательность, в свою очередь, создается с помощью оператора создания последовательности $. Слева от оператора $ указывается общее выражение, которое используется для вычисления элементов последовательности. Справа от оператора $ указывается индексная переменная (в общем случае она может использоваться в выражении слева от оператора $) и диапазон изменения индексной переменной. Поскольку в квадратной матрице размера n всего элементов n*n, то индексная переменная пробегает значения от 1 до n*n.

Для выполнения кода, записанного в файле MyCode.mu, в рабочем документе среды MuPAD выбираем команду Notebook Read Commands (рис. 9.49).

406

Глава 9. Символьные вычисления

Рис. 9.49. Выполнение кода из файла

В открывшемся диалоговом окне необходимо выбрать соответствующий файл для выполнения кода (в данном случае это файл MyCode.mu). Хотя внешних проявлений этого чудесного процесса практически не будет, эффект все же есть. Он состоит в том, что в рабочем документе можно использовать все те переменные, что содержатся в коде файла MyCode.mu и с которыми выполнялись вычисления.

На заметку

Поскольку среда MuPAD предназначена для символьных расчетов, то в рабочем документе можно использовать любые переменные, названия которых разрешены синтаксическими правилами командного языка. Вопрос только в том, какие значения будут иметь эти переменные. После выполнения командного кода из файла MyCode.mu переменные, которые есть в этом коде, будут иметь значения, определяемые в коде.

На рис. 9.50 показан рабочий документ среды MuPAD, в котором после выполнения кода из файла MyCode.mu проводятся вычисления с переменными, использованными в этом коде.

В частности, если в пустом рабочем документе выполнить команду L (имя списка из случайных чисел), получим результат: список из десяти случайных чисел. Аналогичная ситуация и для матрицы A – хотя непосредственно

врабочем документе MuPAD матрица не определялась, у соответствующей переменной есть значение. Легко проверить, что имеют числовые значения индексные переменные k и i, использовавшиеся в операторе цикла и команде с оператором создания последовательности. Доступны также созданные

вкоде функции. Например, командой rnd()$i=1..n создается список из пяти (значение переменной n) случайных чисел в диапазоне от -10 до 10.

407

Самоучитель Matlab

Рис. 9.50. Рабочее окно с командами после выполнения кода файла

На заметку

Мы кратко уже обсуждали методы работы с последовательностями и списками. Последовательность представляет собой набор объектов (разного типа), разделенных запятыми. Кроме явного перечисления элементов последовательности, существует несколько способов ее создания. Обычно прибегают к помощи специального оператора создания последовательности $ или функции _seqgen() (точнее, это функциональная форма оператора $). Для создания последовательности в "автоматическом" режиме следует указать общее выражение для генерирования элементов последовательности, а также индексную переменную и множество ее значений. Ели используется функция _seqgen(), то ее аргументы указываются именно так: выражение (зависящее, как правило, от индексной переменной), индексная переменная и диапазон ее изменения (или список значений). Если последовательность создается с помощью оператора $, то выражение для элементов последовательности указывается слева от оператора, а все остальное – справа.

Список представляет собой упорядоченный набор данных. Технически от последовательности список отличается тем, что его элементы все вместе заключаются в квадратные скобки. Другими словами, список – это заключенная в квадратные скобки последовательность. Что касается сути вопроса, то главное

408

Глава 9. Символьные вычисления

отличие списка от последовательности в том, что вложенные списки создавать можно, а вложенные последовательности – нет. Другими словами, элементом списка может быть другой список, а при попытке вставить одну последовательность в качестве элемента в другую последовательность эти последовательности просто объединяются.

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

Кроме этого, существуют еще таблицы, матрицы и массивы. Эти структуры создаются соответственно с помощью функций table(), matrix() и array(). Отличие между матрицей и объектом состоит в том, что у матрицы индексы целочисленные, а у таблицы это могут быть произвольные величины. Одно из отличий матрицы и массива (помимо способа хранения данных) состоит в том, что матрица может быть одномерной (вектор) или двумерной, а размерность массива может быть и больше.

Создание анимации

- Хорошо, допустим, Земля вращается вокруг Солнца.

- То есть как, "допустим"?

К/ф "Приключения Шерлока Холмса и доктора Ватсона. Знакомство"

Ранее мы уже познакомились с функцией plot(), которая позволяет создавать двумерные и трехмерные графики. Важно учесть еще два важных обстоятельства: во-первых, с помощью функции plot() можно создавать анимацию и, во-вторых, это далеко не единственная функция для создания графики и анимации. Начнем с создания анимации с помощью функции plot(). Обычно так создаются простые анимационные сюжеты.

Общая идея состоит в том, что при создании анимации с помощью функции plot() добавляется еще один дополнительный аргумент в формате переменная=диапазон. Эта переменная играет роль времени. Пример создания двумерной анимации представлен в документе на рис. 9.51.

Здесь мы использовали команду f:=x->exp(-x^2/2)/sqrt(2*PI) для

определения функциональной зависимости вида f (x) = exp(x2 2 )

2π

(Гауссово распределение). Функцию F(x,t) = (f (x +t) + f (x t)) 2 определяем командой F:=(x,t)->(f(x+t)+f(x-t))/2. Именно на основе этой функции создаем анимацию. Первая переменная x в этой функции соответствует пространственной переменной, а вторая переменная t соответствует времени. Функция F(x,t) описывает две разбегающиеся в разные

409

Самоучитель Matlab

Рис. 9.51. Создание двумерной анимации с помощью функции plot()

стороны волны Гауссового профиля. Такой результат может быть получен при решении задачи о колебаниях бесконечной струны с начальным распределением, которое описывается функцией f (x).

Для создания анимации используем команду plot(F(x,t),x=-15..15, t=0..10). В отличие от команды создания обычной графики здесь в аргументах функции plot() указан еще интервал t=0..10 изменения временной переменной t. При выполнении этой команды внешне впечатление такое, что создан график функции. Но если этот график выделить (щелкнув в области графика мышкой), получим результат, как на рис. 9.52.

Обратить стоит внимание на панели, которые появляются в окне редактора среды MuPAD сразу под панелью меню. Нас в первую очередь интересует панель с ползунком и кнопками управления анимацией. По умолчанию эта панель отображается справа. Для запуска анимации необходимо щелкнуть кнопку с изображением стрелки (в виде треугольника), как показано на

410

Источник: https://studfile.net/preview/16433384/