- •Введение
- •Лабораторная работа ип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
В простейшем случае общение пользователя с СКМ Matlab происходит в командном окне. Работа с системой в режиме прямых вычислений носит диалоговый характер и происходит по правилу "задал вопрос, получил ответ". Пользователь набирает на клавиатуре вычисляемое выражение, при необходимости редактирует его в командной строке и завершает ввод нажатием клавиши Enter. Признаком того, что Matlab готов к восприятию и выполнению очередной команды, является наличие в последней строке командного окна знака приглашения – символа ">>" справа от которого расположен мигающий курсор. Эта строка называется командной. Данные вводятся с помощью простейшего строчного редактора. Для блокировки вывода результата вычислений некоторого выражения (эхо-печати) после него надо установить знак ";" (точка с запятой). Если не указана переменная для размещения значения результата вычислений, то Matlab автоматически назначает для этой цели переменную с именем ans. Результат вычислений выводится в строках вывода (без знака ">>").
Типы данных
Система типов (классов) Matlab (рис. 1.2) использует в качестве базового типа массив (array). На его основе конструируются другие типы данных.
Char – символьный тип; числовые (numeric) типы целые: семейства init и unit – со знаком и без (число в имени типа определяет длину в битах) и действительные: single и double –с одинарной и двойной точностью соответственно; logical – логический тип; cell – ячейка; struct – структура (запись); function handle – указатель на функцию (ссылка). По мере необходимости их особенности будут рассмотрены.
В основу большинства вычислительных процессов положено представление числовых данных в виде массивов с элементами типа double. В связи с этим в дальнейшем особое внимание будет уделено именно таким данным.
Числовые константы
Число – простейший объект языка Matlab, представляющий количественные данные. Числа можно считать константами, имена которых совпадают с их значениями. Числа используются в общепринятом представлении о них. Они могут быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление чисел в хорошо известном научном формате с указанием мантиссы и порядка числа. Например
2
0.1234
-1.0003
123.45е-24
-234.456е10
Как нетрудно заметить, целая часть числа отделяется от дробной не запятой, а точкой, как принято в большинстве языков программирования. Для отделения порядка числа от мантиссы используется символ "е". Пробелы между символами в числах не допускаются. Числа могут быть комплексными: 3+5j. Такие числа содержат действительную (3) и мнимую (5j) части. Мнимая часть имеет множитель i или j, означающий :
3i
2j
2+3i
-3.245i
-123.456+2.7e-3j
При вводе значений комплексных чисел с клавиатуры Matlab критично относится к расположению множителя мнимой части. Если i или j указаны после числового значения, то знак умножения можно не ставить. Но если множитель стоит перед числом, то наличие * обязательно:
>> x=2+j3
??? Undefined function or variable 'j3'.
>> x=2+j*3
x =
2 + 3i
>> x=2+3j
x =
2 + 3i
Числа, с которыми чаще всего оперирует Matlab, в памяти компьютера представляются вещественными или комплексными значениями в формате double. Это означает, что каждое вещественное число занимает в оперативной памяти 8 байтов и может принимать по модулю значения из диапазона [10-308; 10308]. Количество значащих цифр при этом достигает 16-17. Комплексное число соответственно занимает в памяти 16 байтов. При отображении числовых результатов часть значащих цифр отбрасывается в соответствии с установленным форматом вывода: целые числа выводятся не более чем с девятью цифрами, вещественные с фиксированной точкой – не более чем с четырьмя цифрами в дробной части, очень большие или очень маленькие числа – в формате с плавающей точкой и пятью значащими цифрами. Отображаемые значения округляются по общепринятым в математике правилам. Задать формат отображения чисел можно с помощью команды format. Действие команды format сохраняется до ее отмены другой командой format. В табл. 1.1 показано отображение значения 5/7 в наиболее часто используемых форматах. Следует помнить, что формат отображения никак не влияет на формат представления числа в памяти. Если не указано особо Matlab хранит числовые значения и выполняет вычисления с двойной точностью. Как следствие в Matlab (особенно до версии 7) в общем случае не принято делить числа на целые и дробные, короткие и длинные и т.д., как это принято в большинстве языков программирования, хотя задавать числа в таких формах можно.
Таблица 1.1
Формат |
Описание |
Действие |
Пример |
short |
Краткая запись в формате с фиксированной точкой |
не больше шести значащих цифр, четыре цифры после десятичной точки |
>> format short >> 5/7 ans = 0.7143 >> |
long |
Длинная запись в формате с фиксированной точкой |
все цифры числа, четырнадцать цифр после десятичной точки |
>> format long >> 5/7 ans = 0.71428571428571 >> |
short e |
Краткая запись в формате с плавающей точкой |
экспоненциальное представление с пятью значащими цифрами |
>> format short e >> 5/7 ans = 7.1429e-001 >> |
long e |
Длинная запись в формате с плавающей точкой |
все цифры числа; экспоненциальное представление с пятнадцатью значащими цифрами |
>> format long e >> 5/7 ans = 7.142857142857143e-001 >> |
rational |
Запись в виде рациональной дроби |
числа приближенно представляются отношение двух целых чисел |
>> format rational >> 5/7 ans = 5/7 >> |
compact |
Компактный вывод результата |
пустые строки между строками результата не выводятся |
все результаты в методичке представлены в compact |