Получение справочных сведений в matlab. Основы вычислений в MatLab Панель инструментов системы MATLAB

Цель работы: знакомство с основными командами системы MATLAB

Руководство по лабораторной работе

ЧТО ТАКОЕ MATLAB?

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

    математические вычисления;

    создание алгоритмов;

    моделирование;

    анализ данных, исследования и визуализация;

    научная и инженерная графика;

    разработка приложений, включая создание графического интерфейса.

MATLAB – это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием “скалярных” языков программирования, таких как Си или Фортран .

Слово MATLAB означает матричная лаборатория (matrix laboratory ). MATLAB был специально написан для обеспечения легкого доступа к LINPACK и EISPACK , которые представляют собой современные программные средства для матричных вычислений.

MATLAB развивался в течении нескольких лет, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки. В промышленности, MATLAB – это инструмент для высокопродуктивных исследований, разработок и анализа данных.

В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes . Они очень важны для большинства пользователей MATLAB , так как позволяют изучать и применять специализированные методы. Toolboxes – это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.

СИСТЕМА MATLAB

Система MATLAB состоит из пяти основных частей:

    Язык MATLAB . Это язык матриц и массивов высокого уровня с управлением потоками, функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования. Это позволяет как программировать в “небольшом масштабе” для быстрого создания черновых программ, так и в “большом” для создания больших и сложных приложений.

    Среда MATLAB . Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB . Она включает в себя средства для управления переменными в рабочем пространстве MATLAB , вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложений MATLAB.

    Управляемая графика. Это графическая система MATLAB , которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактировать внешний вид графики, также как при создании Графического Пользовательского Интерфейса (GUI ) для MATLAB приложений.

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

Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране , которые взаимодействуют с MATLAB . Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.

О SIMULINK

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

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

Real-Time Workshop – это программа, которая позволяет генерировать С код из блоков диаграмм и запускать их на выполнение на различных системах реального времени.

МАТРИЦЫ И МАГИЧЕСКИЕ КВАДРАТЫ

Лучший способ начать работу с MATLAB - это научиться обращаться с матрицами. В MATLAB матрица – это прямоугольный массив чисел. Особое значение придается матрицам 1×1, которые являются скалярами, и матрицам, имеющим один столбец или одну строку, - векторам. MATLAB использует различные способы для хранения численных и не численных данных, однако вначале лучше всего рассматривать все данные как матрицы. MATLAB организован так, чтобы все операции в нем были как можно более естественными. В то время как другие программные языки работают с числами как элементами языка, MATLAB позволяет вам быстро и легко оперировать с целыми матрицами.

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

ВВОД МАТРИЦ

Вы можете вводить матрицы в MATLAB несколькими способами:

    вводить полный список элементов;

    загружать матрицы из внешних файлов;

    генерировать матрицы, используя встроенные функции;

    создавать матрицы с помощью ваших собственных функций в М-файлах.

Начтем с введения матрицы Дюрера как списка элементов. Вы должны следовать нескольким основным условиям:

    отделять элементы строки пробелами или запятыми

    использовать точку с запятой, ; , для обозначения окончания каждой строки

    окружать весь список элементов квадратными скобками, .

Чтобы ввести матрицу Дюрера просто напишите (рис. 1.1):

A =

MATLAB отобразит матрицу, которую мы ввели,

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Рис. 1.1 Пример фрагмента командного окна MATLAB

Это точно соответствует числам на гравюре. Если мы ввели матрицу, то она автоматически запоминается средой MATLAB . И мы можем к ней легко обратиться как к А . Сейчас мы имеем А в рабочем пространстве MATLAB (рис. 1.2)

Рис. 1.2 Пример фрагмента рабочего пространства MATLAB

ОПЕРАЦИИ СУММИРОВАНИЯ ЭЛЕМЕНТОВ, ТРАНСПОНИРОВАНИЯ И ДИАГОНАЛИЗАЦИИ МАТРИЦЫ

Вы возможно уже знаете, что особые свойства магического квадрата связаны с различными способами суммирования его элементов. Если вы берёте сумму элементов вдоль какой-либо строки или столбца, или вдоль какой-либо из двух главных диагоналей, вы всегда получите одно и тоже число. Давайте проверим это, используя MATLAB . Первое утверждение, которое мы проверим –

sum(A)

MATLAB выдаст ответ

ans =

34 34 34 34

Когда выходная переменная не определена, MATLAB использует переменную ans , коротко от answer – ответ, для хранения результатов вычисления. Мы подсчитали вектор-строку, содержащую сумму элементов столбцов матрицы А . Действительно, каждый столбец имеет одинаковую сумму, магическую сумму, равную 34.

А как насчет сумм в строках? MATLAB предпочитает работать со столбцами матрицы, таким образом, лучший способ получить сумму в строках – это транспонировать нашу матрицу, подсчитать сумму в столбцах, а потом транспонировать результат. Операция транспонирования обозначается апострофом или одинарной кавычкой. Она зеркально отображает матрицу относительно главной диагонали и меняет строки на столбцы. Таким образом

A’

вызывает

ans =

16 5 9 4

3 10 6 15

2 11 7 14

13 8 12 1

А выражение

sum(A’)’

вызывает результат вектор-столбец, содержащий суммы в строках

ans =

34

34

34

34

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

diag(A)

ans =

16

10

7

1

А функция

sum(diag(A))

вызывает

ans =

34

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

ИНДЕКСЫ

Элемент в строке i и столбце j матрицы А обозначается A (i,j ). Например, А (4,2) – это число в четвертой строке и втором столбце. Для нашего магического квадрата А (4,2) = 15. Таким образом, можно вычислить сумму элементов в четвертом столбце матрицы А , набрав

A(1,4) + A(2,4) + A(3,4) + A(4,4)

ans =

34

Однако это не самый лучший способ суммирования отдельной строки.

Также возможно обращаться к элементам матрицы через один индекс, А (k ). Это обычный способ ссылаться на строки и столбцы матрицы. Но его можно использовать только с двумерными матрицами. В этом случае массив рассматривается как длинный вектор, сформированный из столбцов исходной матрицы.

Так, для нашего магического квадрата, А (8) – это другой способ ссылаться на значение 15, хранящееся в А (4,2).

Если вы пытаетесь использовать значение элемента вне матрицы, MATLAB выдаст ошибку:

t=A(4,5)

??? Index exceeds matrix dimensions.

С другой стороны, если вы сохраняете значение вне матрицы, то размер матрицы увеличивается.

X=A;

X(4,5) = 17

X =

16 3 2 13 0

5 10 11 8 0

9 6 7 12 0

4 15 14 1 17

ОПЕРАТОР ДВОЕТОЧИЯ

Двоеточие, : , – это один из наиболее важных операторов MATLAB . Он проявляется в различных формах. Выражение

1:10

ans =

1 2 3 4 5 6 7 8 9 10

Для получения обратного интервала, опишем приращение. Например

100:-7:50

ans =

100 93 86 79 72 65 58 51

0:pi/4:pi

что приводит

ans =

0 0.7854 1.5708 2.3562 3.1416

Индексное выражение, включая двоеточие, относится к части матрицы. A (1:k, j ) – это первые к элементов j -го столбца матрицы А .

Так sum(A(4, 1:4))
вычисляет сумму четвертой строки. Но есть и лучший способ. Двоеточие, само по себе, обращается ко всем элементам в строке и столбце матрицы, а слово end - к последней строке или столбцу. Так

sum(A(:,end))

вычисляет сумму элементов в последнем столбце матрицы А

ans =

34

Почему магическая сумма квадрата 4×4 равна 34? Если целые числа от 1 до 16 отсортированы в четыре группы с равными суммами, эта сумма должна быть

sum(1:16)/4

которая, конечно, равна

ans =

34

ФУНКЦИЯ MAGIC

MATLAB на самом деле обладает встроенной функцией, которая создает магический квадрат почти любого размера. Не удивительно, что эта функция называется magic .

B=magic(4)

B =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

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

A=B(:,)

Это означает, что для каждой строки матрицы В элементы переписываются в порядке 1, 3, 2, 4

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Почему Дюрер переупорядочил столбцы, по сравнению с тем, что использует MATLAB ? Без сомнения, он хотел включить дату гравюры, 1514, в нижнюю часть магического квадрата.

ВЫРАЖЕНИЯ

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

    переменные

    операторы

ПЕРЕМЕННЫЕ

В MATLAB нет необходимости в определении типа переменных или размерности. Когда MATLAB встречает новое имя переменной, он автоматически создает переменную и выделяет соответствующий объем памяти. Если переменная уже существует, MATLAB изменяет ее состав и если это необходимо выделяет дополнительную память. Например,

num_students = 25

создает матрицу 1×1 с именем num_students и сохраняет значение 25 в ее единственном элементе.

Имена переменных состоят из букв, цифр или символов подчеркивания. MATLAB использует только первые 31 символ имени переменной. MATLAB чувствителен к регистрам, он различает заглавные и строчные буквы. Поэтому А и а – не одна и та же переменная. Чтобы увидеть матрицу связанную с переменной, просто введите название переменной.

ЧИСЛА

MATLAB использует принятую десятичную систему счисления, с необязательной десятичной точкой и знаками плюс-минус для чисел. Научная система счисления использует букву е для определения множителя степени десяти. Мнимые числа используют i или j как суффикс.

Все числа для хранения используют формат long, определенный стандартом плавающей точки IЕЕ. Числа с плавающей точкой обладают ограниченной точностью – приблизительно 16 значащих цифр и ограниченным диапазоном -приблизительно от 10 -308 до 10 308 (Компьютер VAX использует другой формат чисел с плавающей точкой, но их точность и диапазон приблизительно те же).

ОПЕРАТОРЫ

Выражения используют обычные арифметические операции и правила старшинства.

Сложение

– вычитание

* умножение

/ деление

\ левое деление(описано в разделе Матрицы и Линейная Алгебра в книге

“Using MATLAB”)

^ степень

‘ комплексно сопряженное транспонирование

() определение порядка вычисления

ФУНКЦИИ

MATLAB предоставляет большое количество элементарных математических функций, таких как abs, sqrt, exp, sin. Вычисление квадратного корня или логарифма отрицательного числа не является ошибкой: в этом случае результатом является соответствующее комплексное число. MATLAB также предоставляет и более сложные функции, включая Гамма-функцию и функции Бесселя. Большинство из этих функций имеют комплексные аргументы. Чтобы вывести список всех элементарных математических функций, наберите

help elfun

Для вывода более сложных математических и матричных функций, наберите

help specfun

help elmat

соответственно.

Некоторые функции, такие как sqrt и sin, – встроенные. Они являются частью MATLAB , поэтому они очень эффективны, но их вычислительные детали трудно доступны. В то время как другие функции, такие как gamma и sink, реализованы в М-файлах. Поэтому вы можете легко увидеть их код и, в случае необходимости, даже модифицировать его.

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

pi 3.14159265…

i мнимая единица

j то же самое, что и i

eps относительная точность числа с плавающей точкой

realmin наименьшее число с плавающей точкой

realmax наибольшее число с плавающей точкой

Inf бесконечность

NaN не число

Бесконечность появляется при делении на нуль или при выполнении математического выражения, приводящего к переполнению, т.е. к превышению realmax. Не число (NaN) генерируется при вычислении выражений типа 0/0 или Inf- Inf, которые не имеют определенного математического значения.

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

eps = 1.e-6

clear eps

ВЫРАЖЕНИЯ

Вы уже познакомились с некоторыми примерами использования выражений в MATLAB. Ниже приведено еще несколько примеров с результатами.

rho = (1+sqrt(5))/2

rho =

1.6180

а = abs(3+4i)

а =

5

z = sqrt(besselk(4/3,rho-i))

0.3730 + 0.3214i

huge = exp(log(realmax) )

huge = 1.7977e+308

toobig = pi*huge

toobig = Inf

ГЕНЕРИРОВАНИЕ МАТРИЦ

MATLAB имеет четыре функции, которые создают основные матрицы:

zeros все нули

ones все единицы

rand равномерное распределение случайных элементов

randn нормальное распределение случайных элементов

Некоторые примеры:

Z = zeros(2,4)

Z =

0 0 0 0

0 0 0 0

F = 5*ones(3,3)

F =

5 5 5

5 5 5

5 5 5

N = fix(10*rand(1,10))

N =

9 2 6 4 8 7 4 0 8 4

R = randn(4,4)

R =

-0.4326 -1.1465 0.3273 -0.5883

-1.6656 1.1909 0.1746 2.1832

0.1253 1.1892 -0.1867 -0.1364

0.2877 -0.0376 0.7258 0.1139

Команда load считывает двоичные файлы, содержащие матрицы, созданные в MATLAB ранее, или текстовые файлы, содержащие численные данные. Текстовые файлы должны быть сформированы в виде прямоугольной таблицы чисел, отделенных пробелами, с равным количеством элементов в каждой строке. Например, создадим вне MATLAB текстовой файл, содержащий 4 строки:

16.0 3.0 2.0 13.0

5.0 10.0 11.0 8.0

9.0 6.0 7.0 12.0

4.0 15.0 14.0 1.0

Сохраним этот файл под именем magik.dat. Тогда команда load magik.dat прочитает этот файл и создаст переменную magik, содержащую нашу матрицу.

ОБЪЕДИНЕНИЕ

Объединение – это процесс соединения маленьких матриц для создания больших. Фактически, вы создали вашу первую матрицу объединением её отдельных элементов. Пара квадратных скобок – это оператор объединения. Например, начнем с матрицы А (магического квадрата 4×4) и сформируем

В = [А А+32; А+48 А+16]

Результатом будет матрица 8×8, получаемая соединением четырех подматриц

B =

16 3 2 13 48 35 34 45

5 10 11 8 37 42 43 40

9 6 7 12 41 38 39 44

4 15 14 1 36 47 46 33

64 51 50 61 32 19 18 29

53 58 59 56 21 26 27 24

57 54 55 60 25 22 23 28

52 63 62 49 20 31 30 17

Это матрица лишь наполовину является магической. Её элементы представляют собой комбинацию целых чисел от 1 до 64, а суммы в столбцах точно равны значению для магического квадрата 8×8.

sum (В)

ans =

260 260 260 260 260 260 260 260

Однако, суммы в строках этой матрицы (sum(B’)’ ) не все одинаковы. Необходимо провести дополнительные операции, чтобы сделать эту матрицу действительно магическим квадратом 8×8.

УДАЛЕНИЕ СТРОК И СТОЛБЦОВ

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

X = А;

Теперь удалим второй столбец матрицы X .

X(:,2) =

Эта операция изменит X следующим образом

X =

16 2 13

5 11 8

9 7 12

4 14 1

Если вы удаляете один элемент матрицы, то результат уже не будет матрицей. Так выражение

X(1,2) =

результатом вычисления выдаст ошибку. Однако использование одного индекса удаляет отдельный элемент или последовательность элементов и преобразует оставшиеся элементы в вектор-строку. Так

X(2:2:10) =

выдаст результат

X =

16 9 2 7 13 12 1

ПЕРЕМНОЖЕНИЕ МАТРИЦ

При перемножении двух матриц используется оператор ‘*’. Например, если

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

B =

16 4 7 3

5 -7 2 9

0 8 23 65

-7 4 17 9

Тогда С = А*В даст результат

С =

180 111 385 322

74 70 444 892

90 98 440 644

132 27 397 1066

Также в системе MATLAB предусмотрена возможность поэлементного перемножения. Для этой цели используется точка перед знаком умножения. Например:

C = A.*B

в результате

C =

256 12 14 39

25 -70 22 72

0 48 161 780

-28 60 238 9

СОЗДАНИЕ М-ФАЙЛОВ

M-файлы являются обычными текстовыми файлами, которые создаются с помощью текстового редактора. Для операционной среды персонального компьютера система MATLAB поддерживает специальный встроенный редактор/отладчик, хотя можно использовать и любой другой текстовый редактор с ASCII-кодами.

Открыть редактор можно двумя способами:

    из меню File выбрать опцию New , а затем M-File .

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

М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB .

Пример

Функция average – это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:

function y = average (x)

% AVERAGE Среднее значение элементов вектора.

% AVERAGE(X), где X – вектор. Вычисляет среднее значение элементов

% вектора.

% Если входной аргумент не является вектором, генерируется ошибка.

Size(x);

If (~((m == 1) | (n == 1)) | (m == 1 & n == 1))

Error(‘Входной массив должен быть вектором’)

End

Y =sum(x)/length(x); % Собственно вычисление

Попробуйте ввести эти команды в M-файл, именуемый average.m . Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average , надо ввести следующие операторы:

z = 1:99;

average(z)


Получаем результат

ans = 50

СТАТИСТИЧЕСКИЕ ХАРАКТЕРИСТИКИ СИГНАЛОВ

Среднее значение сигнала (его постоянная составляющая) определяется по следующей формуле:

(1.1)

Среднеквадратичное отклонение (СКО, девиация, переменная составляющая) сигнала определяется по следующей формуле:

(1.2)

Значение статистической ошибки принимаемого сигнала определяется по следующей формуле:

(1.3)

Функция нормального распределения описывается следующей формулой:

(1.4)

ЗАДАНИЕ

    Проработайте основные команды, изложенные выше, в системе MATLAB.

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

    1. среднее значение, вычисленное в соответствии с формулой (1.1), а также полученное в результате применения функции mean;

      среднеквадратичное отклонение, вычисленное в соответствии с формулой (1.2), а также полученное в результате применения функции std.

    Создайте М-функцию, которая на входе получает вектор произвольной размерности с данными и возвращает значение статистической ошибки TE в соответствии с формулой (1.3).

    Самостоятельно исследуйте функцию построения гистограммы hist (вызов справки по данной функции – doc hist).

    Постройте график функции нормального распределения в соответствии с формулой (1.4) с помощью функций plot и fplot.

    Создайте М-функцию на основе команды randn, которая генерирует случайный шум с нормальным законом распределения с заданным средним значением и среднеквадратичным отклонением.


1. Command Window (Окно команд).

Математические выражения пишутся в командной строке после знака приглашения « >> ». Например,

Для выполнения действия нажмем клавишу «Enter».

По умолчанию программа записывает результат в специальную переменную ans.

Для сохранения результата под другим именем используют имя переменной и знак присваивания « = », например

>> z = 1.25 /3.11

Редактировать в Command Window можно только текущую командную строку. Для того чтобы отредактировать ранее введенную команду, необходимо установить курсор в строку ввода и воспользоваться клавишами « » или« ».

Если команда заканчивается «;», то результат её действия не отображается в командной строке.

Командное окно можно закрыть кнопкой « », а кнопка « » служит для отделения окна от интерфейса системы. Вернуться к стандартной форме окна можно с помощью меню:

Главное Меню Desktop Desktop Layout Default .

Очистить командное окно можно с помощью меню:

Главное Меню Edit Clear Command Window .

Главное меню системы MatLab.

Главное меню MatLab содержит следующие пункты:

File (Файл) – работа с файлами;

Edit (Правка) – редактирование;

View (Вид) – управление окнами;

Web – связь с фирмой – разработчиком через Интернет;

Window (Окно) – связь с окнами системы;

Help (Справка) – связь со справочной системойMatLab.

Панель инструментов системы MATLAB.

Кнопки панели инструментов имеют следующие назначения:

New file (Создать) – выводит окна редакторов файлов;

Open file (Открыть) – открывает окна загрузки файлов;

Cut (Вырезать) – вырезает выделенный фрагмент и помещает в буфер обмена;

Copy (Копировать) – копирует выделенный фрагмент в буфера обмена;

Paste (Вставить) – переносит выделенный фрагмент из буфера обмена в строку ввода;

Undo (Отменить) – отменяет результата предыдущей операции;

Redo (Повторить) – повторяет результат предыдущей операции;

Simulink – создает модель Simulink (расширения MatLab );

Help Window (Помощь) – открывает окна справки.

4. Формат вывода результата вычислений.



При вводе вещественных чисел для отделения дробной части используется точка !

>> s = 0.3467819

Результат вычислений выводится в формате short (краткая запись числа), который определяется по умолчанию. Можно поменять формат на long (длинная запись числа).

>> format long

0.34678190000000

В списке Numerical Format имеются форматы чисел

short – краткая запись числа;

long – длинная запись числа;

short e – краткая запись числа в формате с плавающей точкой;

long e – длинная запись числа в формате с плавающей точкой;

short g – вторая форма краткой записи числа;

long g – вторая форма длинной записи числа;

Формат отображения числовых данных можно установить в меню File (файл) пункт Preferences (предпочтения). Перейти на вкладку Command Window (окно команд). В опции Text display (отображение текста), в списке Numeric format (числовой формат) установить short g , в опции Numeric display (отображение чисел) установить compact . Эти форматы вывода соответствуют выводу чисел в универсальной форме из пяти значащих цифр и с подавлением пробела между строками.

Основы вычислений в MatLab.

Для выполнения простейших арифметических операций в MatLab применяются операторы:

· сложение и вычитание +, – ;

· умножение и деление *, / ;

· возведение в степень ^ .

Некоторые специальные переменные :

ans – результат последней операции без знака присваивания;

eps – относительная погрешность при вычислениях с плавающей точкой;

pi – число ;

i или j – мнимая единица;

Inf – бесконечность ;

NaN – неопределенное значение.

Некоторые встроенные элементарные функции MatLab :

exp(x) – экспонента числа x;

log(x) – натуральный логарифм числа x;

sqrt(x) – квадратный корень из числа x;

abs(x) – модуль числа x;

sin(x), cos(x), tan(x), cot(x) – синус, косинус, тангенс, котангенс числа x;

asin(x), acos(x), atan(x), acot(x) – арксинус, арккосинус, арктангенс, арккотангенс числа x;

sec(x), csc(x) – секанс, косеканс числа x;

round(x) – округление числа x до ближайшего целого;

mod(x,y) – остаток от целочисленного деления x на y с учетом знака;

sign(x) – возвращение знака числа x.

Вычислим значение выражение

>> exp(–2.5)*log(11.3)^0.3 – sqrt((sin(2.45*pi)+cos(3.78*pi))/tan(3.3))

Если оператор не удается разместить в одной строке, то возможно продолжение его ввода в следующей строке, если в конце первой строки указать знак продолжения «…», например,

>> exp(–2.5)*log(11.3)^0.3 – ...

sqrt((sin(2.45*pi)+cos(3.78*pi))/tan(3.3))

Функции для работы с комплексными числами :

Ввод комплексного числа

>> z = 3 + 4i

3.0000 + 4.0000i

Функции abs(z), angle(z) возвращают модуль и аргумент комплексного числа , где , ;

complex(a,b) конструирует комплексное число по его действительной и мнимой части:

conj(z)возвращает комплексно-сопряженное число;

imag(z), real(z) возвращает мнимую и действительную часть комплексного числа z.

6. Векторы .

Ввод, сложение, вычитание, умножение на число.

Вектор в MatLab формируется с помощью оператора квадратные скобки . При этом элементы вектора-столбца разделяют точкой с запятой «;», а элементы вектора-строки разделяют пробелом « » или запятой « , ».

Введем вектор-столбец .

>> x =

Введем вектор-строку .

>> y =

Для транспонирования вектора применяют апостроф «’ »:

>> z = y’

Для нахождения суммы и разности векторов используются знаки « + » и «– »:

>> с = x + z

Умножение вектора на число осуществляется как справа, так и слева при помощи знака « * ».

Векторы могут быть аргументами встроенных функций, например,

>> d = sin(c)

Для обращения к элементам векторов используются скобки (), например,

>> x_2 = x(2)

Последний элемент вектора можно выбрать, набрав команду

>> X_end = x(end)

Из нескольких векторов можно составить один, например

>> r =

1.3 5.4 6.9 7.1 3.5 8.2

Символ двоеточие « : » используется для выделения нескольких элементов из вектора, например

>> w = r(3:5)

Символ двоеточие « : » также позволяет заменять элементы вектора, например,

>> r(3:5)= 0

1.3 5.4 0 0 0 8.2

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

>> h =

1 1.2 1.4 1.6 1.8 2

Шаг может быть отрицательным (в этом случае начальное число должно быть больше конечного).

Шаг, равный единице, можно не указывать

>> k =

Основные функции для работы с векторами .

  • length(x) – определение длины вектора x;
  • prod(x)– перемножение всех элементов вектора x;
  • sum(x) – суммирование всех элементов вектора x;
  • max(x)– нахождение максимального элемента вектора x;
  • min(x)– нахождение минимального элемента вектора x.

Если вызвать функцию min или max с двумя выходными аргументами = min(x),

то первой переменной присваивается значение минимального (максимального элемента), а второй переменной присваивается номер этого элемента.

7 Матрицы .

Различные способы ввода матрицы .

1. Матрицу можно вводить как вектор-столбец, состоящий из двух элементов, каждый из которых является вектор - строкой и отделяется точкой с запятой. Например, введем матрицу

>> A =

2. Матрицу можно вводить построчно, выполняя последовательность команд:

>> A = . Для получения решений в конкретные моменты времени t 0 , t 1 , …, t final (расположенные в порядке уменьшения или увеличения) нужно использовать tspan = [ t 0 t 1 … t final ];

y 0 вектор начальных условий;

Options аргумент, создаваемый функцией odeset (еще одна функция odeget или bvpget (только для bvp4c) позволяет вывести параметры, установленные по умолчанию или с помощью функции odeset/bvpset);

p 1, p 2,… произвольные параметры, передаваемые в функцию F ;

T , Y матрица решений Y , где каждая строка соответствует времени, возвращенном в векторе-столбце T .

Перейдем к описанию синтаксиса функций для решения систем ДУ (под именем solver подразумевается любая из представленных выше функций).

[T ,Y ]=solver(@F ,tspan ,y 0) интегрирует систему ДУ вида y ′ = F (t , y ) на интервале tspan с начальными условиями y 0 . @F дескриптор ОДУ-функции (можно также задавать функцию в виде "F "). Каждая строка в массиве решений Y соответствует значению времени, возвращаемому в векторе-столбце T .

[T ,Y ]=solver(@F ,tspan ,y 0 ,options) дает решение, подобное описанному выше, но с параметрами, определяемыми значениями аргумента options, созданного функцией odeset. Обычно используемые параметры включают допустимое значение относительной погрешности RelTol (по умолчанию 1e3) и вектор допустимых значений абсолютной погрешности AbsTol (все компоненты по умолчанию равны 1e6).

[T ,Y ]=solver(@F ,tspan ,y 0 ,options,p 1 ,p 2 …) дает решение, подобное описанному выше, передавая дополнительные параметры p 1 , p 2 , … в m -файл F всякий раз, когда он вызывается. Используйте options=, если никакие параметры не задаются.

Решение ОДУ первого порядка

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример

Найти решение дифференциального уравнения на отрезке , для которого у (1,7) = 5,3.

Создаем в Command Window функция пользователя

g=@(x,y);

В синтаксисе функции @(x,y) x независимая переменная, y зависимая переменная, x -cos(y /pi ) правая часть ДУ.

Процесс решения осуществляется обращением в Command Window к решателю (солверу) следующим оператором:

Ode23(g,,);

Построение графика с сеткой осуществляется следующими операторами:

Результат представлен на рис. 1.1

Рис. 1.2.1. Визуализация численного решения

ЗАДАНИЕ

1. Найдите решения ДУ первого порядка , удовлетворяющего начальным условиям у(х 0 ) = у 0 на промежутке [a , b ].

2. Построить графики функции.

Варианты заданий .

№ варианта у(х 0 )=у 0 [a , b ]
y 0 (1,8)=2,6
y 0 (0,6)=0,8
y 0 (2,1)=2,5
y 0 (0,5)=0,6
y 0 (1,4)=2,2
y 0 (1,7)=5,3
y 0 (1,4)=2,5
y 0 (1,6)=4,6
y 0 (1,8)=2,6
y 0 (1,7)=5,3
y 0 (0,4)=0,8
y 0 (1,2)=1,4

Лабораторная работа № 2

Решение систем ОДУ

ЦЕЛЬ РАБОТЫ

Сформировать у студентов представления о применении систем ДУ в различных областях; привить умения решать задачу Коши для систем ДУ.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

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

2. Оформите отчет по лабораторной работе, который должен содержать:

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример

Решить систему

с использованием решателя ode23().

Решение:

1. Создать в редакторе m-файл функции вычисления правых частей ДУ.

Пусть имя в редакторе файла sisdu.m, тогда функция может иметь следующий вид:

function z=sisdu(t,y)

z1=-3*y(2)+cos(t)-exp(t);

z2=4*y(2)-cos(t)+2*exp(t);

>> t0=0;tf=5;y0=[-3/17,4/17];

>> =ode23("sisdu",,y0);

>> plot(t,y)

Рис. 1.3.1. Визуализация численного решения, полученного с помощью функции ode23.

1. Что значит решить задачу Коши для системы ДУ?

2. Какие существуют методы решения систем ДУ?

ЗАДАНИЕ

1. Найдите решение системы ДУ

удовлетворяющее начальным условиям на промежутке ;

2. Построить графики функций.

Для примера приводится функция решения 8-го варианта:

function z=ssisdu(t,y)

% вариант 8

z1=-a*y(1)+a*y(2);

z2=a*y(1)-(a-m)*y(2)+2*m*y(3);

z3=a*y(2)-(a-m)*y(3)+3*m*y(4);

z4=a*y(3)-3*m*y(4);

>> =ode23("ssisdu",,);

>> plot(t,100*y)

Рис. 1.3.2. Визуализация численного решения, полученного с помощью функции ode23.

Варианты заданий .

№ варианта Задания
a m
0,1 1,2
0,2 1,5
0,3 1,7
0,4 1,9
0,5
0,6 1,9
0,7 2,3
0,8 2,7
0,9
0,1 1,5
0,2 1,1
0,3

Лабораторная работа № 3

1.4Решение ОДУ n -го порядка

ЦЕЛЬ РАБОТЫ

Сформировать у студентов представления о применении ДУ высших порядков в различных областях; привить умения решать задачу Коши для ДУ высших порядков с помощью прикладных программ; развить навыки проверки полученных результатов.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

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

2. Оформите отчет по лабораторной работе, который должен содержать:

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример 1.

Решить ДУ второго порядка при данных начальных условиях .

Решение:

Сначала приведем ДУ к системе:

1. Создать m-файл функции вычисления правых частей ДУ.

Пусть имя файла sisdu_3.m, тогда функция может иметь следующий вид:

function z=sisdu_3(x,y)

z2=6*x*exp(x)+2*y(2)+y(1);

2. Выполнить следующие действия:

>> x0=0;xf=10;y0=;

>> =ode23("sisdu_3",,y0);

>> plot(x,y(:,1))

Рис. 1.4.1. Визуализация численного решения, полученного с помощью функции ode23.

ПРИМЕРНЫЕ ВОПРОСЫ НА ЗАЩИТЕ РАБОТЫ

1. Что значит решить задачу Коши для ДУ высших порядков?

2. Как привести ДУ m -го порядка к системе ДУ?

ЗАДАНИЕ

1. Найдите решение ДУ, удовлетворяющее начальным условиям на промежутке .

2. Построить графики функций.

Варианты заданий .

№ варианта Задания
Уравнения Начальные условия







Лабораторная работа № 4 – 5

Динамические системы (ДС)

ЦЕЛЬ РАБОТЫ

Знакомство студентов с основными понятиями ДС, их классификация, фазовое пространство ДС, кинематическая интерпретация системы ДУ, эволюция ДС. Уравнение движения маятника. Динамика осциллятора Ван дер Поля.

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

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

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

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

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

1. Запустить программу можно с помощью иконки на рабочем столе или через кнопку Пуск(в левом нижнем углу экрана). Откроется рабочая среда пакета MatLab.

2. Щелкните мышкой в поле командного окна (Command Window), чтобы сделать его активным.

Наберите в строке со значком » и мигающим вертикальным курсором 1+2 и нажмите Enter. В результате в командном окне MatLab отображается следующее:

Результат вычисления суммы 1+2 записан в специальную переменную ans и ее значение, равное 3, выведено в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая, что MatLab готов к дальнейшим вычислениям. Можно набирать в командной строке новые выражения и находить их значения.

3.Для продолжения работы с предыдущим выражением, например, вычислить (1+2)/4.5 целесообразно воспользоваться уже имеющимся результатом, который хранится в переменной ans.

Наберите ans/4.5 (при вводе десятичных дробей используется точка) и нажмите Enter, получается:

4.Запись «ans = 0.6667» называется эхом.

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

Чтобы отключить эхо, поставьте после команды символ; (точка с запятой). Например:

Здесь результат умножения переменной ans на 3, который является промежуточным, не выводится на экран. Показывается только окончательный ответ.

5.Сохраните значения переменных. Для этого:

— выберите в меню File пункт Save Workspase As;

— в появившемся диалоговом окне Save Workspase Variables укажите каталог и имя файла (по умолчанию предлагается сохранить файл в подкаталоге work основного каталога MatLab). Результаты работы сохранятся в файле с расширением mat.

6. Закройте MatLab.

7.Снова запустите MatLab. Для восстановления значений переменных предыдущего сеанса работы откройте сохраненный файл при помощи подпункта Open меню File. Сохраненные переменные можно использовать во вновь вводимых командах.

8.Запишите исполняемые команды и результаты в текстовый файл, который потом можно прочитать или распечатать из текстового редактора. Для этого:

— введите команду diary;

— задайте имя файла, в котором будет храниться журнал работы, в качестве аргумента команды diary.

Пример приведен в п. 1.3.

9. Для завершения работы в системе MatLab наберите команду quit.

1. Изучить теоретическую часть.

2. Получить вариант задания.

3. Проделать пример, приведенный в п. 2.

4. Выполнить вычисления в соответствии со своим вариантом.

5. Оформить отчет в электронном виде.

6. Защитить лабораторную работу, ответив на вопросы преподавателя.

Варианты

Статьи к прочтению:

Основы работы с Mathcad. Простейшие вычисления. Урок 4

Публикации по теме