VI.2. Операции над матрицами
39. (Норма
матрицы.) Вычислить норму
квадратной матрицы A=(aij)
n‑го
порядка.
40. (Построение матриц.) Построить матрицы
а)
б)
в)
г)
д)
41. (Построение
матриц.) Построить матрицы C=(
),
,
с элементами
;
.
42. (Циркулянты.)
По заданному вектору
построить циркулянтную (n
n)-матрицу
A,
у которой первая строка совпадает с a,
а каждая последующая строка есть
циклический сдвиг (влево) предыдущей
строки.
43. (Вертикальная
рекурентность, или матрицы, образованные
числами Стирлинга snk
и Snk
первого и второго рода.) Построить
(m
m)-матрицы
s=(snk)
и S=(Snk),
,
,
где snk=Snk=0
при n<k
и
s00=S00=1; sn0=Sn0=0 для n>0;
sn+1,k=sn,k–1–nsnk,
Sn+1,k=Sn,k–1+kSnk
для
n+1
k
1.
44. (Построение некоторых известных матриц.)
Для заданного вещественного вектора (x1,…,xn) построить (n n)-матрицу Вандермонда W=(wij), где
,
i, j=1,2,…,n.Для заданных вещественных векторов (x1,…,xn) и (y1,…,yn) построить (n n)-матрицу Коши C=(cij), где cij=(xi+yj)–1, i, j=1,2,…,n.
Построить целочисленную (n n)-матрицу Смита S=(sij), где sij=н.о.д.(i,j), i, j=1,2,…,n.
Вычислить определители матриц W, C и S.
Указание: известно, что
;
;
,
где det A
– определитель матрицы A,
– функция Эйлера, определяемая как
число целых чисел из отрезка [1,k],
взаимно простых с k.
45. (Транспонирование матрицы.) Транспонировать заданную квадратную матрицу.
46. (Числа разбиений.) Построить целочисленную квадратную матрицу Q=(qij) порядка s, элементы которой определены следующим образом:
q1k=qk1=1 для всех k=1,2,…; qmm=qm,m–1+1 для всех m=2,3,…;
qmk=qmm при m<k; qmk=qm,k–1+qm–k,k при m>k.
Замечание. qmk есть число способов представления натурального m в виде суммы неупорядоченных натуральных слагаемых, каждое их которых не превосходит r. Например, q5,4=7, так как 5 = 4+1 = 3+2 = 3+1+1 = 2+2+1 = 2+1+1+1 = 1+1+1+1+1.
47. ("Упаковка" и "распаковка" трехдиагональных матриц.)
Преобразовать матрицу
в вектор
.
Выполнить обратное преобразование.
Преобразовать матрицу
в вектор
.
Выполнить обратное преобразование.
48. ("Упаковка" и "распаковка" треугольных матриц.)
Преобразовать треугольную матрицу
в вектор
.
Выполнить обратное преобразование.
49. ("Упаковка" и "распаковка" симметричной матрицы.)
По заданной симметричной (n n)-матрице A=(aij) построить вектор
.
Выполнить обратное преобразование.
50. (Трехдиагональные, треугольные и симметричные матрицы.) Установить, является ли заданная матрица: а) трехдиагональной, б) треугольной, в) симметричной.
51. (Решение системы линейных уравнений.)
Найти решение системы линейных уравнений
где
,
i=1,2,…,n.
Найти решение системы линейных уравнений
используя метод Гаусса – метод последовательного исключения неизвестных.
52. (Итерационные методы решения системы линейных уравнений.) Найти решение системы линейных уравнений
(*)
используя итерационные методы Якоби и Гаусса-Зейделя.
Указание. В методе Якоби уравнения (*) переписываются в следующей форме:
(**)
Далее, взяв
какое-нибудь начальное приближение для
x-ов,
мы получим из уравнения (**)
новое приближение. Этот процесс
продолжается до тех пор, пока разность
между двумя последовательными
приближениями по всем x-ам
не станет меньше некоторого малого
значения
(т. е.
,
где
и
– соответственно предыдущее и последующее
приближения xi,
i=1,2,…,n).
Метод Гаусса-Зейделя отличается от
метода Якоби тем, что в нем всегда берется
для каждого x
последнее из полученных приближений.
Так, при вычислении второго приближения
x3
применяется
не первые, а вторые приближения x1
и x2.
53. (Разреженные
матрицы.) Разреженная
(m
n)-матрица
A
(т. е. матрица, большинство элементов
которой равны нулю) может быть представлена
тремя векторами, а именно: вектором b,
в котором перечислены ненулевые элементы
по строкам; вектором
j,
в котором перечислены номера столбцов
для каждого элемента, включенного в b;
и, наконец, вектором
,
где ik
– суммарное число ненулевых элементов
в строках с номерами 1,2,…,k–1
(таким образом, ik+1-ый
элемент вектора b
есть первый ненулевой элемент в k-ой
строке матрицы A).
Пример. Пусть
.
Тогда b=(1,2,1,1,4,3); j=(2,3,3,1,5,1,4); i=(2,3,5).
Построить уплотненное представление <b,j,i> для заданной матрицы A.
Выполнить обратное преобразование от <b,j,i> к A.
Найти значение элемента ast матрицы A, расположенного на пересечении s-ой строки и t-го столбца, по заданной пятерке <s,t,b,j,i>, где
.
54. (Седловая точка.) Седловой точкой матрицы называется любой ее элемент, являющийся минимальным в своей строке и максимальным в своем столбце. Вычислить lA – число седловых точек матрицы A. (Например, для матриц
,
,
,
имеем
lA=0,
lB=1,
lC=2,
lD=9.)
Попутно
вычислить координаты последней из
найденных седловых точек (в предположении,
что
).
55. (Кронекерово
произведение матриц.) Вычислить
– кронекерово произведение матриц A
и B,
определяемое так:
,
где
,
,
Матрица C имеет, таким образом, размер ms nt.
56. (Обычное умножение матриц. Метод Винограда. Возведение матриц в степень.)
Даны (l m)-матрица A=(aij) и (m n)-матрица B=(bij). Вычислить C=AB – их произведение.
Даны квадратные матрицы X=(xij) и Y=(yij) порядка 2n. Вычислить Z – произведение матриц X и Y по методу Винограда.
Дана квадратная матрица G. Вычислить матрицу D=Gn=G G … G (n сомножителей).
Указания.
Здесь C=(cij) – это (l n)-матрица с элементами
,
i=1,…,l;
k=1,…,n.
В методе Винограда для вычисления скалярных произведений используется следующее соотношение:
,
где
,
.
Предварительно
следует вычислить вспомогательные
векторы
и
.
Вычисление Z
по этому методу позволяет сэкономить
примерно половину умножений по сравнению
с методом а). Оцените число операций
сложения и умножения в методах а), б).
Подумайте здесь об ускоренном методе вычисления Gn. Разработайте метод, аналогичный индийскому способу возведения в степень, рассмотренный в задаче I.1.9.
57. (Умножение булевых матриц.) Булева матрица составлена из элементов, принимающих значения true и false. При перемножении булевых матриц A=(aij) размера (k l) и B=(btr) размера (l m) получается булева матрица C=(cuv) размера (r m), элементы которой определяются следующим образом:
, (*)
где &
и
– соответственно конъюнкция и дизъюнкция
Вычислить C=A B – произведение булевых матриц A и B.
Модифицировать задание, используя в (*) вместо операцию
(неэквивалентность), определяемую так:
,
если x=y,
и
,
если x
y.
(Если обозначить true
и false
соответственно через 0 и 1, то
есть сложение по mod
2.)
58. (Перемножение треугольных матриц, представленных в векторной форме.) При перемножении двух треугольных матриц получается также треугольная матрица. Вычислить произведение двух треугольных матриц, представленных в векторной форме, как в п. а) задачи 48. (Переход к квадратным матрицам запрещен!)
59. (Нулевые подматрицы.) В матрице, составленной из нулей и единиц, найти наибольшую (по числу элементов) подматрицу, целиком состоящую из нулей. (Как показывает следующий пример, решение, вообще говоря, неоднозначно:
.)
Оцените временную сложность Вашего алгоритма.
60. (Подматрица наибольшего веса.) Вес матрицы определим как сумму ее элементов. Для заданной матрицы найти ее подматрицу наибольшего веса. (Как и в задаче 59, решение здесь, вообще говоря, неоднозначно.)
Оцените временную сложность Вашего алгоритма.
61. (Определитель квадратной матрицы.)
Вычислить определитель вещественной матрицы n-го порядка, приводя ее к треугольному виду.
Модифицировать разработанный алгоритм для вычисления определителя целочисленной матрицы. (Здесь разрешается оперировать только с целыми числами.)
62. (Универсальная матрица.) Двоичная (2n2n)-матрица Un определяется рекурсивно:
;
,
n=2,3,…,
где
– матрица, полученная
из
инвертированием
элементов, т.е. заменой 0 на 1 и 1 на 0.
Построить матрицу U8. Длина строки матрицы U8 составляет 256 битов, или 32 байта. Поэтому для хранения матрицы U8 достаточно 256 32 = 8192 байта.
Замечание. Матрица Un используется в теории кодирования. Всякое n-мерное подпространство двоичных векторов длины m может быть получено путем подходящего выбора m столбцов (возможно, с повторениями) матрицы Un. Строки, полученной таким образом матрицы, и будут составлять соответствующее n‑мерное подпространство.
