- •§ 2.2. Командное окно системы matlab
- •§ 2.3. Рабочее пространство системы matlab
- •§ 2.4. Скаляры и массивы. Индексированные переменные
- •§ 2.5. Форматы представления вещественных чисел
- •§ 2.6. Арифметические выражения
- •2.6.1. Некоторая специфика использования вещественных данных
- •2.6.2. Некоторая специфика использования комплексных данных
- •2.6.3. Некоторые приемы работы с матрицами и векторами
- •2.6.4. Некоторые специфика выполнения арифметических и логических операций.
- •§ 2.7. Элементарные математические функции
- •Часть 2. Визуализация результатов вычислений
- •§ 2.8. Особенности графической подсистемы matlab
- •§ 2.9. Построение графиков функций одной переменной
- •2.9.1. Простые графики в декартовой системе координат.
- •2.9.2. Визуализация нескольких графиков.
- •2.9.3. Функция fplot.
- •2.9.4. Построение графиков в логарифмическом и полулогарифмическом масштабах.
- •2.9.5. Построение графиков в полярных координатах.
- •§ 2.10. Оформление графиков и графических окон
- •2.10.1. Выбор свойств линий.
- •2.10.2. Оформление осей координат.
- •2.10.3. Добавление надписей, заголовков и координатной сетки.
- •§ 2.11. Средства управления в графическом окне
- •§ 2.12. Общее знакомство с трехмерной графикой в matlab
- •2.12.1. Общий алгоритм визуализации функций двух переменных.
- •2.12.2. Построение трехмерных линий.
- •2.12.3. Построение поверхностей.
- •2.12.4. Задание дополнительных параметров трехмерных графиков.
- •2.12.5. Построение линий уровня.
- •2.12.6. Построение траектории точки, движущейся в пространстве.
- •2.12.7. Интерактивное редактирование графиков.
- •Часть 3. Вычисления с действительными и комплексными массивами чисел
- •§ 2.13. Операции отношения и логические операции над числами
- •2.13.1. Операции отношения.
- •2.13.2. Логические операции.
- •2.13.3. Приоритет операций.
- •§ 2.14. Формирование одномерных числовых массивов
- •2.14.1. Задание одномерных массивов и доступ к их элементам.
- •2.14.2. Об ускорении операций задания массива.
- •2.14.3. Об использовании операции формирования диапазона.
- •§ 2.15. Матрицы и векторы. Двумерные массивы чисел
- •2.15.1. Создание матриц и векторов.
- •2.15.2. Доступ к отдельным фрагментам матриц.
- •2.15.3. Удаление строк и столбцов матрицы.
- •2.15.4. Использование функций перестановки частей матриц.
- •2.15.5. Определение размеров и размерностей массивов.
- •2.15.6. Использование операций индексации.
- •2.15.7. Изменение размеров массива.
- •2.15.8. Специальные функции формирования массивов.
- •§ 2.16. Вычисления с массивами
- •2.16.1. Поэлементные и групповые операции над массивами.
- •2.16.2. Решение некоторых типовых задач линейной алгебры и аналитической геометрии.
- •2.16.3. Применение операций отношения и логических операций к массивам.
- •2.16.4. Некоторые функции для работы с массивами.
- •Часть 4. Стандартные средства решения некоторых типовых задач линейной алгебры и математического анализа
- •§ 2.17. Решение систем линейных алгебраических уравнений
- •§ 2.18. Решение некоторых задач линейной алгебры. Матричные функции
- •§ 2.19. Разреженные матрицы
- •§ 2.20. Решение нелинейных уравнений
- •§ 2.21. Поиск минимального значения функции
- •§ 2.22. Численное интегрирование
- •2.22.1. Использование метода трапеций.
- •2.22.2. Использование методов Симпсона и Гаусса-Лобатто.
- •2.22.3. Вычисление двойных интегралов.
- •§ 2.23. Операции над полиномами
- •2.23.1. Вычисление значения полинома.
- •2.23.2. Вычисление корней полинома.
- •2.23.3. Умножение и деление полиномов.
- •2.23.4. Дифференцирование и интегрирование полиномов.
- •§ 2.24. Интерполяция и аппроксимация данных
- •2.24.1. Полиномиальная аппроксимация.
- •2.24.2. Интерполяция сплайнами.
- •Часть 5. Символьные вычисления
- •§ 2.25. Создание символьных переменных, выражений и матриц
- •2.25.1. Создание символьных переменных.
- •2.25.2. Создание символьных выражений.
- •2.25.3. Создание символьных матриц.
- •§ 2.26. Символьные вычисления
- •2.26.1. Символьное дифференцирование.
- •2.26.2. Вычисление пределов.
- •2.26.3. Символьное интегрирование.
- •2.26.3. Вычисление суммы ряда. Разложение функций в ряды.
- •2.26.4. Упрощение выражений. Подстановки.
- •2.26.5. Управление точностью вычислений.
- •2.26.6. Операции над векторами. Операции над матрицами. Некоторые операции линейной алгебры.
- •2.26.7. Решение уравнений и систем уравнений.
- •§ 2.27. Визуализация результатов символьных вычислений
- •2.27.1. Построение двумерных графиков.
- •2.27.2. Построение трехмерных графиков.
- •Часть 6. Основы программирования на m-языке
- •§ 2.28. Основные понятия программирования в системе matlab
- •2.28.1. Назначение языка программирования matlab.
- •2.28.2. Основные средства программирования.
- •2.28.3. Основные типы данных.
- •2.28.4. Виды программирования.
- •2.28.5. Двойственность операторов, команд и функций.
- •2.28.6. Некоторые ограничения.
- •§ 2.29. Создание и использование m-файлов
- •2.29.1. Понятие об m-файлах.
- •2.29.2. Типы m-файлов.
- •2.29.3. Создание файл-программ.
- •2.29.4. Создание файл-функций.
- •2.29.5. Глобализация переменных и функций.
- •2.29.6. Синтаксический контроль программ.
- •§ 2.30. Управляющие структуры
- •2.30.1. Понятие об управляющих структурах.
- •2.30.2. Операторы цикла.
- •2.30.3. Операторы ветвления.
- •2.30.4. Прочие операторы.
- •§ 2.31. Работа с файлами
- •2.31.1. Общие замечания.
- •2.31.2. Подготовка файла к работе.
- •2.31.3. Завершение работы с файлами.
- •2.31.4. Контроль за исчерпанием данных.
- •2.31.5. Чтение из текстового файла.
- •2.31.6. Анализ ошибок в файловых операциях.
- •§ 2.32. Форматный ввод-вывод данных
- •2.32.1. Форматные преобразования (sprintf, sscanf).
- •2.32.2. Форматные преобразования при работе с файлами (fprintf, fscanf).
- •§ 2.33. Рекурсивные файл-функции. Производительность файл-функций
- •2.33.1. Понятие о рекурсивных файл-функциях.
- •2.33.2. Оценка производительности файл-функции.
- •§ 2.34. Файл-функции с переменным числом входных параметров и выходных значений
- •§ 2.35. Диалоговые программы
- •2.35.1. Ввод числовых и символьных данных.
- •2.35.2. Вывод результатов вычислений.
- •§ 2.36. Анимационные эффекты
- •§ 2.37. Контроль входных и выходных параметров файл-функции
- •§ 2.38. Отладка программы
- •2.38.1. Понятие о способах отладки программы.
- •2.38.2. Рекомендации по созданию и отладке программ.
- •Часть 7. Создание программ с визуальным интерфейсом
- •§ 2.39. Понятие о графическом интерфейсе пользователя (gui)
- •2.39.1. Предварительные замечания.
- •2.39.2. Основные команды для создания gui.
- •§ 2.40. Общие сведения о визуальной среде guide
- •§ 2.41. Программирование событий в matlab
- •§ 2.42. Свойства основных компонентов в matlab
- •§ 2.43. Диалоговые окна в matlab
- •§ 2.44. Динамическое создание компонентов
- •§ 2.45. Создание меню
- •§ 2.46. Некоторые рекомендации по созданию приложений с графическим интерфейсом пользователя
2.6.3. Некоторые приемы работы с матрицами и векторами
Основные приемы работы с векторами и матрицами (одномерными и двумерными массивами) продемонстрируем на конкретных примерах.
1. Задание вектор-строки (одномерного массива).
>> u1=[1 1 4]
u1 =
1 1 4
>> whos u1
Name Size Bytes Class Attributes
u1 1x3 24 double
>> u2=[1,1,4]
u2 =
1 1 4
>> whos u2
Name Size Bytes Class Attributes
u2 1x3 24 double
Таким образом, для задания компонент вектор-строки используются квадратные скобки, в которых числовые данные отделяются друг от друга пробелами или запятыми.
2. Задание вектор-столбца (одномерного массива).
>> v=[3; 1; -2]
v =
3
1
-2
>> whos v
Name Size Bytes Class Attributes
v 3x1 24 double
Таким образом, для задания компонент вектор-столбца используется тот же прием, что и для вектор-строки, но в качестве разделителей данных выступают точки с запятыми.
3. Транспонирование вектора.
>> h=v'
h =
3 1 -2
>> whos h
Name Size Bytes Class Attributes
h 1x3 24 double
4. Задание вектора с помощью числового диапазона.
>> r=2:0.2:3
r =
2.0000 2.2000 2.4000 2.6000 2.8000 3.0000
>> whos r
Name Size Bytes Class Attributes
r 1x6 48 double
Таким образом, значения компонент вектора, образованные по закону арифметической прогрессии формируются по шаблону: начальное значение : шаг : конечное значение.
5. Поэлементное умножение векторов.
>> a=[1 2 4];
>> b=[3 2 0];
>> a.*b
ans =
3 4 0
6. Создание матрицы (двумерного массива).
>> A=[4 -1 1; 3 2 6; 10 2 25]
A =
4 -1 1
3 2 6
10 2 25
>> whos A
Name Size Bytes Class Attributes
A 3x3 72 double
7. Выделение заданного столбца матрицы (двумерного массива).
>> A(:,3)
ans =
1
6
25
8. Выделение заданной строки матрицы (двумерного массива).
>> A(2,:)
ans =
3 2 6
2.6.4. Некоторые специфика выполнения арифметических и логических операций.
При составлении арифметических выражений система MATLAB допускает использование традиционных знаков арифметических операций и символов специальных операций, представленных в таблице 2.6.1.
Вместе с тем, арифметические операции реализованы в MATLAB с некоторыми характерными особенностями. Наиболее привычным с этих позиций является сложение скалярных величин (т.е. массивов размерности 1х1), аналогичное соответствующему действию в большинстве языков программирования. Однако, если обоими операндами являются массивы одинаковой размерности, то осуществляется покомпонентное сложение элементов с одинаковыми индексами. Если же к массиву любой размерности добавляется скалярная величина, то она добавляется к каждому элементу
Таблица 2.6.1. Знаки арифметических операций и символы специальных операций в системе MATLAB.
Символ |
Выполняемое действие |
Операции над числовыми величинами |
|
+ |
Покомпонентное (поэлементное) сложение числовых массивов одинаковой размерности; добавление скалярной величины к каждому элементу массива. |
– |
Покомпонентное вычитание числовых массивов одинаковой размерности; вычитание скалярной величины к каждому элементу массива. |
* |
Умножение матриц в соответствии с правилами линейной алгебры; умножение всех элементов массива на скаляр. |
.* |
Покомпонентное умножение элементов массивов одинаковой размерности. |
/ |
Деление скаляра на скаляр; покомпонентное деление всех элементов массива на скаляр; A/B=A*B-1 (A, B – квадратные матрицы одного порядка). |
./ |
Покомпонентное деление элементов массивов одинаковой размерности. |
\ |
A\B=A-1*B (левое матричное деление, A – квадратная матрица). |
.\ |
A.\B – покомпонентное деление элементов B на A (левое поэлементное деление). |
^ |
Возведение скаляра в любую степень; вычисление целой степени квадратной матрицы. |
.^ |
Покомпонентное возведение в степень элементов массива. |
' |
Вычисление сопряженной матрицы. |
.' |
Транспонирование матрицы. |
Логические операции |
|
& |
Логическое умножение скаляров; логическое покомпонентное умножение массивов одинаковой размерности; логическое умножение массива на скаляр. |
| |
Логическое сложение скаляров; логическое покомпонентное сложение массивов одинаковой размерности; логическое сложение массива со скаляром. |
~ |
Логическое отрицание скаляра или всех элементов массива. |
Операции отношения (операции сравнения) |
|
= = |
Проверка на равенство. |
~= |
Проверка на неравенство. |
> |
Проверка на «больше». |
>= |
Проверка на «больше или равно». |
< |
Проверка на «меньше». |
<= |
Проверка на «меньше или равно». |
массива (т.е. добавляемая скалярная величина, по сути, преобразуется в массив той же размерности, что и первое слагаемое (это своего рода аналог приведения типов в выражениях с «разнокалиберными» операндами) и каждый элемент такого сформированного массива равен исходной скалярной величине). Тем не менее, всякая попытка сложить массивы разной размерности (за исключением случая, когда один из операндов – массив размерности 1х1) приводит к соответствующему сообщению об ошибке. Аналогичное приведение типов выполняется для большинства операций, когда одним из операндов является массив, а вторым – скаляр.
Заметим, что исторически впервые знак операции возведения в степень в виде x**y появился в языке программирования FORTRAN в 1954 году. Вертикальная стрелка в качестве обозначения операции возведения в степень была предложена несколько лет спусти при разработке языка Algol 58. Символ ^ для обозначения операции возведения в степень использовался в языке программирования Basic, а позднее он же стал использоваться в MATLAB. С сожалением приходится констатировать, что такие популярные языки программирования как C и Pascal даже не включили операцию возведения в степень в набор элементарных действий (для соответствующих целей приходится использовать специальные библиотечные функции).
