- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
Лабораторная работа ип2 работа с матрицами в matlab
1. Общие сведения
Matlab является компьютерной системой, которая предназначена для осуществления операций с матрицами. Матрица, столбец, строка – это математические объекты. Способом их представления и хранения в памяти компьютера является массив (Array). По умолчанию в Matlab принято, что любая заданная переменная представляет собой массив. Под матрицей понимается двумерный массив , под вектором – одномерный: – вектор-строка или – вектор-столбец. Отдельно заданное значение (скаляр) Matlab воспринимает как массив размером . В программировании массив это совокупность однотипных значений, упорядоченных по индексам. У массива, как и у любой переменной, должно быть имя. Все элементы одного массива имеют одинаковое имя – имя массива и различаются порядковыми номерами (индексами). Индексы однозначно определяют положение элемента в массиве. В Matlab разрешены только натуральные индексы. Все элементы массива одинаково доступны. Для инженера больший интерес представляет сам объект – матрица, нежели способ его хранения – массив. Поэтому в дальнейшем будут преимущественно использоваться слова "матрица" и "вектор". Для обозначения матриц в математическом тексте принято использовать прописные, а для векторов строчные полужирные буквы прямого шрифта. Для их отдельных элементов – буквы строчного курсива. Например, – первый элемент вектора b, – элемент матрицы А, стоящий во второй строке в третьем столбце (рис. 2.1, а). В памяти компьютера Matlab хранит матрицу по столбцам (рис. 2.1, б). Это может быть важным при выполнении операций над матрицей и адресации отдельных ее элементов.
а б
Рис. 2.1. Матрица А и ее представление в памяти
2. Одномерные массивы – векторы
Для определенности будем рассматривать числовые данные. Векторы – это линейные наборы чисел (элементов), в которых позиция каждого элемента задаётся единственным числом – его номером. Можно говорить о первом элементе вектора, о втором и т.д. Matlab различает прописные и строчные буквы. Поэтому в тексте программы или в командной строке и вектор в целом, и отдельный его элемент обозначаются одними и теми же символами. Элемент отличается тем, что за его именем обязательно стоит индекс, заключенный в круглые скобки. В общем случае индекс может быть вычисляемым объектом, т.е. задаваться выражением.
Для создания вектора, состоящего из нескольких чисел, чаще всего используется операция конкатенации (сцепления, объединения), обозначаемая в Matlab с помощью квадратных скобок – [ ]. Элементы, объединяемые в массив, должны отделяться друг от друга разделителями. При формировании вектора-строки в качестве разделителя можно использовать пробел и/или запятую. Например, выражение
>> a=[1 2 3]
a =
1 2 3
формирует переменную с именем a, являющуюся вектором-строкой из трёх чисел. Поскольку в конце командной строки не поставлен символ подавления эхо-печати – точка с запятой, то после нажатия на Enter на экране распечатался результат выполнения команды – содержимое созданной переменной с именем а (строки результата не предваряются символом >>). Из результата хорошо видно, что а именно вектор-строка. Аналогичный результат можно получить, выполнив выражение
>> b=[10,20,30]
b =
10 20 30
В этом примере разделителем элементов при формировании вектора являлась запятая. Можно одновременно использовать оба разделителя, или задавать значения элементов через несколько пробелов. Вектор можно формировать и поэлементно (прописать каждый элемент отдельно, не используя конкатенацию). Например
>> c(1)=1.5; c(2)=2*c(1)
c =
1.5000 3.0000
В первой строке примера сформирован вектор с из двух элементов, причем второй имеет в двое большее значение, чем первый. Во второй и третьей строках дано эхо Matlab – печать результата. После выполнения этих примеров в рабочем пространстве будут размещены три переменные с именами a, b и с (рис. 2.2).
Рис. 2.2. Создание векторов-строк
В колонке Size рабочего пространства Workspace хорошо видно, что созданы именно векторы-строки – для них указаны размеры типа . Теперь можно корректировать значения элементов созданных переменных, добавлять в них новые элементы, объединять векторы (конкатенировать). Например
>> a(3)=13; a(4)=4
a =
1 2 13 4
>> b=[b 4.25]
b =
10.0000 20.0000 30.0000 4.2500
>> c=[7.5 c a]
c =
7.5000 1.5000 3.0000 1.0000 2.0000 13.0000 4.0000
В векторе a изменили значение третьего элемента со старого, равного 3, на новое, равное 13, и добавили четвертый элемент. К вектору b тоже добавили четвертый элемент, равный 4,25, но технологией конкатенации. В начало вектора с добавлен элемент (уже имеющиеся элементы автоматически сдвинулись вправо на один индекс), а в его конец ("в хвост") конкатенированы элементы вектора a (сам вектор а при от этого не изменяется). Вектор с стал длиной 7 элементов.
Текущую длину одномерного массива (количество элементов в нем) всегда можно узнать с помощью функции length (длина)
length(с)
ans =
7
Векторы могут состоять не только из вещественных чисел. Выражение
d = [1+2j, 2+3j, 3-4j];
формирует вектор-строку d из трех комплексных чисел.
Выражение
>> d = [];
сделает вектор пустым (переменная d сохранится в Workspace, но размер ее будет 0×0).
>> с=[ [] 3]
с =
3
сначала очистит переменную с (сделает вектор пустым), а потом добавит в нее первый (и он будет единственный) элемент, равный 3.
Внимание: 1. При попытке адресации несуществующего элемента, например пятого элемента вектора a, в командном окне Matlab появится сообщение об ошибке
>> a(5)
??? Index exceeds matrix dimensions.
извещающее, что указанный в выражении индекс превысил размер матрицы (в данном случае имеется в виду матрица из одной строки). В то же время запись несуществующего элемента слева от оператора присваивания вполне допустима – она означает добавление нового элемента к уже существующему вектору
>> a(5) = -17;
2. Добавление в пустой или не еще существующий вектор элементов с номерами, идущими с пропуском значений, породит заполнение нулями не адресованных элементов вектора.
> d=[];
>> d(3)=3; d(7)=17
d =
0 0 3 0 0 0 17
В результате в векторе d будет семь элементов.
Для задания значений компонентов вектора-столбца используются те же приемы, но в качестве разделителей элементов выступает символ ";" – точка с запятой. Например
>> a=[1; 5; 10]
a =
1
5
10
>> b=[2 4]'
b =
2
4
>> c=[a; b]
c =
1
5
10
2
4
>> d=[6
9]
d =
6
9
Здесь вектор b получается из вектора-строки при помощи операции транспонирования, обозначаемой символом ' (апостроф). Вектор с формируется конкатенацией двух столбцов a и b. При формировании столбца d в качестве разделителя элементов используется признак конца строки (нажатие на Enter). В результате четырех операций присваивания в рабочем пространстве (рис. 2.3) будет сформировано четыре вектора-столбца (в колонке Size размер переменных указан по типу – столбец из m строк и в колонке Value значения компонентов перечислены хоть и в строку, но через точку с запятой). Тип (класс) элементов у всех векторов double – числовой двойной точности.
Рис. 2.3. Векторы-столбцы в Workspace