Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab BSU.doc
Скачиваний:
11
Добавлен:
08.09.2019
Размер:
1.04 Mб
Скачать

Создание вектора равноотстоящих точек.

Функция linspace формирует линейный массив равноотстоящих узлов. Формы применения:

  • linspace(a, b) формирует линейный массив из 100 точек, равномерно распределенных на отрезке от a до b;

  • linspace(a, b, n) формирует линейный массив из n точек, равномерно распределенных на отрезке от a до b;

Пример:

M = linspace(1, 2, 5)

M =

  1. 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)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]