Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 1 по ММ. Основы работы с пакетом Matlab

.pdf
Скачиваний:
101
Добавлен:
01.06.2015
Размер:
1.79 Mб
Скачать

11

Программа Matlab сначала вычислила сумму 1+2, затем записала результат в специальную переменную ans и вывела ее значение, равное 3, в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая, что Matlab готов к дальнейшим вычислениям. Можно набирать в командной строке новые выражения и находить их значения. Если требуется продолжить работу с предыдущим выражением, например, вычислить (1+2)/4.5, то проще всего воспользоваться уже имеющимся результатом, который хранится в переменной ans. Наберите ans/4.5 (при вводе десятичных дробей используется точка) и нажмите Enter, получается:

Рис. 3 Графическое представление простейших вычислений

Командное окно можно использовать для текущих вычислений в режиме калькулятора. Для этого в командной строке вводится математическое выражение. После нажатия Enter будет выведен результат. В системе Matlab используются традиционные арифметические операции +, –, *, /, а также операция возведения в степень ^. Для определения приоритета выполнения операций в выражении можно использовать круглые скобки. При вводе дробных чисел используется десятичная точка (не запятая!).

Общие правила вычислений в командном окне сводятся к следующему:

12

1.Работа с системой в режиме прямых вычислений носит диалоговый характер и происходит по правилу «задал выражение,

получи ответ».

2.Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши Enter. Для указания текущего места ввода и

вычисления используется символ >> на пустой строке. В

предшествующих месту ввода строках редактирование выражений и вычисления невозможны.

3.Данные вводятся с помощью строчного редактора (встроенного в Matlab (по умолчанию) или внешнего, выбираемого пользователем).

4.Знаком присваивания является привычный математикам знак равенства =, а не комбинированный знак :=, как во многих других математических системах.

5.Правила записи матрицы, вектора и скаляра: большими буквами (например, А) обозначаются матрицы, малыми (а) – векторы

искаляры. Векторные функции (выдающие значения в виде вектора) обозначаются большими буквами (F(x)), скалярные функции (их значение – скаляр – действительное число) обозначаются малыми буквами (f(x)).

6.Комплексное или мнимое число определяется по наличию в его составе констант i или j, которым присваивается значение

qrt(-1) = -1.

Комплексное число можно вводить одним из следующих способов:

5+3i; 5+3*I; 5+3j; 5+3*j

или

5+3*sqrt(-1).

7. Значения аргумента функции в виде выражения присваивания вводятся раньше выражения функции и отделяются от него точкой с запятой (см. далее пп.11-13). Аргумент в виде одного числа можно вставлять в окаймлении круглых скобок непосредственно в выражение функции. Правильный ввод простейших вычисляемых выражений:

13

y = sin (0.35) Enter

или

sin (0.35) Enter.

Если аргументов несколько, то они отделяются запятыми. Если вычисляемых функций несколько в одном месте ввода, то они отделяются запятыми.

8. Арифметические операции для массивов отличаются от матричных операций наличием точки перед знаком операции:

А.*Б (умножение массивов – массивы должны иметь одинаковое количество чисел или один из них должен быть числом);

А./Б (деление);

А.\Б (левое деление);

А.^Б (возведение в степень).

Точка перед «+» и «» не ставится!

9.Встроенные функции (например, sin) записываются строчными буквами и их аргументы указываются в круглых скобках. Если аргументов несколько, то они отделяются запятыми.

10.Для изменения формата вывода результата вычисления необходимо до нажатия клавиши Enter установить нужный формат через меню «Файл Свойства».

11.Для блокировки вывода результата некоторого выражения (ввиду промежуточного характера) после него надо установить знак ; (точка с запятой): если блокировка отсутствует, то Matlab выдаст результат расчета по части выражения до неустановленного знака и сообщение об ошибке, а остальную часть вычисляемого выражения игнорирует, как показано на рис. 4.в.

14

а)

»x = [0.5 0.7 1]; Y = sin(x)

 

Y = 0.4794

0.6442 0.8415

б)

»x = [0.5 0.7 1; 1 3 12; 0.8 0.1 3]; Y = sin(x)

 

Y =0.4794 0.6442 0.8415

 

0.8415

0.1411

0.5366

 

0.7174

0.0998

0.1411

»x = [0.5 0.7 1] Y = sin(x)

??? x = [0.5 0.7 1] Y = sin(x) Error: Missing MATLAB operator

Рис. 4. Правильная запись вычисления функции на одномерном (а) и

многомерном (б) массивах и неправильная (в) (пропуск точки с запятой после первого оператора)

12.Если не указана переменная для значения результата вычислений, то Matlab назначает такую переменную с именем ans.

13.Результат вычислений выводится в строках вывода (без знака

>>).

14.Для вычисления функции на одномерном или многомерном матричных массивах значений аргумента необходимо помнить правила.

В векторе (одномерном массиве) значения заключены в квадратные скобки и отделяются друг от друга пробелом (рис.5, а); в матрице (многомерном массиве) значения заключены тоже в квадратные скобки, причем, строки отделяются точкой с запятой (порядок следования строк: левая выше правой), а значения в каждой строке отделяются аналогично вектору (рис.5, б).

15.Если значения аргумента вычисляемой функции являются членами отрезка арифметической прогрессии с заданной разностью (шагом), то для записи аргумента применяется оператор «:» (двоеточие) как на рис. 5. При разности, равной единице, ее запись в операторе можно опускать (см. рис. 5, б).

15

а)

» x=[1:2.5:16.5]; Y=sin(x)

 

 

Y =0.8415 0.3508 –0.2794

0.7985 –1.0000 0.8038 –0.2879

б)

» x=1:10; Y=sin(x)

 

 

Y =

Columns 1 through 7

 

 

0.8415 0.9093 0.1411 –0.7568 –0.9589 –0.2794 0.6570

 

 

Columns 8 through 10

 

 

0.9894

0.4121

–0.5440

в)

»x=[1:2.5:11.5; 2:6]; Y=sin(x)

 

Y =

0.8415

-0.3508

-0.2794 0.7985 -1.0000 0.9093 0.1411

 

 

-0.7568

-0.9589

-0.2794

Рис.5. Правильная запись вычисления функции на одномерном массиве аргумента в виде отрезка арифметической прогрессии (с разностями 2,5 (а) и

1 (б)) и в виде 2-строчной матрицы с теми же разностями (в)

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

16.Комментарии записываются в отдельную строку, помечаемую знаком «%» (процент) в первом знакоместе строки (см. рис. 6, а).

Разбиение строки с длинным выражением или комментарием на две производится установкой курсора перед переносимой на создаваемую вторую строку частью выражения и нажатием клавиш Shift + Enter (см. рис.6, б) – двукратное разбиение выражения х = [23 45 67 45] на три строки).

17.Соединение двух строк в одну в программе или в выражении производится установкой курсора в начало второй строки и нажатием клавиш Shift + Backspace (рис. 6, в) – соединение двух строк с выражениями 67 и 45]).

16

а) »x=[0.5 0.7 1];Y=sin(x)

%Комментарии размещаются в отдельных строках

Y =

0.4794 0.6442 0.8415

б) » x=[23 45 67 45] x=[23 45

67

45]

в) » x=[23 45 67

45]

Рис. 6. Ввод комментария в вычисляемое выражение или программу (а), разбиение первой строки на три (б), объединение 3-й и 2-й строк (в)

18. Вычисляемое выражение сразу после завершения вычисления можно ввести вновь в текущее место ввода нажатием кнопки

«стрелка вверх» (для изменения величин аргументов или коррекции выражения).

Повторное нажатие кнопки заменит текущие условия на условия,

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

Ранее вытеснявшееся выражение можно быстро вставить в место ввода путем выделения его левой кнопкой мышки (кнопка далее отпускается) и небольшого протягивания его вниз повторно нажатой левой кнопкой: Matlab сам вставит выделенное выражение.

19.Ранее примененную функцию можно вставить в командное окно через копирование еѐ из окна Command History (Протокола команд), в котором все ранее использованные команды и функции сохраняются до тех пор, пока пользователь не удалит их.

20.Чтобы сохранить данные вычислений в окне управления (выражения, программы, результаты или их части) для повторного вызова и работы, необходимо:

выделить данные,

17

скопировать их в буфер,

вызвать редактор-отладчик m-файлов через меню «Файл- Создать-m-файл», либо командой edit в командном окне,

вставить скопированные данные в открывшийся новый m-файл и сохранить его через меню редактора File-Save As… Файл-

Сохранить как»).

21. Для продолжения вычислительной работы в окне управления с данными, сохраненными по правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделить в нем требуемые для работы фрагменты, скопировать их в буфер и вставить

втекущее место ввода окна управления.

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

Система Matlab различает строчные и прописные буквы в именах переменных (A и a – это разные переменные). Знак = соответствует операции присваивания. Значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим пространством (Workspace). Использование переменных приведем в примере 2.

Пример 2. Использование переменных

a 3;

1

b 4;

1

c a ^ b b ^ a a * b 2

c

 

133

 

d a c b ^ 3;

1

d

 

d

3

72

 

Для просмотра рабочей области удобно использовать полосы скроллинга или клавиши Home, End, для перемещения влево или

18

вправо, и PageUp, PageDown для перемещения вверх или вниз. Если вдруг после перемещения по рабочей области командного окна пропала командная строка с мигающим курсором, просто нажмите Enter.

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

4.3Сохранение рабочей среды

Самый простой способ сохранить все значения переменных —

использовать в меню File пункт Save Workspase As. При этом появляется диалоговое окно Save Workspase Variables, в котором следует указать каталог и имя файла. По умолчанию предлагается сохранить файл в подкаталоге work основного каталога MatLab. Программа сохранит результаты работы в файле с расширением mat. Теперь можно закрыть MatLab. В следующем сеансе работы для восстановления значений переменных следует открыть этот сохраненный файл при помощи подпункта Open меню File. Теперь все переменные, определенные в прошлом сеансе, опять стали доступными. Их можно использовать во вновь вводимых командах.

4.4Программирование в Matlab

Множество математических задач решается в системе Matlab

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

Большинство объектов этого языка (команды, операторы и функции) одновременно являются объектами входного языка общения

ссистемой в командном режиме работы.

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

19

их выполнения переменных и функций. А вот программы на языке программирования Matlab сохраняются в виде текстовых m-файлов. При этом могут сохраняться как целые программы в виде файловсценариев, так и отдельные программные модули — функции. Кроме того, важно, что программа может менять структуру алгоритмов вычислений в зависимости от входных данных и данных, создаваемых

входе вычислений.

Спозиций программиста язык программирования Matlab

является типичным проблемно-ориентированным языком программирования высокого уровня, содержащим сложные операторы (построения разнообразных графиков, генерации матриц определенного вида и т. д.) и функции (матричные функции, функции быстрого преобразования Фурье и др.).

Программами в системе Matlab являются m-файлы текстового формата. Язык программирования системы Matlab имеет следующие средства:

данные различного типа;

константы и переменные;

операторы, включая операторы математических выражений;

встроенные команды и функции;

функции пользователя;

управляющие структуры;

системные операторы и функции;

средства расширения языка.

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

20

Интерпретация означает, что Matlab не создает исполняемых конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда Matlab. Однако для программ на языке Matlab созданы компиляторы, транслирующие программы Matlab в коды языков программирования С и C++. Это решает задачу создания исполняемых программ, первоначально разрабатываемых в среде Matlab. Компиляторы для системы Matlab являются вполне самостоятельными программными средствами и здесь не рассматриваются.

4.4.1 Средства программирования в Matlab

4.4.1.1 Основные типы данных

Система Matlab работает со следующими типами данных:

Число – числовое значение.

Массив – данные (объекты) одной природы сгруппированные по одному и тому же характерному признаку.

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

Многомерный массив – пространственная матрица имеющая три и более размерности, каждый элемент имеет индекс, однозначно определяющий его положение. Многомерный массив – это матрица матриц.

Вектор – одномерная матрица. Без специальных указаний пользователя – это матрица-столбец.

Стока – набор (массив) символов из символьных таблиц компьютера.

Структура – набор разнотипных полей. Поле может содержать как массив, так и строку или число. Одно поле содержит данные только одного типа.