- •Введение
- •Командное окно
- •Редактирование командной строки.
- •Длинные командные строки.
- •Вывод на печать командного окна.
- •Запуск внешних программ.
- •!Notepad
- •Команда format.
- •Выражения
- •Переменные.
- •Inf бесконечность
- •Операторы.
- •Функции.
- •Текстовые комментарии и символьные константы.
- •Операции с рабочей областью
- •Операции с файлами
- •Дневник командного окна
- •Операции с векторами и матрицами
- •Оператор «двоеточие».
- •Векторные индексы.
- •Удаление строк и столбцов.
- •Объединение матриц.
- •Транспонирование матриц.
- •Создание матриц с заданными свойствами.
- •Создание вектора равноотстоящих точек.
- •Создание вектора равноотстоящих точек в логарифмическом масштабе.
- •Разреженные матрицы.
- •Графика
- •Команда plot.
- •Графические объекты.
- •Окна изображений.
- •Добавление кривых на существующий график.
- •Управление осями.
- •Разбиение графического окна.
- •Подписи к осям и заголовки.
- •Графики в полярной системе координат.
- •Контурные графики и графики полей градиентов.
- •Создание массивов данных для трехмерной графики.
- •Построение графиков трехмерных поверхностей.
- •Программирование в системе matlab.
- •Основные типы данных.
- •Арифметические операторы и массивы.
- •Операторы отношения.
- •Логические операторы и функции.
- •Приоритет выполнения операторов.
- •Структура файлов сценариев.
- •Структура m-файлов функций.
- •Использование подфункций.
- •Операторная функция.
- •Передача данных через глобальные переменные.
- •Параметры функционального типа.
- •Функции с переменным числом аргументов.
- •Управление потоками.
- •If expression1
- •Диалоговый ввод.
- •Численные методы и обработка данных
- •Решение систем линейных алгебраических уравнений.
- •Решение систем линейных уравнений итерационными методами.
- •Обратная матрица и определитель.
- •Факторизация Холецкого.
- •Lu факторизация.
- •Qr факторизация.
- •Матричная экспонента.
- •Собственные значения и собственные вектора.
- •Нормальная форма Жордана.
- •Разложение Шура.
- •Сингулярное разложение.
- •Численное интегрирование.
- •Представление полиномов в среде matlab.
- •Умножение и деление многочленов.
- •Вычисление производной от многочлена.
- •Решение систем нелинейных уравнений.
- •Преобразование Фурье.
- •Xlabel('time (seconds)')
- •Решение обыкновенных дифференциальных уравнений.
- •Численное решение дифференциальных уравнений в частных производных.
- •Литература
Создание вектора равноотстоящих точек.
Функция linspace формирует линейный массив равноотстоящих узлов. Формы применения:
linspace(a, b) формирует линейный массив из 100 точек, равномерно распределенных на отрезке от a до b;
linspace(a, b, n) формирует линейный массив из n точек, равномерно распределенных на отрезке от a до b;
Пример:
M = linspace(1, 2, 5)
M =
1.2500 1.5000 1.7500 2.0000
Создание вектора равноотстоящих точек в логарифмическом масштабе.
Функция logspace генерирует вектор равноотстоящих в логарифмическом масштабе точек. Формы применения:
logspace(a, b) формирует вектор-строку из 50 равноотстоящих в логарифмическом масштабе точек между декадами 10a и 10b;
logspace(a, b, n) возвращает n точек между декадами 10a и 10b;
logspace(a, pi) возвращает точки в интервале между 10a и .
Все аргументы функции logspace должны быть скалярными величинами.
Разреженные матрицы.
Матрицы, содержащие большое число элементов с нулевыми значениями называются разреженными. Такие матрицы обычно возникают при решении краевых задач для систем дифференциальных уравнений методом сеток. С разреженными матрицами удобно работать, используя компактные схемы хранения только ненулевых элементов матрицы. Помимо ненулевых элементов в разреженном формате необходимо хранить индексную информацию, указывающую расположение каждого элемента в регулярном массиве. Эта дополнительная информация является ценой, которую приходится платить за отказ от хранения нулей. Для разреженных матриц в MATLAB имеется ряд функций, подборка из которых приводится ниже:
[B, d] = spdiags(A) создает разреженную матрицу B, столбцами которой являются ненулевые диагонали матрицы A. Вектор d содержит номера ненулевых диагоналей;
B = spdiags(A, d) создает разреженную матрицу B, столбцами которой являются ненулевые диагонали матрицы A, определенные вектором d;
A = spdiags(B, d, A) заменяет диагонали матрицы A, определенные вектором d, столбцами матрицы B;
A = spdiags(B, d, m, n) создает разреженную матрицу A размером mxn, размещая столбцы матрицы B вдоль диагоналей, определяемых вектором d;
full( S) преобразует разреженную матрицу S в полную;
S=sparse(A) преобразует полную матрицу в разреженную;
S=sparse(i, j, s, m, n)создает разреженную матрицу S размером mxn. Векторы i и j задают позиции элементов и являются целочисленными, а вектор s определяет действительное или комплексное числовое значение элемента матрицы. Векторы i, j и s должны иметь одну и ту же длину.
Построим матрицу системы уравнений, которая возникает при аппроксимации второй производной на равномерной сетке узлов:
n=5; e = ones(n, 1);
A = spdiags([e -2*e e], -1:1, n, n);
full(A)
ans =
-2 1 0 0 0
1 -2 1 0 0
0 1 -2 1 0
0 0 1 -2 1
0 0 0 1 -2
Построим разреженную матрицу A размером 4x4 из столбцов матрицы B, помещенных в дагонали матриы A, номера которых указаны в векторе d:
B = [ 41 11 0
52 22 0
63 33 13
74 44 24 ];
d = [ -3
0
2];
A = spdiags(B, d, 4, 4);
full(A)
ans =
11 0 13 0
0 22 0 24
0 0 33 0
41 0 0 44
Конвертируем матрицу из полного формата в разреженный, используя функцию sparse:
A = [ 0 0 0 5
0 2 0 0
1 3 0 0
0 0 4 0];
S = sparse(A)
S =
(3, 1) 1
(2, 2) 2
(3, 2) 3
(4, 3) 4
(1, 4) 5
В списке вывода перечислены ненулевые элементы матрицы S вместе с индексами строк и столбцов. Все элементы отсортированы по столбцам. Разреженную матрицу S из данного примера можно создать напрямую без конвертации:
S = sparse([3 2 3 4 1],[1 2 2 3 4],[1 2 3 4 5], 4, 4)