Главная страница
Навигация по странице:

  • Как доказывается это утверждение

  • Математика. Настоящий учебник посвящен системе Mathematica прикладному пакету компьютерной алгебры, при помощи которого можно решать любые задачи, в которых в той или иной форме встречается математика


    Скачать 4.43 Mb.
    НазваниеНастоящий учебник посвящен системе Mathematica прикладному пакету компьютерной алгебры, при помощи которого можно решать любые задачи, в которых в той или иной форме встречается математика
    АнкорМатематика
    Дата11.05.2022
    Размер4.43 Mb.
    Формат файлаpdf
    Имя файла106-108.pdf
    ТипУчебник
    #521834
    страница36 из 38
    1   ...   30   31   32   33   34   35   36   37   38
    Raymond M. Smullyan. Is God a Taoist ?
    I thought to address my lectures to the most intelligent in the class and to make sure, if possible, that even the most intelligent student was unable to completely encompass everything that was in the lectures.
    Richard Feynman, Lectures on physics
    What is written with effort is in general read without pleasure.
    Samuel Johnson
    Старый мэтр называл алгебру музыкой души.
    Николай Гумилев, Скрипка Страдивариуса
    . . . Февраль. Достать чернил и паркер!
    Тимур Кибиров
    Набор литературных цитат, которые автивно помнит человек, об- разует неотъемлемую составляющую его личности. Эта составля- ющая используется и в процессе коммуникации между людьми,

    459
    поскольку любая коммуникация основана на некоторой общности исходных знаний. Так, Тимур Кибиров в своей поэзии обращается к тем, кто замечает и понимает все разбросанные по его стихам явные и косвенные цитаты — или хотя бы значимую часть этих цитат.
    Владимир Успенский, . . . и лесные сраки
    Согласны ли Вы с тем, что каждый фильм должен иметь начало,

    середину и конец?
    Конечно, но не обязательно в этом порядке.
    Жан-Люк Годар
    Мы далеки от мысли. От всякой мысли.
    Виктор Черномырдин
    Все-таки есть кое-что приятное в постоянстве законов истории:
    вот, например, сейчас нормальному человеку из языков, если го- ворить честно, ничего, кроме русского и английского, не требуется
    — и в прежние времена в общем-то так и было.
    Андрей Зализняк
    Все это вздорные аллегории.
    Варвара Петровна Ставрогина
    § 1. Многочлены
    Polynomials and power series.
    May they forever rule the worls.
    Shreeram S. Abhyankar
    1. Анатомия многочленов.
    213
    PolynomialQ[f,
    {x,y,z}] тест полиномиальности
    Variables[f]
    входящие в f переменные
    Exponent[f,x]
    степень f по x
    В настоящем разделе мы рассматриваем многочлены от одной перемен- ной. Каждый такой многочлен представляется в виде
    f = a
    n
    x
    n
    + a
    n
    1
    x
    n
    1
    + . . . + a
    1
    x + a
    0
    ,
    где x переменная, а a
    n
    , a
    n
    1
    , . . . , a
    1
    , a
    0
    — коэффициенты.
    Многочлен f
    ∈ K[x] называется четным, если в него входят только четные степени x. Таким образом, четные многочлены — это в точности элементы K[x
    2
    ]. Аналогично, многочлен f
    ∈ K[x] называется нечетным,
    если в него входят только нечетные степени x. Каждый многочлен един- ственным образом представляется в виде суммы четной и нечетной частей.
    213
    Кипарис фалличен. Пальма — вагинальна. c
    Тимур Кибиров, Образы Италии

    460
    Четный многочлен представляется в виде f (x) = g(x)
    2
    , а нечетный — в виде f (x) = xg(x)
    2
    , для некоторого многочлена g
    ∈ K[x]. В частности, для четного многочлена имеет место равенство f (
    −x) = f(x), а для нечетного
    — равенство f (
    −x) = −f(x).
    1.1. Напишите процедуру, устанавливающую четность/нечетность много- члена f и, в случае положительного ответа, находящую многочлен g.
    Следующий пример показывает, что наивные представления об операци- ях над многочленами могут нас обманывать.
    1.2. Существует ли многочлен f
    Z[x], квадрат которого f
    2
    имеет меньше ненулевых коэффициентов, чем сам f ? Организуйте поиск такого много- члена. Удалось ли Вам его найти?
    Ответ. Вы будете смеяться, но такие f существуют. Вот только найти его без шансов! Приведем наименьший пример
    214
    , который очевидно находит- ся далеко за пределами непосредственного поиска на домашнем компьюте- ре:
    f = 13750x
    12
    + 5500x
    11
    1100x
    10
    + 440x
    9
    220x
    8
    + 220x
    7
    15x
    6
    50x
    5
    + 10x
    4
    4x
    3
    + 2x
    2
    2x − 1.
    Квадрат этого многочлена равен
    f
    2
    = 189062500x
    24
    + 151250000x
    23
    + 2662000x
    19
    + 2685100x
    18

    2217600x
    17
    83595x
    12
    + 2820x
    11
    660x
    7
    + 286x
    6
    + 44x
    5
    + 4x + 1.
    Исходный многочлен имеет 13 ненулевых коэффициентов, а его квадрат —
    всего лишь 12. Заметим, что степень 12 минимальна, многочленов с таким свойством степени
    11 не существует.
    2. Коэффициенты многочленов.
    Coefficient[f,h]
    коэффициент при h в f
    Coefficient[f,x,n]
    коэффициент при x
    n
    в f
    CoefficientList[f,x]
    список коэффициентов многочлена f
    CoefficientArrays[f,x]
    список коэффициентов малочлена f
    Следующие задачи взяты из книги
    215
    . Разумеется, там не предполага- лось, что они будут решаться с использованием компьютера.
    2.1. Найдите сумму коэффициентов многочлена (x
    2
    + 3x
    3)
    317 2.2. Найдите коэффициенты при x
    17
    и x
    18
    в выражении (1 + x
    5
    + x
    7
    )
    20 214
    M.Kreuzer, L.Robbiano, Computational commutative algebra. I. — Springer-Verlag,
    Berlin et al., 2000.
    215
    А.М.Яглом, И.М.Яглом, Элементарные задачи в неэлементарном изложении. —
    М., ГИТТЛ, 1954, с.1–543.

    461 2.3.
    В котором из многочленов (1 + x
    2
    − x
    3
    )
    1000
    или (1
    − x
    2
    + x
    3
    )
    1000
    коэффициент при x
    20

    больше?
    2.4. Найдите коэффициент при x
    50
    в многочлене
    (1 + x)
    1000
    + x(1 + x)
    999
    + x
    2
    (1 + x
    998
    ) + . . . + x
    1000
    .
    2.5. Найдите коэффициент при x
    50
    в многочлене
    (1 + x) + 2(1 + x)
    2
    + 3(1 + x)
    3
    + . . . + 1000(1 + x)
    1000
    .
    3. Значения многочленов.
    Казалось бы, вычисление значения многочлена f в точке z требует вы- полнения 2n
    1 умножений: n−1 умножения для нахождения степеней z и
    n умножений на коэффициенты. В действительности, как было известно в древнем Китае, здесь можно обойтись n умножениями. Скажем, многочлен
    f = ax
    4
    + bx
    3
    + cx
    2
    + dx + e
    четвертой степени можно переписать в виде
    f = (((ax + b)x + c)x + d)x + e,
    где производится только четыре умножения. В Европе такая схема вычис- лений известна как схема Руффини–Горнера.
    3.1. Реализуйте вычисление значения многочлена f по схеме Руффини–
    Горнера.
    Решение. Проще всего при помощи команды Fold, примерно так:
    Fold[#1*x+#2&,0,
    {a,b,c,d,e}]
    Обратите внимание на то, первым аргументом команды Fold является функция от двух аргументов
    HornerForm[f,x]
    форма Горнера многочлена f
    При этом для вычисления значения многочлена степени n схема Руффи- ни—Горнера требует n умножений и n сложений. Эта схема является схе- мой без предварительной обработки коэффициентов. Иными слова- ми, на каждом шаге каждый операнд является либо x, либо одним из коэф- фициентов многочлена, либо абсолютной константой. Легко доказать, см.,
    например
    216
    , что схема Руффини—Горнера является неулучшаемой в этом классе, иными словами, n + n это минимальное число операций, которое возможно для схемы без предварительной обработки коэффициентов.
    216
    В.Я.Пан, О способах вычисления значений многочленов. — Успехи Мат. Наук,
    1966, т.21, N.1, с.103–134. Теорема 1.1.

    462
    В действительности, если требуется многократно вычислять значения одного и того же многочлена (скажем при приближенном вычислении зна- чений функции при помощи отрезков ряда Тэйлора), как правило, выгодно произвести предварительную обработку коэффициентов, т.е. выра- зить многочлен в другой форме, так что потом для вычисления значения многочлена требуется меньшее число алгебраических операций.
    Вот простейший пример такой схемы, предложеный Тоддом. Выделим квадрат в многочлене четвертой степени:
    f = a
    4
    x
    4
    + a
    3
    x
    3
    + a
    2
    x
    2
    + a
    1
    x + a
    0
    = a
    4
    ((x(x + b) + c)(x(x + b) + x + d) + e),
    где коэффициенты b, c, d, e ищутся по формулам
    b =
    −a
    4
    − a
    3 2a
    4
    ,
    c =
    a
    1
    − ba
    2
    a
    4
    + b
    2
    (b + 1),
    d =
    a
    2
    a
    4
    − b(b + 1), e =
    a
    0
    a
    4
    − cd.
    Ясно, что теперь вычисление индивидуального значения f (x) требует лишь
    3 умножения и 5 сложений.
    Пусть теперь f — многочлен степени n. В упражнениях 12.35 и 12.36 в книге А.Ахо, Дж.Хопкрофта, Дж.Ульмана приведен алгоритм вычисления
    f (x), использующий
    bn/2c + 2 умножений. С другой стороны, Теорема 12.4
    той же книги утверждает, что не существует схемы, вычисляющей значение произвольного многочлена степени n менее, чем за
    bn/2c умножений.
    3.2. Пусть f (t) = at
    2
    + bt + c — квадратичный многочлен, Проверьте, что
    f (1) + f (4) + f (6) + f (7) = f (2) + f (3) + f (5) + f (8).

    Как доказывается это утверждение?
    Ответ. В данном случае проверка является доказательством. А именно,
    доказываемое утверждение состоит в том, что
    1 0
    + 4 0
    + 6 0
    + 7 0
    = 2 0
    + 3 0
    + 5 0
    + 8 0
    ,
    1 1
    + 4 1
    + 6 1
    + 7 1
    = 2 1
    + 3 1
    + 5 1
    + 8 1
    ,
    1 2
    + 4 2
    + 6 2
    + 7 2
    = 2 2
    + 3 2
    + 5 2
    + 8 2
    .
    Обратите внимание, что это ровно тот тип абсолютно бесполезных задач о суммах степеней, который рассматривается в аддитивной теории чисел!
    3.3.
    Разбейте начальный отрезок натурального ряда 1, 2, . . . , 16 на две части так, чтобы сумма значений любого кубического многочлена на одной из этих частей равнялась сумме значений на другой. Единственно ли такое разбиение?
    3.4. Докажите, что вообще для любого n можно разбить начальный отре- зок натурального ряда от 1 до 2
    n+1
    на две чаcти так, чтобы сумма значений любого многочлена степени n на одной из этих частей равнялась сумме зна- чений на другой.

    463 3.5. Обобщите предыдущую задачу. А именно, докажите, что для любых
    m и n можно разбить начальный отрезок натурального ряда от 1 до m
    n+1
    на m попарно дизъюнктных чаcтей так, чтобы все суммы значений любого многочлена степени n на этих частях совпадали.
    Однако, мы не сделали все возможное в направлении обобщения нашей исходной задачи. Мы доказали, что для любого многочлена степени n най- дутся два различных s-элементных множества, где s = 2
    n
    , суммы значений многочлена на которых совпадают. Является ли это s наименьшим возмож- ным? Следующая задача показывает, что нет.
    3.6. Пусть f (t) = at
    2
    + bt + c — квадратичный многочлен, Проверьте, что
    f (1) + f (5) + f (6) = f (2) + f (3) + f (7).
    3.7.
    Можно ли понизить оценку s = 2
    n
    для многочленов степени n =
    3, 4, 5, 6?
    4. Деление многочленов с остатком.
    PolynomialQuotient[f,g,x]
    неполное частное при дедении f на g
    PolynomialRemainder[f,g,x]
    остаток при делении f на g
    PolynomialMod[f,g]
    ibid., другим манером
    PolynomialGCD[f,g]
    наибольший общий делитель
    PolynomialLCM[f,g]
    наименьшее общее кратное
    4.1. Найдите остаток от деления многочлена x + x
    3
    + x
    9
    + x
    27
    + x
    81
    + x
    243
    на x
    2
    1.
    4.2. Найдите коэффициент при x
    14
    в неполном частном, получающемся при делении x
    1951
    на x
    4
    + x
    3
    + 2x
    2
    + x + 1.
    4.3. Делится ли многочлен
    x
    9999
    + x
    8888
    + x
    7777
    + . . . + x
    1111
    + 1
    на x
    9
    + x
    8
    + x
    7
    + . . . + x + 1?
    4.4. Найдите наименьшее m
    1000, для которого многочлен (x + 1)
    m

    x
    m
    1 делится на (x
    2
    + x + 1)
    2 4.5.
    Найдите наименьшие l
    1000, m ≥ 2000, n ≥ 3000, для которых многочлен x
    l
    − x
    m
    + x
    n
    делится на x
    2
    − x + 1.
    4.6.
    Найдите наименьшие l
    1000, m ≥ 2000, n ≥ 3000, для которых многочлен x
    l
    + x
    m
    + x
    n
    делится на x
    2
    + x + 1.

    464 5. Структурные манипуляции.
    Expand[f]
    раскрыть все скобки
    Collect[f,x]
    расписать f по степеням x
    Collect[f,
    {x,y,z}] расписать f по одночленам от x, y, z
    Factor[f]
    разложить многочлен f на множители
    FactorSquareFree[f]
    вынести квадратичные множители
    FactorTerms[f,x]
    вынести множители, не зависящие от x
    FactorList[f]
    список неприводимых множителей
    FactorSquareFreeList[f]
    список квадратичных множителей
    FactorTermsList[f]
    список множителей, в зависимости от x
    5.1. Разложите на множители первые 20 многочленов вида x
    i
    − y
    i
    Ответ. Проще всего так:
    For[i=1,i<20,i++,Print[x^i-y^i,Factor[x^i-y^i]]]
    5.2. Упростите сумму 1 + x + 2x
    2
    + . . . + nx
    n
    5.3. А теперь проверьте следующие формулы (Кнут I-1.2.3.20):
    9
    · 1 + 2 = 11, 9 · 12 + 3 = 111, 9 · 123 + 4 = 1111, 9 · 1234 + 5 = 11111, . . .
    и объясните их с помощью результата предыдущей задачи.
    Ответ. Небольшой эксперимент убедит Вас в том, что n в выражении
    9*FromDigits[Table[i,
    {i,1,n}]]+(n+1)
    совершенно не обязано быть цифрой. Оно может быть любым числом и даже символом или выражением. Кстати, только теперь мы понимаем, как работает FromDigits!
    С вычислительной точки зрения многочлен — это просто число в базе x
    (или, если угодно, число это многочлен от неизвестной 10).
    5.4. Задайте многочлен f = a
    n
    x
    n
    + . . . + a
    1
    x + a
    0
    с помощью команды
    FromDigits.
    Ответ. Ну конечно, FromDigits[
    {an,...,a1,a0},x].
    5.5. Можно ли разложить многочлен
    x
    2222
    + 2x
    2220
    + 4x
    2218
    + . . . + 2218x
    4
    + 2220x
    2
    + 2222

    в произведение двух многочленов с целыми коэффициентами?
    5.6. Можно ли разложить многочлен
    x
    250
    + x
    249
    + x
    248
    + . . . + x
    2
    + x + 1

    465

    в произведение двух многочленов с целыми коэффициентами?
    6. Неразложимые многочлены.
    Decompose[f,x]
    разложить многочлен f в композицию
    Разложение многочленов в композицию не единственно.
    (x
    2
    + x + 1)
    (x
    2
    1) = x
    4
    − x
    2
    + 1 = (x
    2
    − x + 1) ◦ x
    2
    .
    (x
    2
    + x + 1)
    (x
    2
    ) = x
    4
    + x
    2
    + 1 = (x
    2
    − x + 1) (x
    2
    + 1).
    7. Алгебраические уравнения.
    Solve[f==0,x]
    решить уравнение f (x) = 0
    Roots[f==0,x]
    решить уравнение f (x) = 0
    NSolve[f==0,x]
    численное решение уравнения f (x) = 0
    FindRoot[f==0,
    {x,x0}] корень уравнения f(x) = 0 вблизи x
    0 8. Корни многочленов.
    Root[f,i]
    i-й корень многочлена f
    RootReduce[g]
    преобразовать выражение g к Root
    ToRadicals[g]
    преобразовать входящие в g
    объекты типа Root в радикалы
    RootSum[f,g]
    сумма g(x
    i
    ) по корням многочлена f
    § 2. Запись матриц
    1. Общий элемент. В данном пункте познакомимся с самым простым и важным способом задания матриц. Этот способ состоит в явном указании общего элемента матрицы при помощи команды Table. А именно, матри- ца x = (x
    ij
    ) размера m
    × n, у которой элемент в позиции (i, j) равен x
    ij
    задается посредством Table[x[i,j],
    {i,1,m},{i,1,n}]
    Table[f[i,j],
    {i,1,m},{j,1,n}] матрица значений функции f
    Array[f,
    {m,n}]
    массив значений функции f
    В системе есть внутренняя функция DiagonalMatrix, которая сопостав- ляет списку
    {x
    1
    , . . . , x
    n
    } диагональную матрицу с элементами x
    1
    , . . . , x
    n
    по главной диагонали. Тем не менее, в качестве практики на использование
    Table, решите следующую задачу.
    1.1. Задайте диагональную матрицу с элементами x
    1
    , . . . , x
    n

    466
    Ответ. Например, так diag[x ,n ]:=Table[If[i==j,x[i],0],
    {i,1,n},{j,1,n}]
    1.2. Линейные комбинации xe + ytest единичной и пробной матриц назы- ваются комбинаторными матрицами. Изобразим для примера комби- наторную матрицу степени 4:



    x + y
    y
    y
    y
    y
    x + y
    y
    y
    y
    y
    x + y
    y
    y
    y
    y
    x + y



    Задайте комбинаторную матрицу порядка n, убедитесь, что для ненулевых
    x, x + ny она обратима и найдите обратную к ней.
    1.3. Следующая матрица, известная как матрица Вандермонда, десят- ки раз возникает в нашем учебнике по самым разным поводам:
    V (x
    1
    , . . . , x
    n
    ) =





    1 1
    . . .
    1
    x
    1
    x
    2
    . . .
    x
    n
    x
    2 1
    x
    2 2
    . . .
    x
    2
    n
    . . .
    . . .
    . . .
    . . .
    x
    n
    1 1
    x
    n
    1 2
    . . .
    x
    n
    1
    n





    Задайте матрицу Вандермонда и угадайте формулу для обратной к ней.
    Ответ. Непосредственно по определению:
    vandermonde[x ,n ]:=Table[x[j]^i,
    {i,0,n-1},{j,1,n}]
    Обратите внимание на порядок итераторов!
    1.4. Задайте матрицу Коши:













    1
    x
    1
    + y
    1 1
    x
    1
    + y
    2
    . . .
    1
    x
    1
    + y
    n
    1
    x
    2
    + y
    1 1
    x
    2
    + y
    2
    . . .
    1
    x
    2
    + y
    n
    1
    x
    n
    + y
    1 1
    x
    n
    + y
    1
    . . .
    1
    x
    n
    + y
    n













    .
    Найдите обратную к ней для небольших n.
    Ответ. И здесь непосредственно по определению:
    cauchy[x ,y ,n ]:=Table[1/(x[i]+y[j]),
    {i,1,n},{j,1,n}]
    1.5. Задайте матрицу одномерного преобразования:








    1 + x
    1
    y
    1
    x
    1
    y
    2
    . . .
    x
    1
    y
    n
    x
    2
    y
    1 1 + x
    2
    y
    2
    . . .
    x
    2
    y
    n
    x
    n
    y
    1
    x
    n
    y
    1
    . . .
    1 + x
    n
    y
    n








    .

    467
    Найдите обратную к ней для небольших n.
    Ответ. Снова без всяких хитростей:
    dilation[x ,y ,n ]:=
    Table[If[i==j,1,0]+x[i]*y[j],
    {i,1,n},{j,1,n}]
    Стоит обратить внимание, что геометрически название не совсем точно.
    Конечно, в общем положении, когда yx
    6= 0, это преобразование дей- ствительно будет дилацией (псевдоотражением). Однако, в случае, когда
    yx = 0, эта формула задает трансвекцию, а не псевдоотражение.
    1.6. Задайте следующую матрицу:








    1 + x
    1
    y
    1 1 + x
    1
    y
    2
    . . .
    1 + x
    1
    y
    n
    1 + x
    2
    y
    1 1 + x
    2
    y
    2
    . . .
    1 + x
    2
    y
    n
    1 + x
    n
    y
    1 1 + x
    n
    y
    1
    . . .
    1 + x
    n
    y
    n








    .
    Будет ли она обратимой для каких-то n, x
    i
    и y
    i
    ?
    1.7. Задайте следующую матрицу:















    −x
    1 1
    0
    . . .
    0 0
    1
    −x
    2 1
    . . .
    0 0
    0 1
    −x
    3 0
    0 0
    0 0
    −x
    n
    1 1
    0 0
    0
    . . .
    1
    −x
    n















    .
    Выясните, будет ли она обратимой и, если да, то найдите обратную к ней для небольших n.
    1.8. Задайте следующую матрицу:















    x
    1 1
    0
    . . .
    0 0
    1 x
    2 1
    . . .
    0 0
    0
    1 x
    3 0
    0 0
    0 0
    x
    n
    1 1
    0 0
    0
    . . .
    1
    x
    n















    .

    468
    Выясните, будет ли она обратимой и, если да, то найдите обратную к ней для небольших n.
    1.9. Задайте следующую матрицу:















    y
    1
    x
    1 0
    . . .
    0 0
    1
    y
    2
    x
    2
    . . .
    0 0
    1 1
    y
    3 0
    0 1
    1 1
    y
    n
    x
    n
    1 1
    1
    . . .
    1
    y
    n+1















    .
    Выясните, будет ли она обратимой и, если да, то найдите обратную к ней для небольших n.
    2. Переключатели.
    Матрица x = (x
    ij
    )
    ∈ M(n, R) вида





    a
    0
    a
    1
    a
    2
    . . .
    a
    n
    1
    a
    n
    1
    a
    0
    a
    1
    . . .
    a
    n
    2
    a
    n
    2
    a
    n
    1
    a
    0
    . . .
    a
    n
    3
    . . .
    . . .
    . . .
    . . .
    . . .
    a
    1
    a
    2
    a
    3
    . . .
    a
    0





    .
    называется циркулянтом. Иными словами, x
    ij
    зависит не от самих ин- дексов i, j, а только от вычета их разности i
    − j по модулю n.
    2.1. Для всех n задайте циркулянт и для нескольких небольших n найдите матрицу, обратную к нему.
    Решение.
    Очевидный способ состоит в том, чтобы явно задать общий элемент циркулянта:
    circ[a ,n ]:=Table[a[Mod[j-i,n]],
    {i,1,n},{j,1,n}]
    Вот еще один изящный способ задавать циркулянт с помощью команды
    MapIndexed:
    MapIndexed[RotateRight,Table[
    {a[1],a[2],...,a[n-1],a[0]},{5}]]
    Требуемый сдвиг по отношению к исходному списку можно обеспечить либо предварительным применением RotateLeft
    MapIndexed[RotateRight,Table[RotateLeft[x],
    {Length[x]}]]
    Либо изменением на 1 степени RotateRight
    MapIndexed[RotateRight[#1,#2-1]&,Table[x,
    {Length[x]}]]

    469
    Матрица x = (x
    ij
    )
    ∈ M(n, R) вида





    a
    0
    a
    1
    a
    2
    . . .
    a
    n
    1
    −a
    n
    1
    a
    0
    a
    1
    . . .
    a
    n
    2
    −a
    n
    2
    −a
    n
    1
    a
    0
    . . .
    a
    n
    3
    . . .
    . . .
    . . .
    . . .
    . . .
    −a
    1
    −a
    2
    −a
    3
    . . .
    a
    0





    .
    называется антициркулянтом. Иными словами, (
    1)
    sign(j
    −i)
    x
    ij
    зависит не от самих индексов i, j, а только от вычета их разности i
    − j по модулю
    n.
    2.2. Для всех n задайте антициркулянт и для нескольких небольших n
    найдите матрицу, обратную к нему.
    Матрица x = (x
    ij
    )
    ∈ M(n, R) вида





    a
    0
    a
    1
    a
    2
    . . .
    a
    n
    1
    da
    n
    1
    a
    0
    a
    1
    . . .
    a
    n
    2
    da
    n
    2
    da
    n
    1
    a
    0
    . . .
    a
    n
    3
    . . .
    . . .
    . . .
    . . .
    . . .
    da
    1
    da
    2
    da
    3
    . . .
    a
    0





    .
    называется квазициркулянтом.
    2.3. Для всех n задайте квазициркулянт и для нескольких небольших n
    найдите матрицу, обратную к нему.
    2.4.
    Матрица x = (x
    ij
    ) называется теплицевой, если ее элемент x
    ij
    в позиции (i, j) зависит не от самих i и j, а только от их разности i
    − j.
    Традиционно считают, что для любого h =
    (n − 1), . . . , −1, 0, 1, . . . , n − 1
    определен элемент x
    h
    ∈ K и полагают x
    ij
    = x
    i
    −j
    . Изобразим для примера теплицеву матрицу степени 5:





    x
    0
    x
    1
    x
    2
    x
    3
    x
    4
    x
    1
    x
    0
    x
    1
    x
    2
    x
    3
    x
    2
    x
    1
    x
    0
    x
    1
    x
    2
    x
    3
    x
    2
    x
    1
    x
    0
    x
    1
    x
    4
    x
    3
    x
    2
    x
    1
    x
    0





    Задайте теплицеву матрицу произвольного размера и вычислите ее опре- делитель для нескольких небольших n.
    2.5.
    Матрица x = (x
    ij
    ) называется ганкелевой, если ее элемент x
    ij
    в позиции (i, j) зависит не от самих i и j, а только от их суммы i + j. Иными словами, для любого h = 2, . . . , 2n определен элемент x
    h
    ∈ K и x
    ij
    = x
    i+j
    Впрочем, обычно нумерацию x
    h
    начинают не с x
    2
    , а с x
    0
    , так что x
    ij
    =
    x
    i+j
    2
    . Изобразим для примера ганкелеву матрицу степени 5:





    x
    0
    x
    1
    x
    2
    x
    3
    x
    4
    x
    1
    x
    2
    x
    3
    x
    4
    x
    5
    x
    2
    x
    3
    x
    4
    x
    5
    x
    6
    x
    3
    x
    4
    x
    5
    x
    6
    x
    7
    x
    4
    x
    5
    x
    6
    x
    7
    x
    8






    470
    Задайте ганкелеву матрицу произвольного размера и вычислите ее опреде- литель для небольших n.
    3. Симметрия. В данном пункте мы изучим применение к матрице пре- образований Reverse и Transpose.
    Reverse[x]
    инвертировать список x
    Transpose[x]
    транспонировать список x
    Преобразование Reverse переставляет начало и конец списка, в данном случае первую строчку с последней, вторую с предпоследней и т.д. По умолчанию Transpose меняет первые два уровня вложенности списка. Тем самым, для матриц оно переставляет строки и столбцы. Эти преобразо- вания порождают диэдральную группу D
    4
    , таким образом, комбинируя их мы можем получить восемь различных преобразований матриц.
    3.1. Задайте матрицу, транспонированную к матрице x относительно по- бочной диагонали.
    Ответ. Проще всего так:
    Reverse[Transpose[Reverse[x]]]
    3.2. Задайте матрицу, получающуюся из матрицы x отражением относи- тельно горизонтальной оси симметрии.
    Ответ. Просто Reverse[x].
    3.3. Задайте матрицу, получающуюся из матрицы x отражением относи- тельно вертикальной оси симметрии.
    Ответ. Можно превратить строки в столбцы, отразить относительно го- ризонтальной оси симметрии и снова превратить столбцы в строки:
    Transpose[Reverse[Transpose[x]]]
    Эта конструкция будет встречаться нам настолько часто, что в дальнейшем обычно мы приводим только решение для строк, подразумевая, что дважды применяя Transpose, мы получим решение для столбцов.
    3.4.
    Задайте матрицу, получающуюся из матрицы x поворотом относи- тельно центра по часовой стрелке на 90
    o
    Ответ.
    Вначале обращаем порядок строк, потом превращаем строки в столбцы:
    Transpose[Reverse[x]]
    При этом первая строка становится последним столбцом.
    3.5.
    Задайте матрицу, получающуюся из матрицы x поворотом относи- тельно центра против часовой стрелке на 90
    o
    Ответ. Естественно, Reverse[Transpose[x]]. Здесь мы сначала превра- щаем строки в столбцы, а потом образаем порядок строк. При этом первая строка становится первым столбцом.
    Теперь каждый, кто слышал, что такое диэдральная группа, готов за- вершить процесс.

    471 3.6. Задайте матрицу, получающуюся из матрицы x отражением относи- тельно центра.
    Ответ. Естественно,
    Reverse[Transpose[Reverse[Transpose[x]]]]
    или, что то же самое,
    Transpose[Reverse[Transpose[Reverse[x]]]]
    Соберем теперь вместе все восемь элементов лиэдральной группы D
    4
    :
    dihedral=
    {Identity,Transpose,Reverse,
    Composition[Reverse,Transpose],
    Composition[Transpose,Reverse],
    Composition[Transpose,Reverse,Transpose],
    Composition[Reverse,Transpose,Reverse],
    Composition[Reverse,Transpose,Reverse,Transpose]
    }
    Их применение к матрице
    
    a
    b
    c
    d
    
    посредством
    Map[MatrixForm,Through[dihedral[
    {{a,b},{c,d}}]]]
    даст следующие восемь матриц:
    
    a
    b
    c
    d
    
    
    a
    c
    b
    d
    
    
    c
    d
    a
    b
    
    
    b
    d
    a
    c
    
    
    c
    a
    d
    b
    
    
    b
    a
    d
    c
    
    
    d
    b
    c
    a
    
    
    d
    c
    b
    a
    
    4. Окаймление.
    4.1. Задайте следующую матрицу:








    1
    x
    1
    . . .
    x
    n
    y
    1 1
    . . .
    0
    y
    n
    0
    . . .
    1








    .
    Выясните, будет ли она обратимой и, если да, то найдите обратную к ней для небольших n.
    4.2. Задайте квадратную матрицу порядка n, в которой натуральные числа от 1 до n
    2
    расположены по спирали в направлении по часовой стрелке,
    начинающейся в левом верхнем углу. Вот примеры таких матриц для n =
    2, 3, 4, 5:
    1 2
    4 3
    1 2
    3 8
    9 4
    7 6
    5 1
    2 3
    4 12 13 14 5
    11 16 15 6
    10 9
    8 7
    1 2
    3 4
    5 16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9

    472
    Будет ли эта матрица обратимой и, если да, то найдите обратную к ней для небольших n.
    Ответ. Например, при помощи следующего рекуррентноого определения.
    Здесь мы явно окаймляем матрицу порядка n
    2.
    spiral[1]=
    {{1}}; spiral[2]={{1,2},{4,3}};
    spiral[n ]:=Join[
    {Range[n]},
    Transpose[Join[
    {Reverse[Range[3n-1,4n-4]]},
    Transpose[spiral[n-2]+4*n-4],
    {Range[n+1,2*n-2]}]],
    {Reverse[Range[2*n-1,3*n-2]]}]
    Если Вы правильнов ввели этот код, то теперь вычисление spiral[10] //
    TableForm должно дать
    1 2
    3 4
    5 6
    7 8
    9 10 36 37 38 39 40 41 42 43 44 11 35 64 65 66 67 68 69 70 45 12 34 63 84 85 86 87 88 71 46 13 33 62 83 96 97 98 89 72 47 14 32 61 82 95 100 99 90 73 48 15 31 60 81 94 93 92 91 74 49 16 30 59 80 79 78 77 76 75 50 17 29 58 57 56 55 54 53 52 51 18 28 27 26 25 24 23 22 21 20 19
    Можно, конечно, было бы окаймлять матрицу порядка n
    1, но тогда эти матрицы должны попеременно начинаться в левом верхнем и правом ниж- нем углу, соответственно, as follows.
    4.3. Задайте квадратную матрицу порядка n, в которой натуральные числа от 1 до n
    2
    расположены по спирали в направлении по часовой стрелке,
    начинающейся в правом нижнем углу. Вот примеры таких матриц для
    n = 2, 3, 4, 5:
    3 4
    2 1
    5 6
    7 4
    9 8
    3 2
    1 7
    8 9
    10 6
    15 16 11 5
    14 13 12 4
    3 2
    1 9
    10 11 12 13 8
    21 22 23 14 7
    20 25 24 15 6
    19 18 17 16 5
    4 3
    2 1
    4.4. Задайте квадратную матрицу порядка n, в которой натуральные числа от 1 до n
    2
    расположены по спирали в направлении против часовой стрелки,
    начинающейся правом нижнем углу. Вот примеры таких матриц для n =
    3, 4, 5:
    3 2
    4 1
    5 4
    3 6
    9 2
    7 8
    1 7
    6 5
    4 8
    15 14 3
    9 16 13 2
    10 11 12 1
    9 8
    7 6
    5 10 21 20 19 4
    11 22 25 18 3
    12 23 24 17 2
    13 14 15 16 1

    473
    Будет ли эта матрица обратимой и, если да, то найдите обратную к ней для небольших n.
    4.5. Рассмотрите аналогичную задачу для пяти осташихся случаев:
    направление против часовой стрелки, начало в левом нижнем углу;
    направление по часовой стрелки, начало в правом верхнем углу;
    направление против часовой стрелки, начало в правом верхнем углу;
    направление по часовой стрелки, начало в левом нижнем углу;
    направление против часовой стрелки, начало в левом нижнем углу.
    5. Вычеркивание.
    5.1. Задайте матрицу, получающуюся из x вычеркиванием i-й строки и
    j-го столбца.
    Ответ. Ясно, что i-я строка вычеркивается при помощи Drop, а вычерки- вание j-го столбца осуществляется точно так же, как и вычеркивание j-й строки, в сочетании с двойным применением Transpose:
    coma[i ,j ][x ]:=Transpose[Drop[Transpose[Drop[x,
    {i}]],{j}]]
    6. Блочные матрицы.
    6.1. Напишите программу, которая по двум квадратным матрицам a, b

    M (n, K) строит матрицу
    
    e
    a
    −b 0
    
    размера 2n, где e
    ∈ M(n, K) — единичная матрица.
    6.2. Напишите программу, конвертирующую блочную матрицу в обычную матрицу.
    Решение. Аллан Хайес на форуме MathGroup предложил следующие два решения этой задачи:
    Apply[Join,Apply[Join,Transpose[mat,
    {1,3,2}]],1]
    Flatten[Map[Flatten,Transpose[mat,
    {1,3,2}],{2}],1]
    Обратите внимание, что оба эти решения используют одну и ту же пере- становку уровней.
    6.3. Задайте матрицу


















    a
    a
    a
    a
    a
    a
    a
    a
    a




    b
    b
    b
    b
    b
    b
    b
    b
    b




    c
    c
    c
    c
    c
    c
    c
    c
    c




    d
    d
    d
    d
    d
    d
    d
    d
    d




    e
    e
    e
    e
    e
    e
    e
    e
    e




    f
    f
    f
    f
    f
    f
    f
    f
    f




    g
    g
    g
    g
    g
    g
    g
    g
    g




    h
    h
    h
    h
    h
    h
    h
    h
    h




    i
    i
    i
    i
    i
    i
    i
    i
    i



















    474
    Решение. Нам кажется, что проще всего применить Table[#,
    {3},{3}] к элементам матрицы
    {{a,b,c},{d,e,f},{g,h,i}}:
    Map[Table[#,
    {3},{3}]&,
    Partition[ToExpression[CharacterRange["a", "i"]],3],
    {2}]
    6.4. А теперь без компьютера скажите, что получится при вычислении
    Map[Table[#,
    {3},{3}]&,
    Partition[ToExpression[CharacterRange["a","i"]],3]]

    1   ...   30   31   32   33   34   35   36   37   38


    написать администратору сайта