index

слово "алгебра" подразумевает, что умножение дистрибутивно относительно сложения


  • алгебры с делением
  • R-алгебры
  • коалгебры
  • биалгебры

  • кольцо, являющееся линейным пространством, при условии коммутативности умножения в кольце и умножения на скаляры в линейном пространстве, называется алгеброй

    заменяя поле ℝ скаляров полем ℂ или телом ℍ мы получим комплексное или кватернионное линейное пространство

    заменяя в определении линейного пространства поле скаляров алгеброй с делителями нуля, мы получим модуль. в модулях имеются особенные векторы, которые не равны 0, но их произведения на делитель нуля, могут быть равны 0

    ассоциативная алгебра называется простой, если она не содержит двусторонних идеалов. простыми ассоциативными алгебрами над полем являются алгебры M(n,ℝ), M(n,ℂ) и M(n,ℍ) вещественных, комплексных и кватернионных матриц n-го порядка. простыми алгебрами являются и сами алгебры ℝ, ℂ и ℍ

    алгебры с делением

    существуют только две конечномерные алгебры над полем действительных чисел, в которых умножение коммутативно, ассоциативно и нет делителей нуля, - это само поле действительных чисел и поле комплексных чисел


    листинг Окамл
    module Complex =
      struct
        open Printf ;;
          
        type complex = { r : float ; i : float }
    
        let plus x y  = { r = x.r +. y.r ; i = x.i +. y.i }
        let minu x y  = plus x { r = (-. y.r) ; i = (-. y.i) }
        let mult x y  = { r = x.r *. y.r -. x.i *. y.i ; i = x.r *. y.i +. x.i *. y.r }
    
        let quad x    = x.r *. x.r +. x.i *. x.i
        let conj x    = { r = x.r ; i = -. x.i } 
        let scale x c = { r = c *. x.r ; i = c *. x.i }
        let norm x    = scale x (1. /. (sqrt (quad x)))
    
        let divi x y  = scale (mult x (conj y)) (1. /. (quad y))
        let inv x     = scale (conj x) (1. /. quad x)
    
        let construct a b = { r = a ; i = b }
    
        let read_complex = function () ->
          let a = read_float ()
          and b = read_float ()
          in construct a b
    
        let print_complex x =
          printf "Re : %5.2f, Im : %5.2f\n" x.r x.i ;;
    
        let eps = 0.01 ;;
          
        let is_equal x y =
          if abs_float x.r -. abs_float y.r < eps && abs_float x.i -. abs_float y.i < eps
          then true
          else false
      end
    
    
     (*         test suit             *)
                                                                                      
    open Complex ;;
    
    module K = Complex ;;
      
    let q0 = K.construct 1. 0. ;;
    
        print_string "test for multiplication: " ;;    
    let q1 = K.construct 2. 0. ;;
    let q2 = K.construct 3. 0. ;;
    assert (K.is_equal (K.mult q1 q2) (K.construct 6. 0.)) ;;
        print_endline "OK" ;;
    
        print_string "test for subtruction: " ;;
    assert (K.is_equal (K.minu q1 q1)  q0) ;;
    assert (K.is_equal (K.minu q1 q2) (K.scale (K.minu q2 q1) (-1.))) ;;
        print_endline "OK" ;;
    
        print_string "test for summation: " ;;    
    let q1 = K.construct 2. 1. ;;
    let q2 = K.construct (-2.) (-1.) ;;
    assert (K.is_equal (K.plus q1 q2) (K.construct 0. 0.)) ;;
        print_endline "OK" ;;
    
       print_string "test for division: " ;;   
    assert (K.is_equal (K.divi q1 q1) (K.construct 1. 0.)) ;;
    assert (K.is_equal (K.divi q1 q2) (K.construct (-1.) (-0.8))) ;;
       print_endline "OK" ;;
    
    (* умножение на сопряженный равно чисто вещественному со значением суммы квадратов компонент: *)
          print_string "test for normalization: " ;;    
    let q1 = K.construct 4. 3. ;;
    let q2 = K.conj q1 ;;
    let q3 = K.scale q1 (-1.) ;;
    let q4 = K.conj q3 ;;
    assert ( K.is_equal (K.mult q1 q2) (K.construct 25. 0.)) ;;
    assert ( K.is_equal (K.mult q3 q4) (K.construct 25. 0.)) ;;
        print_endline "OK" ;;
          
        print_string "test for ivertability: " ;;  
    K.mult q1 (K.inv q1) |> fun x -> assert (K.is_equal x q0) ;;
    K.mult q2 (K.inv q2) |> fun x -> assert (K.is_equal x q0) ;;
        print_endline "OK" ;;
      

    конец листинга Окамл

    если отказаться от коммутативности, но все же предполагать умножение ассоциативным, то существует еще одна конечномерная алгебра над полем действительных чисел - это кватернионы

    отказ от ассоциативности дает еще одну конечномерную алгебру над полем действительных чисел - с восьмью единицами (одна действительная и семь мнимых). это - октанионы

    эти четыре числовые системы - "алгебры с делением" - деление всегда возможно и не выводит за рамки той же самой системы. числа этих систем - единственные имеющие "норму"

    из-за существования нормы и возможности деления, эти числовые системы известны как "нормированные алгебры с делением"

    группа кватернионов замечательна тем, что хотя и не является абелевой, но все ее подгруппы - нормальны. знаки в таблице Кэли расставляются в соответствии с диаграммой:


    listing Haskell
    module Quaternion where
    
    data Quat = Q 
      { s :: Double -- scalar part
      , i :: Double -- v1
      , j :: Double -- v2
      , k :: Double -- v3
      } deriving (Read, Show) 
    
    quad :: Quat → Double
    quad = \ q → s q * s q  +  i q * i q  +  j q * j q  +  k q * k q
    
    inv :: Quat → Quat
    inv = \ q ->
      if (0.001 > quad q) 
      then q 
      else let p = conj q in scale (recip $ quad p) p
    
    -- summation of (s1, v1) and (s2, v2) = (s1 + s2, v1 ⊕ v2)
    plus :: Quat → Quat → Quat
    plus  = \ q p → Q 
      { s = s q + s p 
      , i = i q + i p 
      , j = j q + j p 
      , k = k q + k p 
      } 
    
    {- multplication of (s1, v1) and (s2, v2) = (s3, v3) where
          s3 = (s1 * s2) - (v1 ⊙ v2)
          v3 = (s1 * v2) ⊕ (s2 * v1) ⊕ (v1 ⊗ v2)
          
           s3 = s1 * s2           -  i1 * i2  -  j1 * j2  -  k1 * k2
    
           v3 = s1 * i2     +    s2 * i1      +       j1 * k2  -  k1 * j2
              + s1 * j2     +    s2 * j1      +       k1 * i2  -  i1 * k2
              + s1 * k2     +    s2 * k1      +       i1 * j2  -  j1 * i2
    -}
    mult :: Quat → Quat → Quat
    mult = \ q p → Q 
      { s =  s q * s p  -  i q * i p  -  j q * j p  -  k q * k p
      , i =  s q * i p  +  s p * i q  +  j q * k p  -  k q * j p
      , j =  s q * j p  +  s p * j q  +  k q * i p  -  i q * k p
      , k =  s q * k p  +  s p * k q  +  i q * j p  -  j q * i p 
      } 
    
    scale :: Double → Quat → Quat
    scale = \ c q → Q 
      { s = c * s q  
      , i = c * i q  
      , j = c * j q  
      , k = c * k q  
      } 
    
    conj :: Quat → Quat 
    conj = \ q → Q {s = s q, i = - i q, j = - j q, k = - k q}
    
    norm :: Quat → Quat
    norm v = scale (recip $ sqrt $ quad v) v
    
    ------------------------ test file ----------------------------------- 
    
    import Quaternion
    
    import Test.QuickCheck
    import Control.Monad
    
    main = t1 >> t3 >> t2 
    
    eps = 0.01
    
    instance Arbitrary Quat where
      arbitrary = vector 4 >>= \[a, b, c, d] ->
             if abs a < eps && abs b < eps && abs c < eps && abs d < eps
             then return $ Q { s = 0.5, i = 0.5, j = 0.5, k = 0.5 }
             else return $ norm $ Q { s = a, i = b, j = c, k = d }
    
    -- unit result of (mult v v⁻)
    t1 :: IO ()
    t1 = quickCheckWith (stdArgs { maxSuccess = 3000 })
      (\w → let n = mult w (inv w)
            in (abs (s n) - 1) < eps &&
               (abs (i n) - 0) < eps &&
               (abs (j n) - 0) < eps &&
               (abs (k n) - 0) < eps &&
               (abs (quad n) - 1) < eps  )
    
    -- assoc of mult
    t3 :: IO ()
    t3 = quickCheckWith (stdArgs { maxSuccess = 3000 }) (\u v w ->
      let a = mult u (mult v w)
          b = mult (mult u v) w
      in  abs (s a - s b) < eps &&
          abs (i a - i b) < eps &&
          abs (j a - j b) < eps &&
          abs (k a - k b) < eps    )
    
    t2 =
       let
           x = Q { s = 0, i = 1, j = 0, k = 0 }
           y = Q { s = 0, i = 0, j = 1, k = 0 }
           z = Q { s = 0, i = 0, j = 0, k = 1 }
           t1 = mult x y
           t2 = mult y z
           t3 = mult z x
           t4 = mult x x
           t5 = mult y y
           t6 = mult z z
       in  mapM_ (putStr . show)
                    [ s t1,     i t1,     j t1,     1 - k t1
                    , s t2,     1 - i t2, j t2,     k t2
                    , s t3,     i t3,     1 - j t3, k t3
                    , 1 + s t4, i t4,     j t4,     k t4
                    , 1 + s t5, i t5,     j t5,     k t5
                    , 1 + s t6, i t6,     j t6,     k t6
                    ] >> putStrLn "    all zeros - ok"
    

    end of listing

    октанионы имеют восемь единичных элементов: обычную действительную единицу и семь других, которые называются e₁, e₂ и так далее до e₇. квадрат каждого из них есть -1. таблица умножения октанионных единиц задается с помощью "плоскости Фано"

    предположим вам надо перемножить е₃ и e₇. найдите на диаграмме соответствующие точки, найдите линию, которая соединяет их, и увидите что на этой линии есть и третья точка, e₁. по стрелкам, вы переходите от е₃ к e₇ и потом к e₁. e₃*e₇=e₁. если порядок следования противоположный, добавте минус: e₇*e₃=-e₁. еще одна вещь: считается что концы всех линий склеены со своими началами, так что e₁*e₃=e₇ и e₃*e₁=-e₇

    плоскость Фано - это проективная плоскость для двухэлементного поля 2ℤ. она состоит из прямых проходящих через начало координат в векторном пространстве 2ℤ³. поскольку каждая такая прямая содержит ненулевой элемент можно также полагать плоскость Фано как состоящую из семи ненулевых элементов пространства 2ℤ³. и если полагать начало координат такого пространства 2ℤ³ соответствует нейтрали 1 ∈ O, мы получим следующую картину:

    замечательно, что плоскости проходящие через начало координат в этом векторном пространтсве размерности 3 дают подалгебры изоморфные кватернионам, а линии через начало координат изоморфны алгебрам комплексных чисел, и начало координат само по себе изоморфно алгебре вещественных чисел

    В 1914 Elie Cartan заметил, что наименьшая исключительная группа Ли есть автоморфизм группы октанионов

    в свое время В.И.Арнольд разделил всю математику на три части («небесную механику, гидродинамику и теорию кодирования»), вещественную (=ортогональная группа), комплексную (=унитарная группа) и кватернионную (=симплектическая группа). однако, в действительности в этой классификации пропущена четвертая часть математики, по крайней мере столь же важная и более интересная, а именно, октонионная математика. известно, что все исключительные объекты в математике возникают по одной и той же причине, и тем или иным способом связаны с алгебрами октонионов - исключительными в том смысле, что они являются единственными конечномерными простыми альтернативными (но не ассоциативными) алгебрами

    омега и кватернионы

    ω³ = 1, ω ≠ 1

    ω² = ω*

    ω = (-1 + i + j + k) / 2

    ω = (-1 ± i ∙ √3) / 2

    ω₁² + ω₂² + 1 = 0

    в кольце Эйзенштейна циклическая группа единиц имеет следующие образующие: { ±1 , ±ω , ±ω² }

    целые кватернионы Гурвитца

    (Hurwitz integer) - это кватернион, компоненты которого либо все целые либо все полуцелые:

    H = { a + b ∙ i + c ∙ j + d ∙ k ∈ H | a,b,c,d ∈ ℤ or a,b,c,d ∈ ℤ + 1/2 }

    унитарные кватернионы

    кватернион z называется унитарным если |z|² = 1. группа унитарных кватернионов обозначается U(1,H). элементы группы удовлетворяют условию z⁻ = z*

    расщепленные кватернионы

    пусть G = {±1, ±r, ±t, ±s | r² = t² = 1, s² = −1, rt = −tr = s }

    тогда HG называется алгеброй расщепленных кватернионов

    HG ≅ M(2,R)
    Proof: пусть

            r = ( 1  0
                  0 −1 )
            t = ( 0  1
                  1  0 )
            s = ( 0  1
                 −1  0 )
    
    тогда <±1, ±r, ±t, ±s> является базисом в M(2,R) с условиями r² = t² = 1, s² = −1, rt = −tr = s
    QED


    R-алгебры

    пусть А есть R-модуль. тогда билинейное отображение A × A → A задает R-алгебру

    тогда

    
               m : A × A           ~~~>       μ : A ⊗ A → A
               билинейное отображение         линейное отображение
               (x , y) → x ∙ y                μ (x ⊗ y) = x ∙ y
    
    
               τ : A ⊗ B → B ⊗ A          -- "twist"
               x ⊗ y → y ⊗ x
    
    
               μ = μ ∘ τ
    
    
               η : R → A 
                    
               1A = η (1R)
             
    
               μ ∘ (1 ⊗ η) = μ ∘ (η ⊗ 1) = 1
    
    

    гомоморфизм

    пусть А и В - две R-алгебры. пусть φ : A → B

           φ ∘ μA = μB ∘ (φ ⊗ φ)
    

    коалгебры

    C называется коалгеброй над R если задано линейное отображение Δ : C → C ⊗ C

           (1 ⊗ Δ) ∘ Δ = (Δ ⊗ 1) ∘ Δ
    
           τ ∘ Δ = Δ
    
    
           ε : C → R      -- augmentation
    
           C ⊗ R = (1C ⊗ ε)  ∘  Δ  (C)
           R ⊗ C = (ε ⊗ 1C)  ∘  Δ  (C)
    

    гомоморфизм

    пусть есть две коалгебры     ΔC : C → C ⊗ C     и     ΔD : D → D ⊗ D

    пусть φ : C → D

              ΔD ∘ φ = (φ ⊗ φ) ∘ ΔC
    

    биалгебры

    билинейное отображение - это дистрибутивность умножения относительно сложения

    пусть B - это R-модуль

    (B, μ, η) - ассоциативная алгебра с единицей

    (B, Δ, ε) - коассоциативная коалгебра с коединицей

    Δ : B → B ⊗ B       ε : B → R

    μ : B ⊗ B → B       η : R → B

    следующие два утверждения эквиваленты последующим четырем условиям:

    тогда (B, μ, η, Δ, ε) - биалгебра над R

    биалгебра является обобщением моноидов

    пример

    пусть модуль биалегбры есть моноид с операцией "∙" и нейтралным элементом e. тогда

       (Δ ∘ μ) (x ⊗ y) = (x ∙ y) ⊗ (x ∙ y) 
    
       (μ ⊗ μ) ∘ (1 ⊗ τ ⊗ 1) ∘ (Δ ⊗ Δ) (x ⊗ y) =  
       (μ ⊗ μ) ∘ (1 ⊗ τ ⊗ 1) ∘ (x ⊗ x ⊗ y ⊗ y) = 
       (μ ⊗ μ)(x ⊗ y ⊗ x ⊗ y) = 
       (x ∙ y) ⊗ (x ∙ y) 
    

    если |X| < ∞, то R[X]* = RX   - биалгебра функций на X

           f : X → R
           μ* : A* → (A ⊗ A)* = A* ⊗ A* 
           Δ* : (C ⊗ C)* → C
    
           f,g ∈ RX,    (f g) (x) = f(x) g(x) 
    
           Δ f (x , y) = f (x ∙ y) 
    

    свертка

          f,g ∈ Q = HomR-mod(C , A)
    
                              ε   η
          1Q = ηA ∘ εC   :   C → R → A
    
    
          f : x → f (x)
          g : y → g (y)
    
          f ⊙ g = μA ∘ (f ⊗ g) ∘ ΔC
    
    
    


    мультипликативным базисом конечномерной алгебры называется такой ее базис B, что множество B ∪ {0} замкнуто относительно умножения

     


    index