8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 120 121 122 123 124 125 126 ... 365

Напишите файл-функцию Hiispect, которая выводит на разные оси графического окна зависимости максимального и минимального собственных чисел матрицы Гильберта от порядка матрицы (для минимального собственного числа используйте логарифмическую шкалу по оси ординат). Входным аргументом файл-функции Hiispect должен быть максимальный порядок исследуемых матриц, выходные аргументы в данном случае не нужны. При возникновении затруднений воспользуйтесь листингом 7.5.

Исследуйте границы спектра матрицы Гильберта до двенадцатого порядка. Графическое окно, появляющееся в результате вызова

» HilSpect(12)

должно выглядеть так, как показано на рис. 7.2.

Рис. 7.2. Границы спектра матрицы Гильберта

Примечание

При решении практических задач, требующих много вычислений, становится актуальной проблема временных затрат компьютера. Оказывается, что заполнение матриц лучше осуществлять при помощи индексации или встроенных функций MATLAB, если структура матрицы позволяет это. Например, для получения матрицы Гильберта предназначена функция hilb. Увеличению производительности программ пользователя посвящена глава 23.


\ Листинг 7.5. Файл-функция Hxlspect для исследования спектра . матрицы Гильберта

................. I». ..... >>..............I .........................• - • ЬпЯНММИЯЯМЯЯЯЯИЯЯЯЯМЯЯЯИИНМЯ!

function HilSpect(N)

% Исследование границ спектра матрицы Гильберта

% использование: HilSpect(N), N — максимальный порядок

% инициализация массивов для границ спектра Lmax = zeros(1, N); Lmin = zeros(1, H) ;

% вычисления для матриц от первого порядка до N-ro for n = 1:N

% заполнение матрицы Гильберта, вместо вложенных циклов

% можно использовать встроенную функцию А = hilb(n);

А = zeros(п);

for k = 1:п for j = l:n

А(к, j) = 1/(к + j - lb-end

end

% вычисление спектра и его границ Lambda = eig(А); Lmax(n) = maxJLambda),-Lmin(n) = min (Lambda) ,-

end

% вывод зависимостей границ спектра от порядка матрицы figure;

subplot(2, 1, 1) plot(Lmax, ко-)

title(Максимальное собственное число матрицы Гильберта) xlabel(\itN) grid on

subplot(2, 1, 2) semi logy(Lmin, к*-)

title(Минимальное собственное число матрицы Гильберта) xlabel ( UtN ) grid on


В алгоритм заполнения последовательности матриц можно внести усовершенствование, поскольку при увеличении п на единицу новая матрица образуется из старой добавлением строки и столбца. Воспользуйтесь симметричностью матрицы Гилберта и тем, что MATLAB динамически увеличивает размеры массива по мере необходимости. При возникновении затруднений обратитесь к листингу 7.6, в котором приведен подходящий блок операторов.

! Листинг 7.6. Вычисления матриц Гильберта добавлением строки и столбца

а = 1;

for n = 2:N

for k = l:n - 1

A{n, k) = 1/ (n + k - 1) ;

A(k, n) = A(n, k);

end

A(n, n) = l/(2*n - lb-end

В заключение этого раздела отметим еще одну особенность цикла for, которая наряду с возможностью задания вещественного счетчика цикла с постоянным шагом делает цикл for достаточно универсальным. В качестве значений переменной цикла допускается использование массива значений:

for count = а

команды MATLAB

end

Если а— вектор-строка, то count последовательно принимает значение ее элементов при каждом заходе в цикл. В случае двумерного массива а на i -ом шаге цикла count содержит столбец а( :, i). Разумеется, если а является вектор-столбцом, то цикл выполнится всего один раз со значением count, равным а.

Цикл for оказывается полезным при выполнении определенного конечного числа действий. Существуют алгоритмы с заранее неизвестным количеством повторений, реализовать которые позволяет более гибкий цикл while.

Цикл while, суммирование рядов

Цикл while служит для организации повторений однотипных действий в случае, когда число повторений заранее неизвесгно и определяется выполнением некоторого условия. Рассмотрим пример на вычисление суммы, по-



0 ... 120 121 122 123 124 125 126 ... 365