<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Блогът на Дойчин Денчев</title>
        <link>https://doich.in/bg</link>
        <description>Лични размисли по разнообразни теми.</description>
        <lastBuildDate>Sat, 14 Sep 2024 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Feed for Node.js</generator>
        <language>bg</language>
        <image>
            <title>Блогът на Дойчин Денчев</title>
            <url>https://doich.in/bg/_next/image?url=%2Fimages%2Fabout_pic.jpg&amp;w=384&amp;q=75</url>
            <link>https://doich.in/bg</link>
        </image>
        <copyright>All rights reserved 2026, Doichin Denchev</copyright>
        <item>
            <title><![CDATA[Глава 4 - Полиноми]]></title>
            <link>https://doich.in/bg/posts/2024-09-14_linear_algebra_done_right_chapter_4</link>
            <guid isPermaLink="false">2024-09-14_linear_algebra_done_right_chapter_4</guid>
            <pubDate>Sat, 14 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Кратка глава, разглеждаща полиномите. Подходът е интересен, тъй като разглежда доказателствата по малко по-различен начин, отколкото съм виждал досега.]]></description>
            <content:encoded><![CDATA[<a href="#undefined"><a class="toc-anchor" id="степен"></a></a>
<h3>Степен<a href="#степен" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>полином</strong></p>
    <ul>
      <li>Функция от вида <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>a</mi>
                  <mn>0</mn>
                </msub>
                <mo>+</mo>
                <msub>
                  <mi>a</mi>
                  <mn>1</mn>
                </msub>
                <mi>z</mi>
                <mo>+</mo>
                <msub>
                  <mi>a</mi>
                  <mn>2</mn>
                </msub>
                <msup>
                  <mi>z</mi>
                  <mn>2</mn>
                </msup>
                <mo>+</mo>
                <mo>⋯</mo>
                <mo>+</mo>
                <msub>
                  <mi>a</mi>
                  <mi>m</mi>
                </msub>
                <msup>
                  <mi>z</mi>
                  <mi>m</mi>
                </msup>
              </mrow>
              <annotation encoding="application/x-tex">a_{0} + a_{1}z + a_{2}z^2 + \dots + a_{m}z^m</annotation>
            </semantics>
          </math></span></li>
      <li>Най-високият коефициент <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>m</mi>
              </mrow>
              <annotation encoding="application/x-tex">m</annotation>
            </semantics>
          </math></span>, при който <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>a</mi>
                  <mi>m</mi>
                </msub>
                <mo mathvariant="normal">≠</mo>
                <mn>0</mn>
              </mrow>
              <annotation encoding="application/x-tex">a_{m} \neq 0</annotation>
            </semantics>
          </math></span>, се нарича <strong>степен</strong> на полинома</li>
      <li>Полином с <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>a</mi>
                  <mn>0</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <msub>
                  <mi>a</mi>
                  <mi>m</mi>
                </msub>
                <mo>=</mo>
                <mn>0</mn>
              </mrow>
              <annotation encoding="application/x-tex">a_{0},\dots a_{m}=0</annotation>
            </semantics>
          </math></span> се казва, че има степен <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo>−</mo>
                <mi mathvariant="normal">∞</mi>
              </mrow>
              <annotation encoding="application/x-tex">-\infty</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p><strong>корен</strong></p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>λ</mi>
                <mo>∈</mo>
                <mi>F</mi>
              </mrow>
              <annotation encoding="application/x-tex">\lambda \in F</annotation>
            </semantics>
          </math></span> се нарича корен на полинома <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>p</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi>F</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">p \in P(F)</annotation>
            </semantics>
          </math></span>, ако
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>p</mi>
                    <mo stretchy="false">(</mo>
                    <mi>λ</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mn>0</mn>
                  </mrow>
                  <annotation encoding="application/x-tex">p(\lambda) = 0</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 4.1</strong></p>
    <ul>
      <li>Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>p</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi>F</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">p \in P(F)</annotation>
            </semantics>
          </math></span> е полином със степен <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>m</mi>
                <mo>≥</mo>
                <mn>1</mn>
              </mrow>
              <annotation encoding="application/x-tex">m \geq 1</annotation>
            </semantics>
          </math></span>. Нека <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>λ</mi>
                <mo>∈</mo>
                <mi>F</mi>
              </mrow>
              <annotation encoding="application/x-tex">\lambda \in F</annotation>
            </semantics>
          </math></span>. Тогава <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>λ</mi>
              </mrow>
              <annotation encoding="application/x-tex">\lambda</annotation>
            </semantics>
          </math></span> е корен на p, ако и само ако съществува полином <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>q</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi>F</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">q \in P(F)</annotation>
            </semantics>
          </math></span> със степен m - 1, такъв че
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>p</mi>
                    <mo stretchy="false">(</mo>
                    <mi>z</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mo stretchy="false">(</mo>
                    <mi>z</mi>
                    <mo>−</mo>
                    <mi>λ</mi>
                    <mo stretchy="false">)</mo>
                    <mi>q</mi>
                    <mo stretchy="false">(</mo>
                    <mi>λ</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mn>0</mn>
                  </mrow>
                  <annotation encoding="application/x-tex">p(z) = (z - \lambda)q(\lambda) = 0</annotation>
                </semantics>
              </math></span> за всички z \in F</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Това твърдение интуитивно има смисъл. За да бъде <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>λ</mi>
            </mrow>
            <annotation encoding="application/x-tex">\lambda</annotation>
          </semantics>
        </math></span> корен, трябва да може да се изнесе <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>z</mi>
              <mo>−</mo>
              <mi>λ</mi>
            </mrow>
            <annotation encoding="application/x-tex">z - \lambda</annotation>
          </semantics>
        </math></span> като фактор. Степента на оставащия полином ще бъде с единица по-малка от тази на p.</p>
  </li>
  <li>
    <p><strong>Следствие 4.3</strong></p>
    <ul>
      <li>Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>p</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi>F</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">p \in P(F)</annotation>
            </semantics>
          </math></span> е полином със степен <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>m</mi>
                <mo>≥</mo>
                <mn>0</mn>
              </mrow>
              <annotation encoding="application/x-tex">m \geq 0</annotation>
            </semantics>
          </math></span>. Тогава p има най-много m различни корена във F.</li>
    </ul>
  </li>
  <li>
    <p><strong>Следствие 4.4</strong></p>
    <ul>
      <li>Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>a</mi>
                  <mn>0</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>a</mi>
                  <mi>m</mi>
                </msub>
                <mo>∈</mo>
                <mi>F</mi>
              </mrow>
              <annotation encoding="application/x-tex">a_{0}, \dots, a_{m} \in F</annotation>
            </semantics>
          </math></span>. Ако
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msub>
                      <mi>a</mi>
                      <mn>0</mn>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mn>1</mn>
                    </msub>
                    <mi>z</mi>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mn>2</mn>
                    </msub>
                    <msup>
                      <mi>z</mi>
                      <mn>2</mn>
                    </msup>
                    <mo>+</mo>
                    <mo>⋯</mo>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mi>m</mi>
                    </msub>
                    <msup>
                      <mi>z</mi>
                      <mi>m</mi>
                    </msup>
                    <mo>=</mo>
                    <mn>0</mn>
                  </mrow>
                  <annotation encoding="application/x-tex">a_{0} + a_{1}z + a_{2}z^2 + \dots + a_{m}z^m = 0</annotation>
                </semantics>
              </math></span>
            <ul>
              <li>за всички <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <mi>z</mi>
                        <mo>∈</mo>
                        <mi>F</mi>
                      </mrow>
                      <annotation encoding="application/x-tex">z \in F</annotation>
                    </semantics>
                  </math></span>, тогава <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <msub>
                          <mi>a</mi>
                          <mn>0</mn>
                        </msub>
                        <mo>=</mo>
                        <mo>⋯</mo>
                        <mo>−</mo>
                        <msub>
                          <mi>a</mi>
                          <mi>m</mi>
                        </msub>
                        <mo>=</mo>
                        <mn>0</mn>
                      </mrow>
                      <annotation encoding="application/x-tex">a_{0} = \dots - a_{m} = 0</annotation>
                    </semantics>
                  </math></span></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="комплексни-коефициенти"></a></a>
<h3>Комплексни коефициенти<a href="#комплексни-коефициенти" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>Основна теорема на алгебрата</strong></p>
    <ul>
      <li>Всеки неконстантен полином с комплексни коефициенти има корен.</li>
    </ul>
  </li>
  <li>
    <p>Забележка: Константен полином е полином със степен 0: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>f</mi>
              <mo stretchy="false">(</mo>
              <mi>x</mi>
              <mo stretchy="false">)</mo>
              <mo>=</mo>
              <mi>C</mi>
            </mrow>
            <annotation encoding="application/x-tex">f(x) = C</annotation>
          </semantics>
        </math></span></p>
  </li>
  <li>
    <p><strong>Следствие 4.8</strong></p>
    <ul>
      <li>Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>p</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi>C</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">p \in P(C)</annotation>
            </semantics>
          </math></span> е неконстантен полином, тогава p има уникална факторизация (с изключение на реда на факторите) от вида
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>p</mi>
                    <mo stretchy="false">(</mo>
                    <mi>z</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>c</mi>
                    <mo stretchy="false">(</mo>
                    <mi>z</mi>
                    <mo>−</mo>
                    <mi>λ</mi>
                    <mo stretchy="false">)</mo>
                    <mo>…</mo>
                    <mo stretchy="false">(</mo>
                    <mi>z</mi>
                    <mo>−</mo>
                    <msub>
                      <mi>λ</mi>
                      <mi>m</mi>
                    </msub>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">p(z) = c(z - \lambda)\dots(z-\lambda_{m})</annotation>
                </semantics>
              </math></span>
            <ul>
              <li>където <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <mi>c</mi>
                        <mo separator="true">,</mo>
                        <msub>
                          <mi>λ</mi>
                          <mn>1</mn>
                        </msub>
                        <mo separator="true">,</mo>
                        <mo>…</mo>
                        <mo separator="true">,</mo>
                        <msub>
                          <mi>λ</mi>
                          <mi>m</mi>
                        </msub>
                        <mo>∈</mo>
                        <mi>C</mi>
                      </mrow>
                      <annotation encoding="application/x-tex">c, \lambda_{1},\dots,\lambda_{m}\in C</annotation>
                    </semantics>
                  </math></span></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="реални-коефициенти"></a></a>
<h3>Реални коефициенти<a href="#реални-коефициенти" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>комплексно спрегнато число</strong></p>
    <ul>
      <li>за комплексно число <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>z</mi>
                <mo>=</mo>
                <mi>R</mi>
                <mi>e</mi>
                <mo stretchy="false">(</mo>
                <mi>z</mi>
                <mo stretchy="false">)</mo>
                <mo>+</mo>
                <mi>I</mi>
                <mi>m</mi>
                <mo stretchy="false">(</mo>
                <mi>z</mi>
                <mo stretchy="false">)</mo>
                <mi>i</mi>
              </mrow>
              <annotation encoding="application/x-tex">z = Re(z) + Im(z)i</annotation>
            </semantics>
          </math></span></li>
      <li>комплексно спрегнатото число е <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mover accent="true">
                  <mi>z</mi>
                  <mo stretchy="true">‾</mo>
                </mover>
                <mo>=</mo>
                <mi>R</mi>
                <mi>e</mi>
                <mo stretchy="false">(</mo>
                <mi>z</mi>
                <mo stretchy="false">)</mo>
                <mo>−</mo>
                <mi>I</mi>
                <mi>m</mi>
                <mo stretchy="false">(</mo>
                <mi>z</mi>
                <mo stretchy="false">)</mo>
                <mi>i</mi>
              </mrow>
              <annotation encoding="application/x-tex">\overline{z} = Re(z) - Im(z)i</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 4.10</strong></p>
    <ul>
      <li>Да предположим, че p е полином с реални коефициенти. Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>λ</mi>
                <mo>∈</mo>
                <mi mathvariant="double-struck">C</mi>
              </mrow>
              <annotation encoding="application/x-tex">\lambda \in \mathbb{C}</annotation>
            </semantics>
          </math></span> е корен на p, тогава и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mover accent="true">
                  <mi>λ</mi>
                  <mo stretchy="true">‾</mo>
                </mover>
              </mrow>
              <annotation encoding="application/x-tex">\overline{\lambda}</annotation>
            </semantics>
          </math></span> е корен.</li>
    </ul>
  </li>
  <li>
    <p>Това изглежда показва, че ако степента е нечетна, ще има поне един реален корен.</p>
  </li>
  <li>
    <p><strong>Теорема 4.14</strong></p>
    <ul>
      <li>Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>p</mi>
                <mo>∈</mo>
                <mi>P</mi>
                <mo stretchy="false">(</mo>
                <mi mathvariant="double-struck">R</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">p \in P(\mathbb{R})</annotation>
            </semantics>
          </math></span> е неконстантен полином, тогава p има уникална факторизация (с изключение на реда на факторите) от вида
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>p</mi>
                    <mo stretchy="false">(</mo>
                    <mi>x</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>c</mi>
                    <mo stretchy="false">(</mo>
                    <mi>x</mi>
                    <mo>−</mo>
                    <msub>
                      <mi>λ</mi>
                      <mn>1</mn>
                    </msub>
                    <mo stretchy="false">)</mo>
                    <mo>…</mo>
                    <mo stretchy="false">(</mo>
                    <mi>x</mi>
                    <mo>−</mo>
                    <msub>
                      <mi>λ</mi>
                      <mi>m</mi>
                    </msub>
                    <mo stretchy="false">)</mo>
                    <mo stretchy="false">(</mo>
                    <msup>
                      <mi>x</mi>
                      <mn>2</mn>
                    </msup>
                    <mo>+</mo>
                    <msub>
                      <mi>α</mi>
                      <mn>1</mn>
                    </msub>
                    <mi>x</mi>
                    <mo>+</mo>
                    <msub>
                      <mi>β</mi>
                      <mn>1</mn>
                    </msub>
                    <mo stretchy="false">)</mo>
                    <mo>…</mo>
                    <mo stretchy="false">(</mo>
                    <msup>
                      <mi>x</mi>
                      <mn>2</mn>
                    </msup>
                    <mo>+</mo>
                    <msub>
                      <mi>α</mi>
                      <mi>M</mi>
                    </msub>
                    <mi>x</mi>
                    <mo>+</mo>
                    <msub>
                      <mi>β</mi>
                      <mi>M</mi>
                    </msub>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">p(x) = c(x - \lambda_{1})\dots(x -\lambda_{m})(x^2+\alpha_{1}x+\beta_{1})\dots(x^2 + \alpha_{M}x + \beta_{M})</annotation>
                </semantics>
              </math></span>
            <ul>
              <li>като или m, или M може да е равно на 0</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
]]></content:encoded>
            <author>Дойчин Денчев</author>
            <category>notes</category>
            <category>math</category>
            <category>ladr</category>
            <enclosure url="https://doich.in/bg//images/2024-09-14_linear_algebra_done_right_chapter_4/ladr_chapter_4_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[RFC9519 - JSON Web Token (JWT)]]></title>
            <link>https://doich.in/bg/posts/2024-09-21-rfc7519_json_web_token</link>
            <guid isPermaLink="false">2024-09-21-rfc7519_json_web_token</guid>
            <pubDate>Sat, 14 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Бележки от официалната спецификация на JWT.]]></description>
            <content:encoded><![CDATA[<a href="#undefined"><a class="toc-anchor" id="терминология"></a></a>
<h3>Терминология<a href="#терминология" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>JSON Web Token (JWT)</strong></p>
    <ul>
      <li>Стринг, който представлява набор от твърдения като JSON обект, кодиран в JWS или JWE, което позволява твърденията да бъдат дигитално подписани или MAC-нати и/или криптирани.</li>
    </ul>
  </li>
  <li>
    <p><strong>JWT Claims Set</strong></p>
    <ul>
      <li>JSON обект, който съдържа твърденията, предадени чрез JWT.</li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение (Claim)</strong></p>
    <ul>
      <li>Информация, която се твърди за даден субект. Твърдението се представя като двойка име/стойност, състояща се от Име на твърдение и Стойност на твърдение.</li>
    </ul>
  </li>
  <li>
    <p><strong>Име на твърдение (Claim Name)</strong></p>
    <ul>
      <li>Именната част на представянето на твърдение. Името на твърдение винаги е стринг.</li>
    </ul>
  </li>
  <li>
    <p><strong>Стойност на твърдение (Claim Value)</strong></p>
    <ul>
      <li>Стойностната част на представянето на твърдение. Стойността на твърдение може да бъде всяка JSON стойност.</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="обща-информация-за-jwt"></a></a>
<h3>Обща информация за JWT<a href="#обща-информация-за-jwt" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>JWT се състои от три части — заглавие (JOSE Header), полезен товар (payload) и подпис. Заглавието често се нарича "JOSE заглавие", защото следва стандарта JOSE.</p>
  </li>
  <li>
    <p>Пример за JOSE Header:</p>
  </li>
</ul>
<figure data-rehype-pretty-code-figure="">
  <pre style="background-color:#1a1b26;color:#a9b1d6" tabindex="0" data-language="json" data-theme="tokyo-night"><code data-language="json" data-theme="tokyo-night" style="display: grid;"><span data-line=""><span style="color:#9ABDF5">{</span></span>
<span data-line=""><span style="color:#89DDFF">	"</span><span style="color:#7AA2F7">typ</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">:</span><span style="color:#89DDFF">"</span><span style="color:#9ECE6A">JWT</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">,</span><span style="color:#A9B1D6"> </span></span>
<span data-line=""><span style="color:#89DDFF">	"</span><span style="color:#7AA2F7">alg</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">:</span><span style="color:#89DDFF">"</span><span style="color:#9ECE6A">HS256</span><span style="color:#89DDFF">"</span></span>
<span data-line=""><span style="color:#9ABDF5">}</span></span></code></pre>
</figure>
<ul>
  <li>Пример за JWT набор от твърдения:</li>
</ul>
<figure data-rehype-pretty-code-figure="">
  <pre style="background-color:#1a1b26;color:#a9b1d6" tabindex="0" data-language="json" data-theme="tokyo-night"><code data-language="json" data-theme="tokyo-night" style="display: grid;"><span data-line=""><span style="color:#9ABDF5">{</span></span>
<span data-line=""><span style="color:#89DDFF">	"</span><span style="color:#7AA2F7">iss</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">:</span><span style="color:#89DDFF">"</span><span style="color:#9ECE6A">joe</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">,</span></span>
<span data-line=""><span style="color:#89DDFF">	"</span><span style="color:#7AA2F7">exp</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">:</span><span style="color:#FF9E64">1300819380</span><span style="color:#89DDFF">,</span></span>
<span data-line=""><span style="color:#89DDFF">	"</span><span style="color:#7AA2F7">http://example.com/is_root</span><span style="color:#89DDFF">"</span><span style="color:#89DDFF">:</span><span style="color:#FF9E64">true</span></span>
<span data-line=""><span style="color:#9ABDF5">}</span></span></code></pre>
</figure><a href="#undefined"><a class="toc-anchor" id="твърдение-в-jwt"></a></a>
<h3>Твърдение в JWT<a href="#твърдение-в-jwt" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Наборът от твърдения, които JWT трябва да съдържа, за да се счита за валиден, зависи от контекста и е извън обхвата на тази спецификация.</p>
  </li>
  <li>
    <p>Има три класа имена на твърдения в JWT:</p>
    <ul>
      <li>Регистрирани имена на твърдения</li>
      <li>Публични имена на твърдения</li>
      <li>Частни имена на твърдения</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="регистрирани-имена-на-твърдения"></a></a>
<h4>Регистрирани имена на твърдения<a href="#регистрирани-имена-на-твърдения" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h4>
<ul>
  <li><strong>"iss" (Твърдение за Издател)</strong>
    <ul>
      <li>Твърдението "iss" идентифицира основния субект, който е издал JWT.</li>
      <li>Стойността на "iss" е чувствителен към регистъра стринг, съдържащ StringOrURI стойност.</li>
    </ul>
  </li>
  <li><strong>"sub" (Твърдение за Субект)</strong>
    <ul>
      <li>Твърдението "sub" идентифицира основния субект, който е предмет на JWT.</li>
      <li>Твърденията в JWT обикновено са изказвания за субекта.</li>
    </ul>
  </li>
  <li><strong>"aud" (Твърдение за Аудитория)</strong>
    <ul>
      <li>Твърдението "aud" идентифицира получателите, за които е предназначен JWT.</li>
      <li>Всеки субект, който обработва JWT, ТРЯБВА да се идентифицира със стойност в твърдението за аудитория.</li>
    </ul>
  </li>
  <li><strong>"exp" (Твърдение за Време на Изтичане)</strong>
    <ul>
      <li>Твърдението "exp" идентифицира времето, след което JWT НЕ ТРЯБВА да бъде прието за обработка.</li>
    </ul>
  </li>
  <li><strong>"nbf" (Твърдение за Не По-рано От)</strong>
    <ul>
      <li>Твърдението "nbf" идентифицира времето, преди което JWT НЕ ТРЯБВА да бъде прието за обработка.</li>
    </ul>
  </li>
  <li><strong>"iat" (Твърдение за Издадено В)</strong>
    <ul>
      <li>Твърдението "iat" идентифицира времето, в което е издаден JWT.</li>
    </ul>
  </li>
  <li><strong>"jti" (Твърдение за ИД на JWT)</strong>
    <ul>
      <li>Твърдението "jti" предоставя уникален идентификатор за JWT.</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="jose-заглавие"></a></a>
<h3>JOSE Заглавие<a href="#jose-заглавие" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Описва криптографските операции, приложени към JWT и, по желание, допълнителни свойства на JWT.</p>
  </li>
  <li>
    <p><strong>"typ" (Параметър на Заглавието за Тип)</strong></p>
    <ul>
      <li>Параметърът на заглавието "typ" се използва от JWT приложенията за деклариране на медийния тип на този JWT.</li>
      <li>Обикновено не се използва, когато обектът вече е известен като JWT.</li>
      <li>Ако е наличен, се ПРЕПОРЪЧВА стойността му да бъде "JWT", за да се укаже, че обектът е JWT.</li>
    </ul>
  </li>
  <li>
    <p><strong>"cty" (Параметър на Заглавието за Съдържание)</strong></p>
    <ul>
      <li>Параметърът "cty" се използва за предаване на структурна информация относно JWT.</li>
      <li>В нормалния случай, когато не се използват вложени операции за подписване или криптиране, не се ПРЕПОРЪЧВА използването на този параметър.</li>
    </ul>
  </li>
  <li>
    <p>Ако се използва JWE, е позволено да се дублират някои твърдения в некриптиран формат, когато е необходимо предварителна обработка.</p>
    <ul>
      <li>Отговорност на приложението е да гарантира, че само твърдения, безопасни за предаване по некриптиран начин, се дублират като стойности на параметрите на заглавието в JWT.</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="създаване-и-валидиране-на-jwt"></a></a>
<h3>Създаване и Валидиране на JWT<a href="#създаване-и-валидиране-на-jwt" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3><a href="#undefined"><a class="toc-anchor" id="създаване-на-jwt"></a></a>
<h4>Създаване на JWT<a href="#създаване-на-jwt" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h4>
<ol>
  <li>Създайте JWT набор от твърдения, съдържащ желаните твърдения.</li>
  <li>Нека съобщението бъде октетите на UTF-8 представянето на набора от твърдения.</li>
  <li>Създайте JOSE заглавие, съдържащо желаните параметри на заглавието.
    <ol>
      <li>JWT ТРЯБВА да отговаря на спецификацията на [JWS] или [JWE].</li>
    </ol>
  </li>
  <li>В зависимост от това дали JWT е JWS или JWE, има два случая:
    <ol>
      <li>Ако JWT е JWS, създайте JWS, като използвате съобщението като полезен товар; всички стъпки, посочени в [JWS] за създаване на JWS, ТРЯБВА да бъдат следвани.</li>
      <li>В противен случай, ако JWT е JWE, създайте JWE, като използвате съобщението като обикновен текст за JWE; всички стъпки, посочени в [JWE] за създаване на JWE, ТРЯБВА да бъдат следвани.</li>
    </ol>
  </li>
  <li>Ако ще се извършва вложена операция за подписване или криптиране, нека съобщението бъде JWS или JWE и се върнете към стъпка 3, използвайки стойност на "cty" от "JWT" в новото JOSE заглавие, създадено в тази стъпка.</li>
  <li>В противен случай, нека резултатният JWT бъде JWS или JWE.</li>
</ol><a href="#undefined"><a class="toc-anchor" id="валидиране-на-jwt"></a></a>
<h4>Валидиране на JWT<a href="#валидиране-на-jwt" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h4>
<ol>
  <li>Проверете дали JWT съдържа поне един знак точка ('.').</li>
  <li>Нека кодираното JOSE заглавие бъде частта на JWT преди първата точка ('.').
    <ol>
      <li>Декодирайте кодираното JOSE заглавие с Base64url, като следвате ограничението, че не трябва да има нови редове, интервали или други допълнителни символи.</li>
    </ol>
  </li>
  <li>Декодирайте кодираното JOSE заглавие с Base64url, като следвате ограничението, че не трябва да има нови редове, интервали или други допълнителни символи.</li>
  <li>Проверете дали резултатната октетна последователност е UTF-8 кодирано представяне на напълно валиден JSON обект, съответстващ на RFC 7159; нека JOSE заглавието бъде този JSON обект.</li>
  <li>Проверете дали резултатното JOSE заглавие включва само параметри и стойности, чиято синтаксис и семантика са както разбрани, така и поддържани, или които са определени като игнорирани, когато не се разбират.</li>
</ol>
<ul>
  <li>... Минавайте през подобен процес, за да проверите секцията с твърдения ...</li>
</ul><a href="#undefined"><a class="toc-anchor" id="изисквания-за-имплементация"></a></a>
<h3>Изисквания за Имплементация<a href="#изисквания-за-имплементация" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>От подписващите и MAC алгоритмите, посочени в JSON Web Algorithms [JWA], само HMAC SHA-256 ("HS256") и "</li>
</ul>
]]></content:encoded>
            <author>Дойчин Денчев</author>
            <category>notes</category>
            <category>ietf</category>
            <enclosure url="https://doich.in/bg//images/2024-09-21-rfc7519_json_web_token/jwt_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Глава 3 - Линейни Преобразувания]]></title>
            <link>https://doich.in/bg/posts/2024-09-13_linear_algebra_done_right_chapter_3</link>
            <guid isPermaLink="false">2024-09-13_linear_algebra_done_right_chapter_3</guid>
            <pubDate>Fri, 13 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Обхваща линейни преобразувания и техните свойства, нулеви пространства, матрици, матрични операции, обратимост и оператори.]]></description>
            <content:encoded><![CDATA[
<hr>
<ul>
  <li>
    <p>„Никой не се вълнува от векторни пространства. Интересната част на линейната алгебра е... линейните преобразувания“</p>
  </li>
  <li>
    <p>В тези записки, V и W са две векторни пространства над F</p>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="дефиниции-и-примери"></a></a>
<h3>Дефиниции и примери<a href="#дефиниции-и-примери" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>линейно преобразувание</strong></p>
    <ul>
      <li>линейно преобразувание от V към W е функция <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>:</mo>
                <mi>V</mi>
                <mo>→</mo>
                <mi>W</mi>
              </mrow>
              <annotation encoding="application/x-tex">T: V \to W</annotation>
            </semantics>
          </math></span> със следните свойства:</li>
      <li><strong>адитивност</strong>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>T</mi>
                    <mo stretchy="false">(</mo>
                    <mi>u</mi>
                    <mo>+</mo>
                    <mi>v</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>T</mi>
                    <mi>u</mi>
                    <mo>+</mo>
                    <mi>T</mi>
                    <mi>v</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">T(u +v) = Tu + Tv</annotation>
                </semantics>
              </math></span> за всички <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>u</mi>
                    <mo separator="true">,</mo>
                    <mi>v</mi>
                    <mo>∈</mo>
                    <mi>V</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">u,v \in V</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
      <li><strong>хомогенност</strong>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>T</mi>
                    <mo stretchy="false">(</mo>
                    <mi>a</mi>
                    <mi>v</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>a</mi>
                    <mo stretchy="false">(</mo>
                    <mi>T</mi>
                    <mi>v</mi>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">T(av) = a(Tv)</annotation>
                </semantics>
              </math></span> за всички <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>a</mi>
                    <mo>∈</mo>
                    <mi>F</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">a \in F</annotation>
                </semantics>
              </math></span> и всички <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>v</mi>
                    <mo>∈</mo>
                    <mi>V</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">v \in V</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>множеството на всички линейни преобразувания се означава като <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">L(V, W)</annotation>
          </semantics>
        </math></span></p>
  </li>
  <li>
    <p><strong>нула</strong></p>
    <ul>
      <li>функцията, която отвежда всеки елемент на едно векторно пространство към адитивната идентичност на друго векторно пространство.
        <ul>
          <li>дефинирано като: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mn>0</mn>
                    <mi>v</mi>
                    <mo>=</mo>
                    <mn>0</mn>
                  </mrow>
                  <annotation encoding="application/x-tex">0v = 0</annotation>
                </semantics>
              </math></span>
            <ul>
              <li>0 отляво е функция от V към W</li>
              <li>0 отдясно е адитивната идентичност</li>
              <li>Забележка: разграничението се прави изцяло в контекста</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>идентичност</strong></p>
    <ul>
      <li>Идентичната функция, означавана с I, е функцията в някое векторно пространство, която отвежда всеки елемент към самия него</li>
    </ul>
  </li>
  <li>
    <p>Други примери за линейни преобразувания включват:</p>
    <ul>
      <li>диференциране</li>
      <li>интегриране</li>
      <li>умножение по <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>x</mi>
                  <mn>2</mn>
                </msup>
              </mrow>
              <annotation encoding="application/x-tex">x^2</annotation>
            </semantics>
          </math></span></li>
      <li>обратен пренос
        <ul>
          <li>забележка: премахване на първия вектор в списък от безкрайно измерими вектори</li>
        </ul>
      </li>
      <li>от <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>F</mi>
                  <mi>n</mi>
                </msup>
              </mrow>
              <annotation encoding="application/x-tex">F^n</annotation>
            </semantics>
          </math></span> към <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>F</mi>
                  <mi>m</mi>
                </msup>
              </mrow>
              <annotation encoding="application/x-tex">F^m</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p>Въпреки това, не всички общоприети идентичности са линейни преобразувания. Например <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>cos</mi>
              <mo>⁡</mo>
              <mn>2</mn>
              <mi>x</mi>
              <mo>=</mo>
              <mn>2</mn>
              <mi>cos</mi>
              <mo>⁡</mo>
              <mi>x</mi>
            </mrow>
            <annotation encoding="application/x-tex">\cos 2x = 2 \cos x</annotation>
          </semantics>
        </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>cos</mi>
              <mo>⁡</mo>
              <mo stretchy="false">(</mo>
              <mi>x</mi>
              <mo>+</mo>
              <mi>y</mi>
              <mo stretchy="false">)</mo>
              <mo>=</mo>
              <mi>cos</mi>
              <mo>⁡</mo>
              <mi>x</mi>
              <mo>+</mo>
              <mi>cos</mi>
              <mo>⁡</mo>
              <mi>y</mi>
            </mrow>
            <annotation encoding="application/x-tex">\cos(x + y) = \cos x + \cos y</annotation>
          </semantics>
        </math></span> не са линейни преобразувания</p>
    <ul>
      <li>Това е така, защото тези не са истински идентичности, т.е. невъзможно е да се създаде съответствие, което да е вярно.</li>
    </ul>
  </li>
  <li>
    <p>Възможно е да се дефинира векторно пространство <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>S</mi>
              <mo separator="true">,</mo>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">S, T \in L(V, W)</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Събиране: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <mi>S</mi>
                <mo>+</mo>
                <mi>T</mi>
                <mo stretchy="false">)</mo>
                <mi>v</mi>
                <mo>=</mo>
                <mi>S</mi>
                <mi>v</mi>
                <mo>+</mo>
                <mi>T</mi>
                <mi>v</mi>
              </mrow>
              <annotation encoding="application/x-tex">(S + T)v = Sv + Tv</annotation>
            </semantics>
          </math></span></li>
      <li>Умножение по скалар: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <mi>a</mi>
                <mi>T</mi>
                <mo stretchy="false">)</mo>
                <mi>v</mi>
                <mo>=</mo>
                <mi>a</mi>
                <mo stretchy="false">(</mo>
                <mi>T</mi>
                <mi>v</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(aT)v = a(Tv)</annotation>
            </semantics>
          </math></span></li>
      <li>Адитивната идентичност е нулевото линейно преобразуване</li>
    </ul>
  </li>
  <li>
    <p>Обикновено няма смисъл да се дефинира умножение върху векторно пространство, но в този случай може да е полезно.</p>
  </li>
  <li>
    <p>Дадено <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>U</mi>
              <mo separator="true">,</mo>
              <mi>V</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(U, V)</annotation>
          </semantics>
        </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>S</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">S \in L(V, W)</annotation>
          </semantics>
        </math></span> (две линейни преобразувания)</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <mi>S</mi>
                <mi>T</mi>
                <mo stretchy="false">)</mo>
                <mo stretchy="false">(</mo>
                <mi>v</mi>
                <mo stretchy="false">)</mo>
                <mo>=</mo>
                <mi>S</mi>
                <mo stretchy="false">(</mo>
                <mi>T</mi>
                <mi>v</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(ST)(v) = S(Tv)</annotation>
            </semantics>
          </math></span></li>
      <li>С други думи, прилага се функцията на композиция <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mo>∘</mo>
                <mi>T</mi>
              </mrow>
              <annotation encoding="application/x-tex">S \circ T</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p>Операцията за умножение има следните свойства:</p>
    <ul>
      <li>асоциативност</li>
      <li>идентичност</li>
      <li>дистрибутивни свойства</li>
    </ul>
  </li>
  <li>
    <p>Умножението на линейни преобразувания не е комутативно</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mi>T</mi>
                <mo mathvariant="normal">≠</mo>
                <mi>T</mi>
                <mi>S</mi>
              </mrow>
              <annotation encoding="application/x-tex">ST \neq TS</annotation>
            </semantics>
          </math></span> за всички S и T</li>
      <li>Това е вярно и за обикновена композиция на функции</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="нулеви-пространства-и-изображения"></a></a>
<h3>Нулеви пространства и изображения<a href="#нулеви-пространства-и-изображения" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>нулево пространство</strong> (или <strong>ядро</strong>)</p>
    <ul>
      <li>За <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo separator="true">,</mo>
                <mi>W</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
            </semantics>
          </math></span> нулевото пространство на T, означавано <code>null T</code>, е подмножество на V, състоящо се от онези вектори, които T преобразува в 0:
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>n</mi>
                    <mi>u</mi>
                    <mi>l</mi>
                    <mi>l</mi>
                    <mtext> </mtext>
                    <mi>T</mi>
                    <mo>=</mo>
                    <mrow>
                      <mi>v</mi>
                      <mo>∈</mo>
                      <mi>V</mi>
                      <mo>:</mo>
                      <mi>T</mi>
                      <mi>v</mi>
                      <mo>=</mo>
                      <mn>0</mn>
                    </mrow>
                  </mrow>
                  <annotation encoding="application/x-tex">null\ T = {v \in V: Tv = 0}</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 3.1</strong>: Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
          </semantics>
        </math></span>, то нулевото пространство на T е подпространство на V.</p>
    <ul>
      <li>null(T) е линейно преобразуване от V към W, където v се преобразува в 0 в W. Това може да бъде доказано чрез:</li>
      <li>
        <ol>
          <li>Показване, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msub>
                      <mn>0</mn>
                      <mi>v</mi>
                    </msub>
                    <mo>∈</mo>
                    <mi>n</mi>
                    <mi>u</mi>
                    <mi>l</mi>
                    <mi>l</mi>
                    <mo stretchy="false">(</mo>
                    <mi>T</mi>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">0_{v} \in null(T)</annotation>
                </semantics>
              </math></span></li>
        </ol>
      </li>
      <li>
        <ol start="2">
          <li>Затвореност под събиране <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>T</mi>
                    <mo stretchy="false">(</mo>
                    <msub>
                      <mi>v</mi>
                      <mn>1</mn>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>v</mi>
                      <mn>2</mn>
                    </msub>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <msub>
                      <mi>T</mi>
                      <mrow>
                        <mi>v</mi>
                        <mn>1</mn>
                      </mrow>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>T</mi>
                      <mrow>
                        <mi>v</mi>
                        <mn>2</mn>
                      </mrow>
                    </msub>
                    <mo>=</mo>
                    <msub>
                      <mn>0</mn>
                      <mi>w</mi>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mn>0</mn>
                      <mi>w</mi>
                    </msub>
                    <mo>=</mo>
                    <msub>
                      <mn>0</mn>
                      <mi>w</mi>
                    </msub>
                  </mrow>
                  <annotation encoding="application/x-tex">T(v_{1} + v_{2}) = T_{v1} + T_{v2} = 0_{w} + 0_{w} = 0_{w}</annotation>
                </semantics>
              </math></span></li>
        </ol>
      </li>
      <li>
        <ol start="3">
          <li>Затвореност под умножение по скалар <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>T</mi>
                    <mo stretchy="false">(</mo>
                    <mi>c</mi>
                    <mi>v</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>c</mi>
                    <mi>T</mi>
                    <mo stretchy="false">(</mo>
                    <mi>v</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mi>c</mi>
                    <mo>⋅</mo>
                    <msub>
                      <mn>0</mn>
                      <mi>w</mi>
                    </msub>
                    <mo>=</mo>
                    <msub>
                      <mn>0</mn>
                      <mi>w</mi>
                    </msub>
                  </mrow>
                  <annotation encoding="application/x-tex">T(cv) = cT(v) = c \cdot 0_{w} = 0_{w}</annotation>
                </semantics>
              </math></span></li>
        </ol>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>инективност</strong> (или <strong>едно към едно</strong>)</p>
    <ul>
      <li>Линейно преобразуване <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>:</mo>
                <mi>V</mi>
                <mo>→</mo>
                <mi>W</mi>
              </mrow>
              <annotation encoding="application/x-tex">T: V \to W</annotation>
            </semantics>
          </math></span> е инективно, ако когато <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>u</mi>
                <mo separator="true">,</mo>
                <mi>v</mi>
                <mo>∈</mo>
                <mi>V</mi>
              </mrow>
              <annotation encoding="application/x-tex">u, v \in V</annotation>
            </semantics>
          </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mi>u</mi>
                <mo>=</mo>
                <mi>T</mi>
                <mi>v</mi>
              </mrow>
              <annotation encoding="application/x-tex">Tu = Tv</annotation>
            </semantics>
          </math></span>, тогава <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>u</mi>
                <mo>=</mo>
                <mi>v</mi>
              </mrow>
              <annotation encoding="application/x-tex">u = v</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 3.2:</strong> Нека <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
          </semantics>
        </math></span>. Тогава T е инективно, ако и само ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>n</mi>
              <mi>u</mi>
              <mi>l</mi>
              <mi>l</mi>
              <mtext> </mtext>
              <mi>T</mi>
              <mo>=</mo>
              <mn>0</mn>
            </mrow>
            <annotation encoding="application/x-tex">null\ T = {0}</annotation>
          </semantics>
        </math></span></p>
  </li>
  <li>
    <p><strong>образ</strong> (или <strong>имидж</strong>)</p>
    <ul>
      <li>За <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo separator="true">,</mo>
                <mi>W</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
            </semantics>
          </math></span>, образът на T, означен като <code>range T</code>, е подмножество на W, състоящо се от онези вектори, които са под формата Tv за някое <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>v</mi>
                <mo>∈</mo>
                <mi>V</mi>
              </mrow>
              <annotation encoding="application/x-tex">v \in V</annotation>
            </semantics>
          </math></span>:
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>r</mi>
                    <mi>a</mi>
                    <mi>n</mi>
                    <mi>g</mi>
                    <mi>e</mi>
                    <mtext> </mtext>
                    <mi>T</mi>
                    <mo>=</mo>
                    <mrow>
                      <mi>T</mi>
                      <mi>v</mi>
                      <mo>:</mo>
                      <mi>v</mi>
                      <mo>∈</mo>
                      <mi>V</mi>
                    </mrow>
                  </mrow>
                  <annotation encoding="application/x-tex">range\ T = {Tv: v \in V}</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 3.3</strong>: Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
          </semantics>
        </math></span>, тогава образът на T е подпространство на W.</p>
  </li>
  <li>
    <p><strong>сюрективност</strong> (или <strong>върху</strong>)</p>
    <ul>
      <li>Линейно преобразуване <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>:</mo>
                <mi>V</mi>
                <mo>→</mo>
                <mi>W</mi>
              </mrow>
              <annotation encoding="application/x-tex">T: V \to W</annotation>
            </semantics>
          </math></span> е сюрективно, ако неговият образ е равен на W.</li>
    </ul>
  </li>
  <li>
    <p><strong>Теорема 3.4</strong>: Ако V е краен размер и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
          </semantics>
        </math></span>, тогава образът на T е подпространство на W с краен размер и</p>
    <ul>
      <li>dim V = dim null T + dim range T</li>
      <li>известна като <strong>теоремата за ранг и ядро</strong></li>
      <li>Основни моменти от доказателството:
        <ul>
          <li>Има два типа T: тези, които се преобразуват в 0 в W, и тези, които не го правят.</li>
          <li>
            <ol>
              <li>Нулевото пространство на T (null T) съдържа всички линейни преобразувания, които се губят (преобразуват се в 0 в W)</li>
            </ol>
          </li>
          <li>
            <ol start="2">
              <li>Образът на T съдържа всички линейни преобразувания, които не се преобразуват в 0 в W</li>
            </ol>
          </li>
          <li>Интуитивно, можете да елиминирате измерение, като го преобразувате в 0, или можете да го преобразувате в W и следователно измерението съществува в образа
            <ul>
              <li>Следователно, размерът на V трябва да бъде сумата от размера на нулевото пространство и размера на образа</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Следствие 3.5</strong>: Ако V и W са крайноизмерими векторни пространства и dim V > dim W, тогава няма линейно преобразуване от V към W, което да е инективно.</p>
    <ul>
      <li>Интуитивно, това е вярно по дефиницията на инективност. По дефиниция два вектора от V към W не могат да се преобразуват в същите вектори в W. Но ако размерът на W е по-малък от този на V, неизбежно два вектора в V ще се преобразуват в един и същ вектор в W.</li>
    </ul>
  </li>
  <li>
    <p><strong>Следствие 3.6</strong>: Ако V и W са крайноизмерими векторни пространства и dim V &#x3C; dim W, тогава няма линейно преобразуване от V към W, което да е сюрективно.</p>
  </li>
  <li>
    <p>И двете следствия се доказват чрез Теорема 3.4</p>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="матрица-на-линейно-преобразуване"></a></a>
<h3>Матрица на линейно преобразуване<a href="#матрица-на-линейно-преобразуване" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li><strong>матрица</strong>
    <ul>
      <li>m-на-n матрица е правоъгълна матрица с m реда и n колони, която изглежда така:</li>
    </ul>
  </li>
</ul><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
    <semantics>
      <mrow>
        <mo fence="true">[</mo>
        <mtable rowspacing="0.16em" columnalign="center center center" columnspacing="1em">
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <msub>
                  <mi>a</mi>
                  <mrow>
                    <mn>1</mn>
                    <mo separator="true">,</mo>
                    <mn>1</mn>
                  </mrow>
                </msub>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mo lspace="0em" rspace="0em">…</mo>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <msub>
                  <mi>a</mi>
                  <mrow>
                    <mn>1</mn>
                    <mo separator="true">,</mo>
                    <mi>n</mi>
                  </mrow>
                </msub>
              </mstyle>
            </mtd>
          </mtr>
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mrow>
                  <mi mathvariant="normal">⋮</mi>
                  <mpadded height="0em" voffset="0em">
                    <mspace mathbackground="black" width="0em" height="1.5em"></mspace>
                  </mpadded>
                </mrow>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mrow>
                  <mi mathvariant="normal">⋮</mi>
                  <mpadded height="0em" voffset="0em">
                    <mspace mathbackground="black" width="0em" height="1.5em"></mspace>
                  </mpadded>
                </mrow>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mrow>
                  <mi mathvariant="normal">⋮</mi>
                  <mpadded height="0em" voffset="0em">
                    <mspace mathbackground="black" width="0em" height="1.5em"></mspace>
                  </mpadded>
                </mrow>
              </mstyle>
            </mtd>
          </mtr>
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <msub>
                  <mi>a</mi>
                  <mrow>
                    <mi>m</mi>
                    <mo separator="true">,</mo>
                    <mn>1</mn>
                  </mrow>
                </msub>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mo lspace="0em" rspace="0em">…</mo>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <msub>
                  <mi>a</mi>
                  <mrow>
                    <mi>m</mi>
                    <mo separator="true">,</mo>
                    <mi>n</mi>
                  </mrow>
                </msub>
              </mstyle>
            </mtd>
          </mtr>
        </mtable>
        <mo fence="true">]</mo>
      </mrow>
      <annotation encoding="application/x-tex">
        \begin{bmatrix}
        a_{1,1} &#x26; \dots &#x26; a_{1,n} \\
        \vdots &#x26; \vdots &#x26; \vdots \\
        a_{m,1} &#x26; \dots &#x26; a_{m,n} \\
        \end{bmatrix}
      </annotation>
    </semantics>
  </math></span>
<ul>
  <li>
    <p>В тази книга матриците съдържат елементи от F</p>
  </li>
  <li>
    <p>Тази нотация е особено полезна за изразяване на линейни преобразувания</p>
    <ul>
      <li>Нека (<span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">v_{1}, \dots, v_{n}</annotation>
            </semantics>
          </math></span>) и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>w</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>w</mi>
                  <mi>m</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">w_{1}, \dots, w_{m}</annotation>
            </semantics>
          </math></span> са базиси на V и</li>
    </ul>
  </li>
</ul>
<p>W. Линейната трансформация T е напълно дефинирана, като се приложи върху двата базиса. Трансформирането <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
      <semantics>
        <mrow>
          <msub>
            <mi>v</mi>
            <mn>1</mn>
          </msub>
          <mo>→</mo>
          <msub>
            <mi>w</mi>
            <mn>1</mn>
          </msub>
        </mrow>
        <annotation encoding="application/x-tex">v_{1} \to w_{1}</annotation>
      </semantics>
    </math></span> , <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
      <semantics>
        <mrow>
          <msub>
            <mi>v</mi>
            <mn>1</mn>
          </msub>
          <mo>→</mo>
          <msub>
            <mi>w</mi>
            <mn>2</mn>
          </msub>
        </mrow>
        <annotation encoding="application/x-tex">v_{1} \to w_{2}</annotation>
      </semantics>
    </math></span> и т.н. може да бъде изразено чрез коефициентите <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
      <semantics>
        <mrow>
          <msub>
            <mi>a</mi>
            <mrow>
              <mn>1</mn>
              <mo separator="true">,</mo>
              <mn>1</mn>
            </mrow>
          </msub>
          <mo>…</mo>
        </mrow>
        <annotation encoding="application/x-tex">a_{1,1}\dots</annotation>
      </semantics>
    </math></span>, които дефинират трансформацията от V към W по-горе.</p>
<ul>
  <li>
    <p>Ако базисът не е изрично дефиниран, се предполага стандартен базис.</p>
  </li>
  <li>
    <p>Като пример, разгледайте следната трансформация <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <msup>
                <mi>F</mi>
                <mn>2</mn>
              </msup>
              <mo separator="true">,</mo>
              <msup>
                <mi>F</mi>
                <mn>3</mn>
              </msup>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(F^2, F^3)</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo stretchy="false">(</mo>
                <mi>x</mi>
                <mo separator="true">,</mo>
                <mi>y</mi>
                <mo stretchy="false">)</mo>
                <mo>=</mo>
                <mo stretchy="false">(</mo>
                <mi>x</mi>
                <mo>+</mo>
                <mn>3</mn>
                <mi>y</mi>
                <mo separator="true">,</mo>
                <mn>2</mn>
                <mi>x</mi>
                <mo>+</mo>
                <mn>5</mn>
                <mi>y</mi>
                <mo separator="true">,</mo>
                <mn>7</mn>
                <mi>x</mi>
                <mo>+</mo>
                <mn>9</mn>
                <mi>y</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">T(x, y) = (x+3y, 2x + 5y, 7x + 9y)</annotation>
            </semantics>
          </math></span></li>
      <li>тогава T(1,0) = (1, 2, 7) и T(0, 1) = (3, ,5, 9)
        <ul>
          <li>(спрямо стандартните базиси)</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Тази трансформация може да бъде изразена като следната матрица много кратко:</p>
  </li>
</ul><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
    <semantics>
      <mrow>
        <mo fence="true">[</mo>
        <mtable rowspacing="0.16em" columnalign="center center" columnspacing="1em">
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>1</mn>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>3</mn>
              </mstyle>
            </mtd>
          </mtr>
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>2</mn>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>5</mn>
              </mstyle>
            </mtd>
          </mtr>
          <mtr>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>7</mn>
              </mstyle>
            </mtd>
            <mtd>
              <mstyle scriptlevel="0" displaystyle="false">
                <mn>9</mn>
              </mstyle>
            </mtd>
          </mtr>
        </mtable>
        <mo fence="true">]</mo>
      </mrow>
      <annotation encoding="application/x-tex">
        \begin{bmatrix}
        1 &#x26; 3 \\
        2 &#x26; 5 \\
        7 &#x26; 9 \\
        \end{bmatrix}
      </annotation>
    </semantics>
  </math></span>
<ul>
  <li>
    <p>Събирането на матрици работи както се очаква. Сумата на две линейни преобразувания може да бъде изразена като сумата на двете матрици, събрани елемент по елемент. Очевидно, двете матрици трябва да са с еднакъв размер.</p>
  </li>
  <li>
    <p>Умножението на скалар с матрица също работи както се очаква. Скаларът се умножава по всеки елемент в матрицата.</p>
  </li>
  <li>
    <p><strong>Умножение на матрици</strong></p>
    <ul>
      <li>Да разгледаме <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mo>:</mo>
                <mi>U</mi>
                <mo>→</mo>
                <mi>V</mi>
              </mrow>
              <annotation encoding="application/x-tex">S: U \to V</annotation>
            </semantics>
          </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>:</mo>
                <mi>V</mi>
                <mo>→</mo>
                <mi>W</mi>
              </mrow>
              <annotation encoding="application/x-tex">T: V \to W</annotation>
            </semantics>
          </math></span>
        <ul>
          <li>Композицията TS е линейно преобразуване от U към W.</li>
          <li>Как може да се изчисли M(TS) от M(T) и M(S)?
            <ul>
              <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <mi>M</mi>
                        <mo stretchy="false">(</mo>
                        <mi>T</mi>
                        <mi>S</mi>
                        <mo stretchy="false">)</mo>
                        <mo>=</mo>
                        <mi>M</mi>
                        <mo stretchy="false">(</mo>
                        <mi>T</mi>
                        <mo stretchy="false">)</mo>
                        <mi>M</mi>
                        <mo stretchy="false">(</mo>
                        <mi>S</mi>
                        <mo stretchy="false">)</mo>
                      </mrow>
                      <annotation encoding="application/x-tex">M(TS) = M(T)M(S)</annotation>
                    </semantics>
                  </math></span></li>
              <li>Ако разгледате композицията на двете линейни зависимости чрез индекси, тя се изразява точно чрез правилото за кръстосан продукт</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mo stretchy="false">(</mo>
              <msub>
                <mi>v</mi>
                <mn>1</mn>
              </msub>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <msub>
                <mi>v</mi>
                <mn>2</mn>
              </msub>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">(v_{1}, \dots, v_{2})</annotation>
          </semantics>
        </math></span> е базис за V. Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>v</mi>
              <mo>∈</mo>
              <mi>V</mi>
            </mrow>
            <annotation encoding="application/x-tex">v \in V</annotation>
          </semantics>
        </math></span>, съществуват уникални скалари <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>b</mi>
                <mn>1</mn>
              </msub>
              <msub>
                <mi>v</mi>
                <mn>1</mn>
              </msub>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <msub>
                <mi>b</mi>
                <mi>n</mi>
              </msub>
              <msub>
                <mi>v</mi>
                <mi>n</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">b_{1}v_{1},\dots,b_{n}v_{n}</annotation>
          </semantics>
        </math></span>, такива че:</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>v</mi>
                <mo>=</mo>
                <msub>
                  <mi>b</mi>
                  <mn>1</mn>
                </msub>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo>+</mo>
                <mo>…</mo>
                <msub>
                  <mi>b</mi>
                  <mi>n</mi>
                </msub>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">v=b_{1}v_{1}+\dots b_{n}v_{n}</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p><strong>Матрицата</strong> на v, означена като <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>M</mi>
              <mo stretchy="false">(</mo>
              <mi>v</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">M(v)</annotation>
          </semantics>
        </math></span>, е n-на-1 матрица, дефинирана като:</p>
  </li>
</ul><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
    <semantics>
      <mrow>
        <mi>M</mi>
        <mo stretchy="false">(</mo>
        <mi>V</mi>
        <mo stretchy="false">)</mo>
        <mo>=</mo>
        <mrow>
          <mo fence="true">[</mo>
          <mtable rowspacing="0.16em" columnalign="center" columnspacing="1em">
            <mtr>
              <mtd>
                <mstyle scriptlevel="0" displaystyle="false">
                  <msub>
                    <mi>b</mi>
                    <mn>1</mn>
                  </msub>
                </mstyle>
              </mtd>
            </mtr>
            <mtr>
              <mtd>
                <mstyle scriptlevel="0" displaystyle="false">
                  <msub>
                    <mi>b</mi>
                    <mn>2</mn>
                  </msub>
                </mstyle>
              </mtd>
            </mtr>
            <mtr>
              <mtd>
                <mstyle scriptlevel="0" displaystyle="false">
                  <mrow>
                    <mi mathvariant="normal">⋮</mi>
                    <mpadded height="0em" voffset="0em">
                      <mspace mathbackground="black" width="0em" height="1.5em"></mspace>
                    </mpadded>
                  </mrow>
                </mstyle>
              </mtd>
            </mtr>
            <mtr>
              <mtd>
                <mstyle scriptlevel="0" displaystyle="false">
                  <msub>
                    <mi>b</mi>
                    <mi>n</mi>
                  </msub>
                </mstyle>
              </mtd>
            </mtr>
          </mtable>
          <mo fence="true">]</mo>
        </mrow>
      </mrow>
      <annotation encoding="application/x-tex">
        M(V) =
        \begin{bmatrix}
        b_{1} \\
        b_{2} \\
        \vdots \\
        b_{n}
        \end{bmatrix}
      </annotation>
    </semantics>
  </math></span>
<ul>
  <li>
    <p><strong>Твърдение 3.14</strong>: Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>T</mi>
              <mo>∈</mo>
              <mi>L</mi>
              <mo stretchy="false">(</mo>
              <mi>V</mi>
              <mo separator="true">,</mo>
              <mi>W</mi>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
          </semantics>
        </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>v</mi>
                <mn>1</mn>
              </msub>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <mo separator="true">,</mo>
              <msub>
                <mi>v</mi>
                <mi>n</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">v_{1}, \dots,, v_{n}</annotation>
          </semantics>
        </math></span> е базис на V и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mo stretchy="false">(</mo>
              <msub>
                <mi>w</mi>
                <mn>1</mn>
              </msub>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <msub>
                <mi>w</mi>
                <mn>2</mn>
              </msub>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">(w_{1},\dots,w_{2})</annotation>
          </semantics>
        </math></span> е базис на W. Тогава:</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>M</mi>
                <mo stretchy="false">(</mo>
                <mi>T</mi>
                <mi>v</mi>
                <mo stretchy="false">)</mo>
                <mo>=</mo>
                <mi>M</mi>
                <mo stretchy="false">(</mo>
                <mi>T</mi>
                <mo stretchy="false">)</mo>
                <mi>M</mi>
                <mo stretchy="false">(</mo>
                <mi>v</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">M(Tv) = M(T)M(v)</annotation>
            </semantics>
          </math></span> за всеки <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>v</mi>
                <mo>∈</mo>
                <mi>V</mi>
              </mrow>
              <annotation encoding="application/x-tex">v \in V</annotation>
            </semantics>
          </math></span>.</li>
    </ul>
  </li>
  <li>
    <p>Интуитивно, това има смисъл, тъй като матрицата на линейното преобразуване, умножена по базисен вектор, трябва да е равна на матрицата на W. По същия начин, матрицата на линейното преобразуване, умножена по матрицата на базисния вектор, трябва да е равна на същото, според дефиницията на умножение на матрици.</p>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="обратимост"></a></a>
<h3>Обратимост<a href="#обратимост" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>обратимо</strong></p>
    <ul>
      <li>Линейно преобразуване <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo separator="true">,</mo>
                <mi>W</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">T \in L(V, W)</annotation>
            </semantics>
          </math></span> се нарича обратимо, ако съществува линейно преобразуване <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>W</mi>
                <mo separator="true">,</mo>
                <mi>V</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">S \in L(W, V)</annotation>
            </semantics>
          </math></span>, така че ST е равно на идентичната функция върху V, а TS е равно на идентичната функция върху W.</li>
    </ul>
  </li>
  <li>
    <p><strong>обратна</strong></p>
    <ul>
      <li>Линейно преобразуване <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>W</mi>
                <mo separator="true">,</mo>
                <mi>V</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">S \in L(W, V)</annotation>
            </semantics>
          </math></span>, което удовлетворява <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>S</mi>
                <mi>T</mi>
                <mo>=</mo>
                <mi>I</mi>
              </mrow>
              <annotation encoding="application/x-tex">ST = I</annotation>
            </semantics>
          </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mi>S</mi>
                <mo>=</mo>
                <mi>I</mi>
              </mrow>
              <annotation encoding="application/x-tex">TS = I</annotation>
            </semantics>
          </math></span>, се нарича обратна на T.</li>
      <li>Забележете, че първото I е идентичната функция върху V, а второто I е идентичната функция върху W.</li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 3.17</strong>: Линейно преобразуване е обратимо, ако и само ако е инективно и сюрективно.</p>
  </li>
  <li>
    <p><strong>изоморфни</strong></p>
    <ul>
      <li>Две векторни пространства се наричат изоморфни, ако съществува обратимо линейно преобразуване от едното векторно пространство върху другото.</li>
    </ul>
  </li>
  <li>
    <p>Ако две векторни пространства са изоморфни и едното от тях е краен размер, то и другото е такова.</p>
  </li>
  <li>
    <p><strong>Теорема 3.18</strong>: Две крайноизмерими векторни пространства са изоморфни, ако и само ако имат еднакъв размер.</p>
  </li>
  <li>
    <p><strong>Твърдение 3.19</strong>:</p>
    <ul>
      <li>Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(v_{1},\dots , v_{n})</annotation>
            </semantics>
          </math></span> е базис на V и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>w</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>w</mi>
                  <mi>m</mi>
                </msub>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(w_{1},\dots,w_{m})</annotation>
            </semantics>
          </math></span> е базис на W.
        <ul>
          <li>Тогава M е обратимо линейно преобразуване между <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>L</mi>
                    <mo stretchy="false">(</mo>
                    <mi>V</mi>
                    <mo separator="true">,</mo>
                    <mi>W</mi>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">L(V,W)</annotation>
                </semantics>
              </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>M</mi>
                    <mi>a</mi>
                    <mi>t</mi>
                    <mo stretchy="false">(</mo>
                    <mi>m</mi>
                    <mo separator="true">,</mo>
                    <mi>n</mi>
                    <mo separator="true">,</mo>
                    <mi>F</mi>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">Mat(m, n, F)</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Твърдение 3.20</strong>:</p>
    <ul>
      <li>Ако V и W са крайноизмерими, тогава <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo separator="true">,</mo>
                <mi>W</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">L(V, W)</annotation>
            </semantics>
          </math></span> е крайноизмеримо и
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>d</mi>
                    <mi>i</mi>
                    <mi>m</mi>
                    <mtext> </mtext>
                    <mi>L</mi>
                    <mo stretchy="false">(</mo>
                    <mi>V</mi>
                    <mo separator="true">,</mo>
                    <mi>W</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <mo stretchy="false">(</mo>
                    <mi>d</mi>
                    <mi>i</mi>
                    <mi>m</mi>
                    <mtext> </mtext>
                    <mi>V</mi>
                    <mo stretchy="false">)</mo>
                    <mo stretchy="false">(</mo>
                    <mi>d</mi>
                    <mi>i</mi>
                    <mi>m</mi>
                    <mtext> </mtext>
                    <mi>W</mi>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">dim\ L(V, W) = (dim\ V)(dim\ W)</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>оператор</strong></p>
    <ul>
      <li>Линейно преобразуване от векторно пространство към самото себе си.</li>
      <li>Тъй като това е толкова често срещано, оператор <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>:</mo>
                <mi>V</mi>
                <mo>→</mo>
                <mi>V</mi>
              </mrow>
              <annotation encoding="application/x-tex">T: V \to V</annotation>
            </semantics>
          </math></span> често се съкращава като <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">L(V)</annotation>
            </semantics>
          </math></span>.</li>
    </ul>
  </li>
  <li>
    <p><strong>Теорема 3.21</strong>:</p>
    <ul>
      <li>Да предположим, че V е крайноизмеримо. Ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>T</mi>
                <mo>∈</mo>
                <mi>L</mi>
                <mo stretchy="false">(</mo>
                <mi>V</mi>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">T \in L(V)</annotation>
            </semantics>
          </math></span>, тогава следните условия са еквивалентни:
        <ul>
          <li>(а) T е обратим</li>
          <li>(б) T е инективен</li>
          <li>(в) T е сюрективен</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
<p>Това последно свойство на операторите в крайноизмерими векторни пространства ги прави много интересни за изучаване.</p>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>notes</category>
            <category>math</category>
            <category>ladr</category>
            <enclosure url="https://doich.in/bg//images/2024-09-13_linear_algebra_done_right_chapter_3/ladr_chapter_3_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Глава 2 - Крайномерни Векторни Пространства]]></title>
            <link>https://doich.in/bg/posts/2024-09-12_linear_algebra_done_right_chapter_2</link>
            <guid isPermaLink="false">2024-09-12_linear_algebra_done_right_chapter_2</guid>
            <pubDate>Thu, 12 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Обхваща линейна комбинация, обхват и линейна независимост. Използва тези концепции за дефиниране на база и някои полезни теореми. Накрая формално дефинира понятието за размерност.]]></description>
            <content:encoded><![CDATA[
<p>Линейната алгебра се фокусира не върху произволни векторни пространства, а върху крайни векторни пространства</p><a href="#undefined"><a class="toc-anchor" id="обхват-и-линейна-независимост"></a></a>
<h3>Обхват и Линейна Независимост<a href="#обхват-и-линейна-независимост" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>Линейна Комбинация</strong></p>
    <ul>
      <li>Даден списък от вектори <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>v</mi>
                  <mn>2</mn>
                </msub>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(v_{1}, \dots, v_{2})</annotation>
            </semantics>
          </math></span> във векторно пространство <em>V</em>
        <ul>
          <li>и набор от скалари <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mo stretchy="false">(</mo>
                    <msub>
                      <mi>C</mi>
                      <mn>1</mn>
                    </msub>
                    <mo separator="true">,</mo>
                    <mo>…</mo>
                    <msub>
                      <mi>C</mi>
                      <mi>n</mi>
                    </msub>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">(C_{1}, \dots C_{n})</annotation>
                </semantics>
              </math></span> във F</li>
        </ul>
      </li>
      <li>Линейната комбинация на векторите е дадена от:
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msub>
                      <mi>C</mi>
                      <mn>1</mn>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mn>1</mn>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>C</mi>
                      <mn>2</mn>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mn>2</mn>
                    </msub>
                    <mo>+</mo>
                    <mo>⋯</mo>
                    <mo>+</mo>
                    <msub>
                      <mi>C</mi>
                      <mi>n</mi>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mi>n</mi>
                    </msub>
                  </mrow>
                  <annotation encoding="application/x-tex">C_{1}v_{1} + C_{2}v_{2} + \dots + C_{n}v_{n}</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Обхват (Span)</strong></p>
    <ul>
      <li>Множеството на всички линейни комбинации</li>
      <li>За консистентност, обхватът на празен списък е обявен за <em>{0}</em></li>
      <li>Ако span(<span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">v_{1}, \dots v_{n}</annotation>
            </semantics>
          </math></span>) е равно на <em>V</em>, казваме, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">v_{1}, \dots v_{n}</annotation>
            </semantics>
          </math></span> обхващат <em>V</em></li>
    </ul>
  </li>
  <li>
    <p><strong>Крайна Размерност</strong></p>
    <ul>
      <li>Векторно пространство е крайномерно, ако съществува списък от вектори, които обхващат пространството</li>
    </ul>
  </li>
  <li>
    <p><strong>Степен на Полином</strong></p>
    <ul>
      <li><strong>Степента на полином</strong> е най-високата степен на променливата (често обозначена като x), която се появява в полинома с ненулев коефициент.</li>
      <li>За полином P(x)P(x) от формата:
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>P</mi>
                    <mo stretchy="false">(</mo>
                    <mi>x</mi>
                    <mo stretchy="false">)</mo>
                    <mo>=</mo>
                    <msub>
                      <mi>a</mi>
                      <mi>n</mi>
                    </msub>
                    <msub>
                      <mi>x</mi>
                      <mi>n</mi>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mrow>
                        <mi>n</mi>
                        <mo>−</mo>
                        <mn>1</mn>
                      </mrow>
                    </msub>
                    <msub>
                      <mi>x</mi>
                      <mrow>
                        <mi>n</mi>
                        <mo>−</mo>
                        <mn>1</mn>
                      </mrow>
                    </msub>
                    <mo>+</mo>
                    <mo>⋯</mo>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mn>1</mn>
                    </msub>
                    <mi>x</mi>
                    <mo>+</mo>
                    <msub>
                      <mi>a</mi>
                      <mn>0</mn>
                    </msub>
                  </mrow>
                  <annotation encoding="application/x-tex">P(x)=a_{n}x_{n}+a_{n-1}x_{n-1}+ \dots + a_{1}x+a_{0}</annotation>
                </semantics>
              </math></span></li>
          <li>където:
            <ul>
              <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <msub>
                          <mi>a</mi>
                          <mi>n</mi>
                        </msub>
                        <mo separator="true">,</mo>
                        <msub>
                          <mi>a</mi>
                          <mrow>
                            <mi>n</mi>
                            <mo>−</mo>
                            <mn>1</mn>
                          </mrow>
                        </msub>
                        <mo separator="true">,</mo>
                        <mo>…</mo>
                        <mo separator="true">,</mo>
                        <msub>
                          <mi>a</mi>
                          <mn>1</mn>
                        </msub>
                        <mo separator="true">,</mo>
                        <msub>
                          <mi>a</mi>
                          <mn>0</mn>
                        </msub>
                      </mrow>
                      <annotation encoding="application/x-tex">a_{n}, a_{n-1}, \dots, a_{1}, a_{0}</annotation>
                    </semantics>
                  </math></span> са константи (коефициенти)</li>
              <li>x е променливата</li>
              <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <msub>
                          <mi>a</mi>
                          <mi>n</mi>
                        </msub>
                        <mo mathvariant="normal">≠</mo>
                        <mn>0</mn>
                      </mrow>
                      <annotation encoding="application/x-tex">a_{n} \neq 0</annotation>
                    </semantics>
                  </math></span></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Векторно пространство, което не е крайномерно, се нарича <strong>безкрайномерно</strong></p>
  </li>
  <li>
    <p><strong>Линейна Независимост</strong></p>
    <ul>
      <li>Набор от вектори е <strong>линейно независим</strong>, ако нито един вектор в набора не може да бъде изразен като линейна комбинация от другите вектори в набора. Това означава, че нито един от векторите не е "излишен" по отношение на представянето на посоки или размерности във векторното пространство.
        <ul>
          <li>Даден списък от вектори <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mo stretchy="false">(</mo>
                    <msub>
                      <mi>v</mi>
                      <mn>1</mn>
                    </msub>
                    <mo separator="true">,</mo>
                    <mo>…</mo>
                    <mo separator="true">,</mo>
                    <msub>
                      <mi>v</mi>
                      <mn>2</mn>
                    </msub>
                    <mo stretchy="false">)</mo>
                  </mrow>
                  <annotation encoding="application/x-tex">(v_{1}, \dots, v_{2})</annotation>
                </semantics>
              </math></span> във векторно пространство <em>V</em></li>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msub>
                      <mi>C</mi>
                      <mn>1</mn>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mn>1</mn>
                    </msub>
                    <mo>+</mo>
                    <msub>
                      <mi>C</mi>
                      <mn>2</mn>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mn>2</mn>
                    </msub>
                    <mo>+</mo>
                    <mo>⋯</mo>
                    <mo>+</mo>
                    <msub>
                      <mi>C</mi>
                      <mi>n</mi>
                    </msub>
                    <msub>
                      <mi>v</mi>
                      <mi>n</mi>
                    </msub>
                    <mo>=</mo>
                    <mn>0</mn>
                  </mrow>
                  <annotation encoding="application/x-tex">C_{1}v_{1} + C_{2}v_{2} + \dots + C_{n}v_{n} = 0</annotation>
                </semantics>
              </math></span>
            <ul>
              <li>само ако <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <msub>
                          <mi>C</mi>
                          <mn>1</mn>
                        </msub>
                        <mo>=</mo>
                        <msub>
                          <mi>C</mi>
                          <mn>2</mn>
                        </msub>
                        <mo>=</mo>
                        <mo>⋯</mo>
                        <mo>=</mo>
                        <msub>
                          <mi>C</mi>
                          <mi>n</mi>
                        </msub>
                        <mo>=</mo>
                        <mn>0</mn>
                      </mrow>
                      <annotation encoding="application/x-tex">C_{1} = C_{2} = \dots = C_{n} = 0</annotation>
                    </semantics>
                  </math></span></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Пример за линейно независими вектори в <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi mathvariant="double-struck">R</mi>
                <mn>2</mn>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">\mathbb{R}^2</annotation>
          </semantics>
        </math></span>:</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo>=</mo>
                <mo stretchy="false">(</mo>
                <mn>1</mn>
                <mo separator="true">,</mo>
                <mn>0</mn>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">v_{1} = (1, 0)</annotation>
            </semantics>
          </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>v</mi>
                  <mn>2</mn>
                </msub>
                <mo>=</mo>
                <mo stretchy="false">(</mo>
                <mn>0</mn>
                <mo separator="true">,</mo>
                <mn>1</mn>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">v_{2} = (0, 1)</annotation>
            </semantics>
          </math></span>
        <ul>
          <li>Няма начин да се изрази един като скаларен множител или линейна комбинация на другия.
            <ul>
              <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                    <semantics>
                      <mrow>
                        <msub>
                          <mi>C</mi>
                          <mn>1</mn>
                        </msub>
                        <mo stretchy="false">(</mo>
                        <mn>1</mn>
                        <mo separator="true">,</mo>
                        <mn>0</mn>
                        <mo stretchy="false">)</mo>
                        <mo>+</mo>
                      </mrow>
                      <annotation encoding="application/x-tex">C_{1}(1, 0) + </annotation>
                    </semantics>
                  </math></span>C_{2}(0, 1) = 0 се удовлетворява само когато и двата коефициента са 0.</li>
            </ul>
          </li>
          <li>Те сочат в различни посоки и обхващат цялата 2D равнина.</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p>Тази книга изрично дефинира линейната независимост чрез списъци вместо чрез множества. Това се прави, за да се избегнат определени проблеми, които възникват при доказване на теории с помощта на подхода с множества.</p>
  </li>
  <li>
    <p>Списък от вектори се нарича <strong>линейно зависим</strong>, ако не е линейно независим.</p>
    <ul>
      <li>Всеки списък, който съдържа нулев вектор, е линейно зависим.
        <ul>
          <li>Формално, това може да се види, защото нулевият вектор позволява всеки коефициент да удовлетвори уравнението за линейна зависимост по-горе.</li>
          <li>Интуитивно това има смисъл, защото нулевият вектор не добавя ново измерение към набора от вектори. Той не добавя никаква нова информация по отношение на дефинирането на векторното пространство.</li>
          <li>Въпреки това, изглежда странно, че това е така... нулата е специална по някакъв начин.</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Теорема:</strong> В крайномерно векторно пространство, дължината на всеки линейно независим списък от вектори е по-малка или равна на дължината на всеки обхващащ списък от вектори.</p>
  </li>
  <li>
    <p><strong>Предложение 2.7:</strong> Всяко подпространство на крайномерно векторно пространство е крайномерно.</p>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="бази"></a></a>
<h3>Бази<a href="#бази" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>база</strong></p>
    <ul>
      <li>База на <em>V</em> е списък от вектори в V, който е линейно независим и обхваща <em>V</em>.</li>
    </ul>
  </li>
  <li>
    <p><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mo stretchy="false">(</mo>
              <mo stretchy="false">(</mo>
              <mn>1</mn>
              <mo separator="true">,</mo>
              <mn>0</mn>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <mn>0</mn>
              <mo stretchy="false">)</mo>
              <mo separator="true">,</mo>
              <mo stretchy="false">(</mo>
              <mn>0</mn>
              <mo separator="true">,</mo>
              <mn>1</mn>
              <mo separator="true">,</mo>
              <mn>0</mn>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <mn>0</mn>
              <mo stretchy="false">)</mo>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <mo stretchy="false">(</mo>
              <mn>0</mn>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <mn>0</mn>
              <mo separator="true">,</mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">((1, 0, \dots, 0), (0, 1, 0, \dots, 0), \dots, (0, \dots,0, 1))</annotation>
          </semantics>
        </math></span> е база за <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi>F</mi>
                <mi>n</mi>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">F^n</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Това се нарича <em>стандартна база</em></li>
    </ul>
  </li>
  <li>
    <p><strong>Предложение 2.8</strong> Списък <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mo stretchy="false">(</mo>
              <msub>
                <mi>v</mi>
                <mn>1</mn>
              </msub>
              <mo separator="true">,</mo>
              <mo>…</mo>
              <mo separator="true">,</mo>
              <msub>
                <mi>v</mi>
                <mi>n</mi>
              </msub>
              <mo stretchy="false">)</mo>
            </mrow>
            <annotation encoding="application/x-tex">(v_{1}, \dots, v_{n})</annotation>
          </semantics>
        </math></span> от вектори в <em>V</em> е база на <em>V</em>, ако и само ако всеки <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>v</mi>
              <mo>∈</mo>
              <mi>V</mi>
            </mrow>
            <annotation encoding="application/x-tex">v \in V</annotation>
          </semantics>
        </math></span> може да се напише уникално във формата</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>v</mi>
                <mo>=</mo>
                <msub>
                  <mi>a</mi>
                  <mn>1</mn>
                </msub>
                <msub>
                  <mi>v</mi>
                  <mn>1</mn>
                </msub>
                <mo>+</mo>
                <mo>⋯</mo>
                <mo>+</mo>
                <msub>
                  <mi>a</mi>
                  <mi>n</mi>
                </msub>
                <msub>
                  <mi>v</mi>
                  <mi>n</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">v = a_{1}v_{1} + \dots + a_{n}v_{n}</annotation>
            </semantics>
          </math></span>
        <ul>
          <li>където <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msub>
                      <mi>a</mi>
                      <mn>1</mn>
                    </msub>
                    <mo separator="true">,</mo>
                    <mo>…</mo>
                    <mo separator="true">,</mo>
                    <msub>
                      <mi>a</mi>
                      <mi>n</mi>
                    </msub>
                    <mo>∈</mo>
                    <mi>F</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">a_{1},\dots,a_{n} \in F</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Теорема:</strong> Всеки обхващащ списък във векторно пространство може да бъде намален до база на векторното пространство.</p>
    <ul>
      <li><strong>Следствие:</strong> Всяко крайномерно векторно пространство има база.</li>
    </ul>
  </li>
  <li>
    <p><strong>Теорема:</strong> Всеки линейно независим списък от вектори в крайномерно векторно пространство може да бъде разширен до база на векторното пространство.</p>
    <ul>
      <li>Интуитивно това има смисъл, защото линейно независим списък от вектори не е гарантирано да е обхващащ. Ако е обхващащ, той също е база по дефиниция. Ако не е обхващащ, е възможно да се добавят един или повече вектори, за да стане обхващащ, и следователно да се превърне в база.</li>
    </ul>
  </li>
  <li>
    <p><strong>Предложение 2.13:</strong> Да предположим, че V е крайномерно и U е подпространство на V. Тогава съществува подпространство W на V, такова че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>V</mi>
              <mo>=</mo>
              <mi>U</mi>
              <mo>⊕</mo>
              <mi>W</mi>
            </mrow>
            <annotation encoding="application/x-tex">V = U \oplus W</annotation>
          </semantics>
        </math></span>.</p>
    <ul>
      <li>Интуитивно това има смисъл, тъй като V е крайномерно по <strong>P2.7</strong> U трябва да е крайномерно пространство, с база <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>U</mi>
                  <mi>b</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">U_{b}</annotation>
            </semantics>
          </math></span>, която също е в V. Разширяването на базата на U с допълнителни вектори, за да се направи база на V, също е възможно (според теоремата по-горе). Обхватът на допълнителните вектори описва ново векторно пространство W.</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="размерност"></a></a>
<h3>Размерност<a href="#размерност" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Изкушаващо е да се дефинира размерността като дължината на една база. Въпреки това, крайномерно векторно пространство има много бази. Тази дефиниция ще изисква всички бази да имат една и съща дължина. Оказва се, че това е вярно.</p>
  </li>
  <li>
    <p><strong>Теорема:</strong> Всички бази на крайномерно векторно пространство имат една и съща дължина.</p>
    <ul>
      <li>Интуитивно това е вярно въз основа на дефиницията за линейна независимост и база. Ако беше възможно да се премахне вектор от списък и този списък от вектори да остане база, това би означавало, че списъкът от вектори не е линейно независим.
        <ul>
          <li>По същия начин, не би било възможно да се добавят вектори към обхващащ списък от линейно независими вектори и да се запази линейната независимост.</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>notes</category>
            <category>math</category>
            <category>ladr</category>
            <enclosure url="https://doich.in/bg//images/2024-09-12_linear_algebra_done_right_chapter_2/ladr_chapter_2_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Глава 1 - Векторни Пространства]]></title>
            <link>https://doich.in/bg/posts/2024-09-11_linear_algebra_done_right_chapter_1</link>
            <guid isPermaLink="false">2024-09-11_linear_algebra_done_right_chapter_1</guid>
            <pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Глава е уводна и обхваща комплексни числа, векторна алгебра, основни свойства на векторни пространства и подпространства.]]></description>
            <content:encoded><![CDATA[<a href="#undefined"><a class="toc-anchor" id="векторни-пространства"></a></a>
<h3>Векторни Пространства<a href="#векторни-пространства" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>Линейната алгебра изучава линейните преобразувания в крайномерни векторни пространства.</li>
</ul><a href="#undefined"><a class="toc-anchor" id="комплексни-числа"></a></a>
<h3>Комплексни Числа<a href="#комплексни-числа" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Формално обозначение</p>
    <ul>
      <li>C = { a + bi: a, b ∈ R}</li>
      <li>Множеството на комплексните числа е множеството от числата a и b, които са елементи на реалните числа, където i обозначава квадратния корен от -1.</li>
    </ul>
  </li>
  <li>
    <p>Обичайните правила за умножение в алгебрата важат</p>
  </li>
  <li>
    <p>Обичайните свойства като комутативност, асоциативност, идентичности, адитивен обрат, мултипликативен обрат и дистрибутивно свойство важат</p>
  </li>
  <li>
    <p>Напред <strong>F</strong> обозначава <strong>R</strong> или <strong>C</strong></p>
    <ul>
      <li>Полезно за теореми, които се прилагат както за <em>R</em>, така и за <em>C</em></li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="дефиниция-на-векторно-пространство"></a></a>
<h3>Дефиниция на Векторно Пространство<a href="#дефиниция-на-векторно-пространство" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Два примера <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi>R</mi>
                <mn>2</mn>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">R^2</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>R</mi>
                  <mn>2</mn>
                </msup>
                <mo>=</mo>
                <mrow>
                  <mo stretchy="false">(</mo>
                  <mi>x</mi>
                  <mo separator="true">,</mo>
                  <mi>y</mi>
                  <mo stretchy="false">)</mo>
                  <mo>:</mo>
                  <mi>x</mi>
                  <mo separator="true">,</mo>
                  <mi>y</mi>
                  <mo>∈</mo>
                  <mi>R</mi>
                </mrow>
              </mrow>
              <annotation encoding="application/x-tex">R^2 = {(x, y): x, y \in R}</annotation>
            </semantics>
          </math></span>
        <ul>
          <li>Векторното пространство <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msup>
                      <mi>R</mi>
                      <mn>2</mn>
                    </msup>
                  </mrow>
                  <annotation encoding="application/x-tex">R^2</annotation>
                </semantics>
              </math></span>, което може да се разглежда като равнина</li>
        </ul>
      </li>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>R</mi>
                  <mn>3</mn>
                </msup>
                <mo>=</mo>
                <mrow>
                  <mo stretchy="false">(</mo>
                  <mi>x</mi>
                  <mo separator="true">,</mo>
                  <mi>y</mi>
                  <mo separator="true">,</mo>
                  <mi>z</mi>
                  <mo stretchy="false">)</mo>
                  <mo>:</mo>
                  <mi>x</mi>
                  <mo separator="true">,</mo>
                  <mi>y</mi>
                  <mo separator="true">,</mo>
                  <mi>z</mi>
                  <mo>∈</mo>
                  <mi>R</mi>
                </mrow>
              </mrow>
              <annotation encoding="application/x-tex">R^3 = {(x, y, z): x, y, z \in R}</annotation>
            </semantics>
          </math></span>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msup>
                      <mi>R</mi>
                      <mn>3</mn>
                    </msup>
                  </mrow>
                  <annotation encoding="application/x-tex">R^3</annotation>
                </semantics>
              </math></span> може да се счита за обикновено пространство</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Списък</strong> с дължина <em>n</em> е подредена колекция от <em>n</em> обекта, които може да са числа или други списъци</p>
    <ul>
      <li>Понякога се нарича <em>n-торка</em></li>
      <li>Списъците винаги имат крайна дължина, дори и да не е отбелязана</li>
      <li>Списък с дължина 0 е <strong>()</strong></li>
      <li>Списъците са равни, ако имат еднаква дължина, същите елементи в същия ред</li>
    </ul>
  </li>
  <li>
    <p>Списъците се различават от множествата по два начина:</p>
    <ul>
      <li>Редът има значение</li>
      <li>Повторенията са позволени</li>
    </ul>
  </li>
  <li>
    <p>Списък може да представлява вектор</p>
    <ul>
      <li>Например, вектор <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>R</mi>
                  <mn>2</mn>
                </msup>
              </mrow>
              <annotation encoding="application/x-tex">R^2</annotation>
            </semantics>
          </math></span> <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>x</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <msub>
                  <mi>x</mi>
                  <mn>2</mn>
                </msub>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(x_{1}, x_{2})</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p>Множеството на всички възможни списъци в <strong>F</strong> може да се опише като:</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msup>
                  <mi>F</mi>
                  <mi>n</mi>
                </msup>
                <mo>=</mo>
                <mo stretchy="false">{</mo>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>x</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <msub>
                  <mi>x</mi>
                  <mi>n</mi>
                </msub>
                <mo stretchy="false">)</mo>
                <mo>:</mo>
                <msub>
                  <mi>x</mi>
                  <mi>j</mi>
                </msub>
                <mo>∈</mo>
                <mi>F</mi>
                <mo separator="true">;</mo>
                <mi>j</mi>
                <mo>=</mo>
                <mn>1</mn>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <mo separator="true">,</mo>
                <mi>n</mi>
                <mo stretchy="false">}</mo>
              </mrow>
              <annotation encoding="application/x-tex">F^n = \{(x_{1},\dots,x_{n}): x_{j} \in F; j = 1,\dots,n\}</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p>За опростяване на означенията често индексите в списъка се изпускат</p>
    <ul>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>x</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <msub>
                  <mi>x</mi>
                  <mn>2</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <msub>
                  <mi>x</mi>
                  <mi>n</mi>
                </msub>
                <mo stretchy="false">)</mo>
                <mo>+</mo>
                <mo stretchy="false">(</mo>
                <msub>
                  <mi>y</mi>
                  <mn>1</mn>
                </msub>
                <mo separator="true">,</mo>
                <msub>
                  <mi>y</mi>
                  <mn>2</mn>
                </msub>
                <mo separator="true">,</mo>
                <mo>…</mo>
                <msub>
                  <mi>y</mi>
                  <mi>n</mi>
                </msub>
                <mo stretchy="false">)</mo>
              </mrow>
              <annotation encoding="application/x-tex">(x_{1}, x_{2}, \dots x_{n}) + (y_{1}, y_{2}, \dots y_{n})</annotation>
            </semantics>
          </math></span></li>
      <li>може да се изрази като <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>x</mi>
                <mo>+</mo>
                <mi>y</mi>
              </mrow>
              <annotation encoding="application/x-tex">x + y</annotation>
            </semantics>
          </math></span>, където x и y обозначават целия списък и събирането все още се извършва по елементи</li>
    </ul>
  </li>
  <li>
    <p>В специалния случай на <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi>R</mi>
                <mn>2</mn>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">R^2</annotation>
          </semantics>
        </math></span> можем да визуализираме събирането на вектори</p>
  </li>
</ul>
<p>
  <img src="/images/2024-09-11_linear_algebra_done_right_chapter_1/vector_sum.png" alt="Vector Sum">
</p>
<ul>
  <li>Умножението на вектори в <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
        <semantics>
          <mrow>
            <msup>
              <mi>F</mi>
              <mi>n</mi>
            </msup>
          </mrow>
          <annotation encoding="application/x-tex">F^n</annotation>
        </semantics>
      </math></span> може да бъде подобно определено като умножение по елементи на координатите за получаване на друг вектор
    <ul>
      <li>Въпреки това, това определение не е особено полезно
        <ul>
          <li><strong>Скалярно Умножение</strong> е по-полезната версия, при която умножаваме вектор със скаларно число</li>
          <li>В <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <msup>
                      <mi>R</mi>
                      <mn>2</mn>
                    </msup>
                  </mrow>
                  <annotation encoding="application/x-tex">R^2</annotation>
                </semantics>
              </math></span> има полезна геометрична интерпретация</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
<p>
  <img src="/images/2024-09-11_linear_algebra_done_right_chapter_1/scalar_multiplication.png" alt="Scalar Multiplication">
</p>
<ul>
  <li>
    <p><strong>Събирането</strong> в <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi>F</mi>
                <mi>n</mi>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">F^n</annotation>
          </semantics>
        </math></span> е комутативно, асоциативно и има идентичност (0)</p>
    <ul>
      <li>Всеки елемент има адитивен обрат</li>
    </ul>
  </li>
  <li>
    <p><strong>Скалярното Умножение</strong> в <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msup>
                <mi>F</mi>
                <mi>n</mi>
              </msup>
            </mrow>
            <annotation encoding="application/x-tex">F^n</annotation>
          </semantics>
        </math></span> е асоциативно, а 1 действа като мултипликативна идентичност</p>
  </li>
  <li>
    <p>И двете са свързани с дистрибутивни свойства</p>
  </li>
  <li>
    <p><strong>Векторно Пространство</strong> е множество V заедно с <strong>събиране</strong> и <strong>скаларно умножение</strong>, при които гореспоменатите свойства са удовлетворени</p>
    <ul>
      <li>Векторно пространство над <em>R</em> често се нарича <em>Реално Векторно Пространство</em></li>
      <li>Векторно пространство над <em>C</em> често се нарича <em>Комплексно Векторно Пространство</em></li>
      <li>Елементите на векторното пространство се наричат <strong>вектори</strong> или <strong>точки</strong></li>
    </ul>
  </li>
  <li>
    <p>Не всички векторни пространства се състоят от списъци</p>
    <ul>
      <li>Векторните пространства могат да се състоят от функции на <em>F</em>, а не списъци</li>
      <li>В общия случай, векторните пространства са абстрактни обекти, чиито елементи могат да бъдат списъци, функции или странни обекти</li>
    </ul>
  </li>
  <li>
    <p>Полином <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>p</mi>
              <mo>:</mo>
              <mi>F</mi>
              <mo>→</mo>
              <mi>F</mi>
            </mrow>
            <annotation encoding="application/x-tex">p: F \to F</annotation>
          </semantics>
        </math></span> също изразява векторно пространство, където коефициентите на полинома са в <em>F</em></p>
    <ul>
      <li>Това е така, защото полиномите удовлетворяват гореспоменатите свойства</li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="свойства-на-векторните-пространства"></a></a>
<h3>Свойства на Векторните Пространства<a href="#свойства-на-векторните-пространства" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>P1.2</strong> Векторното пространство има уникална адитивна идентичност</p>
  </li>
  <li>
    <p><strong>P1.3</strong> Всеки елемент във векторното пространство има уникален адитивен обрат</p>
    <ul>
      <li>Адитивният обрат на <em>v</em> се обозначава <em>-v</em></li>
    </ul>
  </li>
  <li>
    <p>За останалата част от книгата, V обозначава векторно пространство над F</p>
  </li>
  <li>
    <p><strong>P1.4</strong> <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mn>0</mn>
              <mi>v</mi>
              <mo>=</mo>
              <mn>0</mn>
              <mo>:</mo>
              <mi mathvariant="normal">∀</mi>
              <mi>v</mi>
              <mo>∈</mo>
              <mi>V</mi>
            </mrow>
            <annotation encoding="application/x-tex">0v = 0: \forall v \in V</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Всеки вектор <em>v</em>, умножен по нула, дава нулевия вектор</li>
    </ul>
  </li>
  <li>
    <p><strong>P1.5</strong> <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mn>0</mn>
              <mi>a</mi>
              <mo>=</mo>
              <mn>0</mn>
              <mo>:</mo>
              <mi mathvariant="normal">∀</mi>
              <mi>a</mi>
              <mo>∈</mo>
              <mi>F</mi>
            </mrow>
            <annotation encoding="application/x-tex">0a = 0: \forall a \in F</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Всеки скалар a, умножен по нула, дава нулевия вектор</li>
    </ul>
  </li>
  <li>
    <p><strong>P1.6</strong> <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mo stretchy="false">(</mo>
              <mo>−</mo>
              <mn>1</mn>
              <mo stretchy="false">)</mo>
              <mi>v</mi>
              <mo>=</mo>
              <mo>−</mo>
              <mi>v</mi>
              <mo>:</mo>
              <mi mathvariant="normal">∀</mi>
              <mi>v</mi>
              <mo>∈</mo>
              <mi>V</mi>
            </mrow>
            <annotation encoding="application/x-tex">(-1)v = -v: \forall v \in V</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Умножаването на вектор <em>v</em> по <em>-1</em> води до адитивния обрат <em>-v</em></li>
    </ul>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="подпространства"></a></a>
<h3>Подпространства<a href="#подпространства" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p>Подмножество <em>U</em> на <em>V</em> се нарича <strong>подпространство</strong> на <em>V</em>, ако <em>U</em> също е векторно пространство, използвайки същото събиране и умножение като в V.</p>
  </li>
  <li>
    <p>За да задоволява <em>U</em> изискваните свойства на векторното пространство:</p>
    <ul>
      <li><strong>адитивна идентичност</strong>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mn>0</mn>
                    <mo>∈</mo>
                    <mi>U</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">0 \in U</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
      <li><strong>затворено под събиране</strong>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>u</mi>
                    <mo separator="true">,</mo>
                    <mi>v</mi>
                    <mo>∈</mo>
                    <mi>U</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">u, v \in U</annotation>
                </semantics>
              </math></span> означава, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>u</mi>
                    <mo>+</mo>
                    <mi>v</mi>
                    <mo>∈</mo>
                    <mi>U</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">u + v \in U</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
      <li><strong>затворено под скаларно умножение</strong>
        <ul>
          <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>a</mi>
                    <mo>∈</mo>
                    <mi>F</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">a \in F</annotation>
                </semantics>
              </math></span> и <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>u</mi>
                    <mo>∈</mo>
                    <mi>U</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">u \in U</annotation>
                </semantics>
              </math></span> означава, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
                <semantics>
                  <mrow>
                    <mi>a</mi>
                    <mi>u</mi>
                    <mo>∈</mo>
                    <mi>U</mi>
                  </mrow>
                  <annotation encoding="application/x-tex">au \in U</annotation>
                </semantics>
              </math></span></li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <p><em>{0}</em> е най-малкото подмножество на <em>V</em></p>
  </li>
  <li>
    <p>V е най-голямото подмножество на <em>V</em></p>
  </li>
</ul><a href="#undefined"><a class="toc-anchor" id="суми-и-директни-суми"></a></a>
<h3>Суми и Директни Суми<a href="#суми-и-директни-суми" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<ul>
  <li>
    <p><strong>Сумата</strong> на <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>…</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">U_{1}\dots U_{m}</annotation>
          </semantics>
        </math></span>, обозначена <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>+</mo>
              <mo>⋯</mo>
              <mo>+</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">U_{1}+\dots+U_{m}</annotation>
          </semantics>
        </math></span>, се дефинира като множеството от всички възможни суми на елементите на <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>…</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">U_{1}\dots U_{m}</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Сумата също е подпространство на V</li>
    </ul>
  </li>
  <li>
    <p><strong>Директната сума</strong> на <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>…</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">U_{1}\dots U_{m}</annotation>
          </semantics>
        </math></span> е когато всеки елемент на V може да бъде написан уникално като сума <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>u</mi>
                <mn>1</mn>
              </msub>
              <mo>+</mo>
              <mo>…</mo>
              <msub>
                <mi>u</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">u_{1} + \dots u_{m}</annotation>
          </semantics>
        </math></span></p>
    <ul>
      <li>Също се записва като: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>u</mi>
                  <mn>1</mn>
                </msub>
                <mo>⊕</mo>
                <msub>
                  <mi>u</mi>
                  <mn>2</mn>
                </msub>
                <mo>⊕</mo>
                <mo>⋯</mo>
                <mo>⊕</mo>
                <msub>
                  <mi>u</mi>
                  <mi>m</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">u_{1} \oplus u_{2} \oplus \dots \oplus u_{m}</annotation>
            </semantics>
          </math></span></li>
    </ul>
  </li>
  <li>
    <p><strong>P1.8</strong> Да предположим, че <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>…</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">U_{1} \dots U_{m}</annotation>
          </semantics>
        </math></span> са подпространства на V. Тогава <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mi>V</mi>
              <mo>=</mo>
              <msub>
                <mi>U</mi>
                <mn>1</mn>
              </msub>
              <mo>+</mo>
              <mo>⋯</mo>
              <mo>+</mo>
              <msub>
                <mi>U</mi>
                <mi>m</mi>
              </msub>
            </mrow>
            <annotation encoding="application/x-tex">V = U_{1} + \dots + U_{m}</annotation>
          </semantics>
        </math></span> ако и само ако са изпълнени следните условия:</p>
    <ol>
      <li><span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <mi>V</mi>
                <mo>=</mo>
                <msub>
                  <mi>U</mi>
                  <mn>1</mn>
                </msub>
                <mo>+</mo>
                <mo>⋯</mo>
                <mo>+</mo>
                <msub>
                  <mi>U</mi>
                  <mi>m</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">V = U_{1} + \dots + U_{m}</annotation>
            </semantics>
          </math></span></li>
      <li>единственият начин да се напише 0 като сума <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>u</mi>
                  <mn>1</mn>
                </msub>
                <mo>+</mo>
                <mo>⋯</mo>
                <mo>+</mo>
                <msub>
                  <mi>u</mi>
                  <mi>m</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">u_{1} + \dots + u_{m}</annotation>
            </semantics>
          </math></span>, където всеки <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>u</mi>
                  <mi>j</mi>
                </msub>
                <mo>∈</mo>
                <msub>
                  <mi>U</mi>
                  <mi>j</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">u_{j} \in U_{j}</annotation>
            </semantics>
          </math></span>, е като всички <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML">
            <semantics>
              <mrow>
                <msub>
                  <mi>u</mi>
                  <mi>j</mi>
                </msub>
              </mrow>
              <annotation encoding="application/x-tex">u_{j}</annotation>
            </semantics>
          </math></span> са равни на 0.</li>
    </ol>
  </li>
</ul>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>notes</category>
            <category>math</category>
            <category>ladr</category>
            <enclosure url="https://doich.in/bg//images/2024-09-11_linear_algebra_done_right_chapter_1/chapter_1_cover.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Колоездене по Северното Крайбрежие на Холандия]]></title>
            <link>https://doich.in/bg/posts/2024-06-07_biking_netherlands_north_sea_coast</link>
            <guid isPermaLink="false">2024-06-07_biking_netherlands_north_sea_coast</guid>
            <pubDate>Fri, 07 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Холандското крайбрежие на Северно море предлага красив и релаксиращ маршрут за колоездене. В тази статия споделям някои впечатления от колоездене от Амстердам до Харлем до Ден Хелдер в северната част на полуострова.]]></description>
            <content:encoded><![CDATA[
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/north_sea_sunset.jpg" alt="Залез над Северно Море">
</p>
<p>С настъпването на топлото време, настъпи и подходящ момент за поредното приключение с колелета. Този път реших да се отправя на север по крайбрежието на Северно море по маршрута <a href="https://en.eurovelo.com/ev12">EuroVelo 7</a>.</p>
<p>EuroVelo 7 започва в Шотландия и следва брега на Северно море през Франция, Белгия, Нидерландия, Дания и продължава чак до северна Норвегия. Секцията, преминаваща през Северна Холандия, води през някои от най-красивите природни резервати в Нидерландия и обещава да предостави живописни пейзажи.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/route_map.jpg" alt="Маршрут за колоездене">
</p>
<p>Наехме два туристически велосипеда от <a href="https://a-bike.nl/bike-tours-amsterdam/">A-Bike Rentals</a> и започнахме първия етап на пътуването от Амстердам до Харлем. Велосипедите които наехме, не бяха в перфектно състояние, но бяха доста качествени. Туристическите велосипеди определено се движат по-бързо от обикновените градски велосипеди, които се отдават под наем навсякъде в Амстердам.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/spaarne_river_haarlem.jpg" alt="Река Спаарне, Харлем">
</p>
<p>Първата забележителност по пътя беше Харлем. Градът е построен от двете страни на <a href="https://en.wikipedia.org/wiki/Spaarne">река Спаарне</a> и функционира като своеобразно разширение на самия Амстердам. Старата градска част е красива, но по време на това пътуване имахме време само за бърз обяд край реката в <a href="http://oerkap.nl/menukaart/">Oerkap</a>.</p>
<p>Маршрутът ни продължи през <a href="https://en.wikipedia.org/wiki/Bloemendaal">Блоемендал</a>, най-богатият град в Нидерландия, където накрая се качихме на EuroVelo 12. Пейзажът бързо се променя от зает градски пейзаж, към лесисти тревни площи с отделни конни ферми.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/bloemingdaal_horse_ranch.jpg" alt="Bloemingdaal Horse Ranch">
</p>
<p>Продължавайки на север, скоро достигнахме канала близо до Иймуйден, където взехме удобен ферибот. В много места по света фериботите могат да са бавни, но в този случай ние просто се качихме през велосипедния терминал и скоро бяхме от другата страна на канала.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/ferry_near_ijmuiden.jpg" alt="Ferry Near Ijmuiden">
</p>
<p>Маршрутът продължава на север през околностите на Вийк ан Зее. Google Maps ни подведе тук, като се опита да ни накара да пресечем през завода на Tata Steel, разположен от тази страна на канала. Истинският път прави малък обход и минава около завода.</p>
<p>За остатъка от пътуването има много малко населени места. Повечето от велосипедната пътека остава в защитения дюнен парк, който се простира по крайбрежието. Понякога се сблъсквахме с неочаквани диви животни, като това Горско Говедо, отпочиващо настрани от велосипедната пътека.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/highland_cows_north_holand.jpg" alt="Highland Cows North Holland">
</p>
<p>Велосипедната пътека е с високо качество в по-голямата част от маршрута, но понякога се натъквахме на наводнени участъци.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/flooded_path.jpg" alt="Flooded Path">
</p>
<p>Като напреднахме по-на север, дюните отстъпиха място на по-тревист пейзаж.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/north_holland_grass.jpg" alt="North Holland Grass">
</p>
<p>Равнинната земна маса на района беше защитена от висока дига вдълж морския бряг, осигурявайки място за няколко по-малки езера и конни ферми в пространството на тревните площи.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/view_from_the_dike.jpg" alt="View from the Dike">
</p>
<p>Маршрутът, който избрахме, е 103 километра дълъг и отне повече от 8 часа с колело. Докато се приближавахме до Ден Хелдер, слънцето започна да залязва вечерта.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/north_sea_sunset_2.jpg" alt="North Sea Sunset 2">
</p>
<p>Пристигнахме в Ден Хелдер сравнително късно през нощта. На сутринта разгледахме града. Има фериботен терминал, който може да ви отведе до Фризийските острови. Тук има и военноморски музей, както и холандска военноморска база.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/den_helder_ship.jpg" alt="Den Helder Ship">
</p>
<p>Освен няколко интересни кораба на показ, имаше също и дизелова подводница от времето на Студената война, която може да бъде разгледана отвътре.</p>
<p>
  <img src="/images/2024-06-07_biking_netherlands_north_sea_coast/den_helder_submarine.jpg" alt="Den Helder Submarine">
</p>
<p>Пътуването обратно до Амстердам отнема по-малко от 90 минути с влак. Холандските влакове са добре оборудвани за превоз на велосипеди извън час пик.</p>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>life</category>
            <category>Netherlands</category>
            <enclosure url="https://doich.in/bg//images/2024-06-07_biking_netherlands_north_sea_coast/north_sea_sunset.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Хвърчила над Шевенинген]]></title>
            <link>https://doich.in/bg/posts/2022-09-29_kites_over_scheveningen</link>
            <guid isPermaLink="false">2022-09-29_kites_over_scheveningen</guid>
            <pubDate>Thu, 29 Sep 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Шевенинген е най-популярният плажен курорт в Нидерландия. Той също така е част от Хага (столицата на Нидерландия). Като чужденец, аз нямах представа, че той съществува. В тази статия споделям няколко впечатления от посещението ми на Международния фестивал на хвърчилата през 2022 г., който се проведе там.]]></description>
            <content:encoded><![CDATA[
<p>
  <img src="/images/2022-09-29_kites_over_scheveningen/scheveningen_beach_view.jpg" alt="Амстердамски Канал">
</p>
<p>Плажът Шевенинген е достъпен чрез градския транспорт отвсякъде в Хага. Ние намерихме <a href="https://denhaag.com/en/calendar/international-kite-festival-scheveningen">обявлението</a>, че тук ще се проведе международен фестивал на хвърчилата и решихме, че това е добър повод да го посетим.</p>
<p>Шевенинген като място беше доста неочаквано за мен. Плажната зона е заобиколена от красиви сгради, алея, добре разположени плажни барове и широка пясъчна ивица. Той е вдъхновен от всеки друг град с алея. Въпреки това, има две впечатляващи особености.</p>
<p>На първо място, той е много добре организиран. Всяка друга алея на плажа, която съм посещавал, има по-скоро "органичен" дизайн на зоната. В сравнение с нещо като Боракай (Филипините), разликата е очевидна. Дори след известното почистване на Боракай, плажните барове заемат аномално голяма част от пясъка, пътеките до пясъка са тесни и неясни, а сградите около плажа архитектурно не съответстват една на друга.</p>
<p>Алеята е добре организирана и предлага някои интересни арт инсталации. Пясъчната зона е широка и се полагат усилия да се предотврати разширяването на плажните барове до водата. Освен това, сградите зад алеята са красиво проектирани и придават на мястото по-елегантно усещане в сравнение с други алеи по света. Сградата на задния план на горната снимка е <a href="https://en.wikipedia.org/wiki/Kurhaus_of_Scheveningen">хотел Kurhause</a>.</p>
<p>
  <img src="/images/2022-09-29_kites_over_scheveningen/scheveningen_statues.jpg" alt="Статуи в Шевенинген">
</p>
<p>Второто впечатляващо нещо за Шевенинген е, че не е веднага очевидно защо някой би го построил. Разположен на Северно море, Шевенинген има типичния холандски климат. Има постоянен студен вятър от север, който повдига пясъка и го удря в лицето. Плуването на плажа Шевенинген е като да правиш полярен скок, докато те насилствено ексфолират с пясъкоструй. Въпреки че вероятно е здравословно с умереност, това не е това, което обикновено очаквам от плажно преживяване.</p>
<p>
  <img src="/images/2022-09-29_kites_over_scheveningen/scheveningen_kites.jpg" alt="Хвърчила в Шевенинген">
</p>
<p>Въпреки че плажното преживяване може да е нетипично, то обяснява защо тази локация е избрана за домакин на фестивал на хвърчилата. Вятърът е постоянен, което прави малко вероятно събитието да е провал. Като случаен фен на хвърчилата, аз се наслаждавах да седя в плажно кафене за един час, да се наслаждавам на ограниченото слънце и да говоря с приятелите си. Имаха доста хвърчила от региона и това създаде приятен фон за деня.</p>
]]></content:encoded>
            <author>Дойчин Денчев</author>
            <category>life</category>
            <category>Netherlands</category>
            <category>Hague</category>
            <enclosure url="https://doich.in/bg//images/2022-09-29_kites_over_scheveningen/scheveningen_beach_view.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Преместване в Амстердам]]></title>
            <link>https://doich.in/bg/posts/2022-09-16-moving-to-amsterdam</link>
            <guid isPermaLink="false">2022-09-16-moving-to-amsterdam</guid>
            <pubDate>Fri, 16 Sep 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[След като си осигурих работа в Амстердам, аз и Даян се преместихме там. Преместването в град за по-дълъг период е доста различно от наемането на AirBnB за месец в дадена страна. В тази статия споделям моя опит от осигуряването на основните неща и настройването в новия град.]]></description>
            <content:encoded><![CDATA[
<p>
  <img src="/images/travel/2022-09-16-moving-to-amsterdam/moving-to-amsterdam-cover.jpg" alt="Amsterdam Canal">
</p>
<p>След като си осигурих работа в Амстердам, аз и Даян се преместихме там. Преместването в град за по-дълъг период е доста различно от наемането на AirBnB за месец в дадена страна. В тази статия споделям моя опит от осигуряването на основните неща и настройването в новия град.</p><a href="#undefined"><a class="toc-anchor" id="съдържание"></a></a>
<h2>Съдържание<a href="#съдържание" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<ul>
  <li><a href="#%D0%BD%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D0%BD%D0%B5-%D0%BD%D0%B0-%D0%B6%D0%B8%D0%BB%D0%B8%D1%89%D0%B5">Намиране на Жилище</a></li>
  <li><a href="#%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2-%D0%BE%D0%B1%D1%89%D0%B8%D0%BD%D0%B0%D1%82%D0%B0">Регистрация в Общината</a></li>
  <li><a href="#%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D1%8F%D0%BD%D0%B5-%D1%81-%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D1%82%D0%BE">Справяне с Времето</a></li>
  <li><a href="#%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82---%D0%BD%D0%B5-%D0%B5-%D0%BD%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D0%B0-%D0%BA%D0%BE%D0%BB%D0%B0">Транспорт - Не е Необходима Кола</a></li>
  <li><a href="#%D0%BF%D1%8A%D1%80%D0%B2%D0%B8-%D0%BF%D0%BE%D0%B3%D0%BB%D0%B5%D0%B4-%D0%BA%D1%8A%D0%BC-%D0%B3%D1%80%D0%B0%D0%B4%D0%B0">Първи Поглед към Града</a></li>
</ul><a href="#undefined"><a class="toc-anchor" id="намиране-на-жилище"></a></a>
<h2>Намиране на Жилище<a href="#намиране-на-жилище" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<p>Намирането на приличен апартамент в голям град по света може да бъде предизвикателство. Въпреки това, Амстердам се оказа най-труден за мен. Дий и аз наехме <a href="https://habsburg-legal-services.com/nl-relocation-moving-to-the-netherlands-help-on-arrival/">Habsburg Legal Services (HLS)</a>, за да помогнат с нашата проверка срещу приложението на закона на ЕС. За щастие се оказа, че те също предлагаха помощ при преместването, която включваше намирането на подходящо жилище. Моето очакване беше, че правителствените документи ще отнемат месеци за обработка, докато ние ще намерим апартамент, който ни харесва само за няколко седмици.</p>
<p>Това предположение беше неправилно.</p>
<p>Държавните документи бяха обработени сравнително бързо и в рамките на очакваното време. Намирането на апартамент отне два месеца.</p>
<p>За щастие, започнахме процеса рано. Нашият процес за търсене на апартамент беше следният. Дий и аз разглеждахме онлайн на уебсайтове като <a href="funda.nl/en">Funda</a>. Специално гледахме новите убяви. Като намерихме подходяш, препращахме на Ричард (който работи за HLS) за да кандидатства от наше име. В много случаи никога не получвахме обратна връзка от хората които рекламираха апартаментите. В случаите когато имаше ден на отворените врати, Ричард беше нашият човек на място и ни разхождаше с видео из апартаментите.</p>
<p>След деня на отворените врати следваше кръг за кандидатстване. Често предлагахме цена над поисканата и все пак не стигахме до финалния кръг на търга. В един случай предложихме 500 EUR над месечната поискана цена, както и 6 месеца предплатен наем, и пак не получихме обратна връзка.</p>
<p>В два случая, когато стигнахме до финалния кръг, трябваше да проведем видео интервю със собственика (нещо, което никога преди не бях правил). Достатъчно е да се каже, че успеваемостта ми при интервюиране за апартамент беше много по-ниска от тази при интервюиране за работа.</p>
<p>Общо взето, отне близо два месеца и над 100 кандидатури, за да намерим място, което ни харесва. Накрая се установихме в красивия (но скъп) квартал Оуд Зоуд (Стар Юг). Когато проучвахме апартамента по интернет, не бяхме особено въодушевени от него. Въпреки това, след като пристигнахме, се влюбихме в него и в уютния квартал, който го заобикаля.</p><a href="#undefined"><a class="toc-anchor" id="регистрация-в-общината"></a></a>
<h2>Регистрация в Общината<a href="#регистрация-в-общината" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<p>Като експат, пристигащ в Нидерландия, едно от първите неща, които трябва да направите, е да се регистрирате в Общината (муниципалния административен офис). Общината е институцията, която издава <a href="https://business.gov.nl/regulation/citizen-service-number/">граждански номер (BSN)</a>. BSN се използва при взаимодействие с почти всички правителствени услуги и нещо като българското ЕГН.</p>
<p>Поради кризата с бежанците от Украйна, общината в Амстердам беше претоварена, когато пристигнахме. Въпреки това, те успяха да ни прегледат документите в рамките на няколко месеца. По-впечатляващо обаче беше, че правителствените системи са проектирани с това предвид. Възможно е да се направи почти всичко, включително да се отвори местна банкова сметка и да се получава заплата, докато чакате BSN. Системата е проектирана с предвидена начална липса на BSN за експатите и се справя елегантно с това.</p><a href="#undefined"><a class="toc-anchor" id="справяне-с-времето"></a></a>
<h2>Справяне с Времето<a href="#справяне-с-времето" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<p>
  <img src="/images/travel/2022-09-16-moving-to-amsterdam/amsterdam-weather.jpg" alt="Времето в Амстердам">
</p>
<p>Преди да се преместя в Нидерландия, бях посетил страната два пъти като турист. И двете мои посещения бяха през лятото. Лятното време в Нидерландия е прекрасно. Повечето време температурите остават под 30 градуса по Целзий и дните са дълги, което прави следобедите и вечерите много приятни. Есенното и пролетното време са много дъждовни, но все пак могат да бъдат приятни.</p>
<p>Зимата е безспорно моят най-малко любим сезон тук. Зимните дни рядко стават достатъчно студени за сняг и често са кратки и облачни. Дългите периоди от последователни дъждовни и тъмни дни наистина влошават моето настроение.</p>
<table>
  <thead>
    <tr>
      <th>Месец</th>
      <th>Валежи (Милиметри)</th>
      <th>Дни с Валежи</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Януари</td>
      <td>65</td>
      <td>12</td>
    </tr>
    <tr>
      <td>Февруари</td>
      <td>50</td>
      <td>10</td>
    </tr>
    <tr>
      <td>Март</td>
      <td>50</td>
      <td>10</td>
    </tr>
    <tr>
      <td>Април</td>
      <td>40</td>
      <td>9</td>
    </tr>
    <tr>
      <td>Май</td>
      <td>55</td>
      <td>9</td>
    </tr>
    <tr>
      <td>Юни</td>
      <td>65</td>
      <td>10</td>
    </tr>
    <tr>
      <td>Юли</td>
      <td>80</td>
      <td>11</td>
    </tr>
    <tr>
      <td>Август</td>
      <td>100</td>
      <td>12</td>
    </tr>
    <tr>
      <td>Септември</td>
      <td>85</td>
      <td>11</td>
    </tr>
    <tr>
      <td>Октомври</td>
      <td>85</td>
      <td>12</td>
    </tr>
    <tr>
      <td>Ноември</td>
      <td>85</td>
      <td>13</td>
    </tr>
    <tr>
      <td>Декември</td>
      <td>80</td>
      <td>14</td>
    </tr>
    <tr>
      <td>Година</td>
      <td>850</td>
      <td>133</td>
    </tr>
  </tbody>
</table>
<p>Естествено, бързата <a href="https://www.climatestotravel.com/climate/netherlands/amsterdam">проверка на фактите</a> за данните за дъжда показва, че вали толкова много през лятото, колкото и през зимата. Изглежда, че по-топлите и светлите дни през лятото правят цялата разлика.</p><a href="#undefined"><a class="toc-anchor" id="транспорт---не-е-необходима-кола"></a></a>
<h2>Транспорт - Не е Необходима Кола<a href="#транспорт---не-е-необходима-кола" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<p>Придвижването из града е доста лесно. Има обширна мрежа от трамваи, автобуси и метро. Освен това, инфраструктурата за колоездене е световно известна. Наемането на колело е много лесно дори за дългосрочно ползване. Популярен вариант е Swap Fiets (fiets означава колело на холандски).</p>
<p>
  <img src="/images/travel/2022-09-16-moving-to-amsterdam/amsterdam-swapfiets.jpg" alt="Amsterdam Swapfiets">
</p>
<p>На горната снимка съм паркирал незаконно моето колело <a href="https://swapfiets.com/">Swapfiets</a> до канал. Друга опция е просто да купите употребявано колело от един от градските пазари или велосипедни магазини. Колело с 7 скорости в добро състояние може да се намери за по-малко от 200 EUR.</p><a href="#undefined"><a class="toc-anchor" id="първи-поглед-към-града"></a></a>
<h2>Първи Поглед към Града<a href="#първи-поглед-към-града" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h2>
<p>Амстердам е красив град. Едно нещо, което постоянно ме удивлява, е че се наслаждавам на града, дори когато върша най битови задачи. Дори когато се прибирам от работа в дъждовен ден или като преминавам през час пик с колело, намирам удоволствие в това преживяване. Това е толкова впечатляващ контрапункт на моя опит от пътуването в САЩ. Навигирането през час пик в околностите на Вашингтон или Бостън винаги беше неприятно преживяване.</p>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>life</category>
            <category>Netherlands</category>
            <enclosure url="https://doich.in/bg//images/travel/2022-09-16-moving-to-amsterdam/moving-to-amsterdam-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Първи Впечатления от Google Cloud]]></title>
            <link>https://doich.in/bg/posts/2022-01-18-first-impressions-google-cloud</link>
            <guid isPermaLink="false">2022-01-18-first-impressions-google-cloud</guid>
            <pubDate>Tue, 18 Jan 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Като част от стартирането на този блог, реших да проверя Google Cloud и да получа основно усещане за начина, по който работи. TLDR е, че дори след 14 години на пазара, той все още изглежда сравнително недовършен и може да бъде объркващ за новите потребители. Много от основните функции са или дублирани, или имат някакъв вид "бета" статус около тях, което ги прави по-трудни за използване от необходимото (особено за първи път потребители).]]></description>
            <content:encoded><![CDATA[
<p>
  <img src="/images/tech/2022-01-18-first-impressions-google-cloud/cloud-image.jpeg" alt="Cloud Image">
</p>
<p>Тази година си взех малко почивка от корпоративна Америка и помислих, че ще използвам шанса да стартирам този блог. По препоръка на приятел, написах бърза страница, използвайки <a href="https://nextjs.org/">next.js</a>, съставих малко основен CSS и дойде времето за разпространение.</p>
<p>Въпреки че има много опции за хостинг на статично съдържание, помислих да опитам Google Cloud. Той има репутацията на облак с най-сложното обслужване и бях заинтригуван да го проверя. Моето общо впечатление е, че има някои хубави услуги на платформата на Google. Въпреки това, може да бъде малко твърде сложно и дори 14 години по-късно е лесно да се натъкнете на бета функции и недовършени услуги.</p><a href="#undefined"><a class="toc-anchor" id="rules-of-engagement"></a></a>
<h3>Rules of Engagement<a href="#rules-of-engagement" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<p>Тъй като проучвах предлаганите услуги, реших да проверя всички услуги, които биха били актуални за <a href="https://jamstack.org/">Jamstack</a> разпространението на блога.</p>
<ul>
  <li>Регистрация на домейн</li>
  <li>Безсървърен хостинг</li>
  <li>CDN</li>
</ul>
<div class="info_note">
  <p><strong>Защо безсървърен хостинг вместо Google Cloud Storage Bucket?</strong><br>Въпреки че текущата итерация на уебсайта се състои от статично съдържание, може да добавя повече динамични функции в бъдеще. Разглеждам тази имплементация като известен вид научноизследователски проект. Google Cloud Storage Bucket (еквивалент на S3) определено е прякото решение тук.</p>
</div><a href="#undefined"><a class="toc-anchor" id="регистрация-на-домейн"></a></a>
<h3>Регистрация на домейн<a href="#регистрация-на-домейн" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<p>Преди няколко години случайно купих домейна <code>doich.in</code> на <a href="https://www.godaddy.com/">GoDaddy</a>. Реших, че добра първа стъпка за учене би била да го прехвърля в Google Cloud. Регистрирането на домейн е доста лесно с всички регистратори, които съм използвал досега. Google има услуга, наречена <a href="https://domains.google.com/">Google Domains</a>, и на пръв поглед изглеждаше като това, от което имам нужда. Изтеглих CLI на cloud tools, следвах съответния документационен наръчник и завърших процеса успешно. Тогава разбрах, че е малко по-сложно от обикновено.</p>
<p>
  <strong>Проблемът с дублираните функции</strong>
  Google има две услуги, които ви позволяват да регистрирате и управлявате домейни. Google Domains наистина е такава услуга. Въпреки това, има малко по-интегрирана версия, наречена <a href="https://console.cloud.google.com/net-services/domains/registrations/list?project=sercret-gold-fis-1552598193540">Cloud Domains</a>. Въпреки че Google Domains изглежда работи добре с Google Cloud, това е по-малко интегрираната версия за облак. Това беше моето първо взаимодействие с Google Cloud и имах усещането, че съм взел лошо решение и съм избрал по-лошия от двата продукта.
</p>
<p>Както всеки истински инженер, след като направих нещото, отидох да прочета <a href="https://cloud.google.com/domains/docs/overview">съответната документация</a> за Cloud Domains, за да получа по-добро усещане за това, от което съм изпуснал. Тук попаднах на този скъпоценен камък:</p>
<p>
  <img src="/images/tech/2022-01-18-first-impressions-google-cloud/cloud-domains-support.png" alt="Cloud Domains Export Settings">
</p>
<p>Явно тази игра вече е свършена. Импортирането на домейни от Cloud Domains в Google Domains се поддържа, но обратното не се поддържа. Чувства се зле...</p>
<div class="info_note">
  <p>
    <strong>Каква е разликата?</strong>
    Cloud domains е проектиран около концепцията за проект. Домейнът е свързан с проект и достъпът може да се управлява чрез обичайните инструменти за IAM. От друга страна, управлението на домейни и DNS управлението са разделени на две услуги в GCP, за по-фин контрол. Google Domains, от друга страна, е изграден около концепцията за потребител и има интегрирано безплатно DNS управление.
  </p>
</div>
<div class="info_note">
  <p><strong>Коя опция наистина искате?</strong><br>Като самостоятелен разработчик, Google Domains вероятно е най-добрият ви избор (особено тъй като идва с безплатен DNS). Освен това, въпреки че документацията не ми го направи ясно, след известно време, моята регистриран в Google Domains домейн също се появи в Cloud Domains и работеше безпроблемно с други услуги.</p>
</div><a href="#undefined"><a class="toc-anchor" id="хостинг-без-сървър"></a></a>
<h3>Хостинг без сървър<a href="#хостинг-без-сървър" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<p>След като уредих въпроса с името на домейна, преминах към търсенето на подходящо хостинг решение. Тук трябваше да направя още един избор между три услуги в тази област:</p>
<p>
  <img src="/images/tech/2022-01-18-first-impressions-google-cloud/cloud-serverless.png" alt="Cloud Serverless">
</p>
<p>Както показва булевият знак до <code>Cloud Run</code>, аз се спрях на това. Въпреки това, трябваше да прочета малко за различните опции, които се предлагат тук. <code>Cloud Functions</code> изглежда най-близо до AWS Lambdas. Тя ви позволява да изпълнявате "малки функции с една цел, които реагират на облачни събития". Въпреки че изглежда като най-лекото решение, аз нямах функции за изпълнение за моя случай с "блога". От другата страна на спектъра имаме <code>Google App Engine</code>, което изглежда е насочено повече към разполагане на пълностакови приложения. От трите, <code>Cloud Run</code> изглежда като най-новото предложение и позволява изпълнението на контейнер като разглобяем артефакт. Въпреки че е абсолютно излишно да се изпълнява статичен блог от контейнер, той има много щедър безплатен план за 2 милиона заявки, така че аз избрах този.</p>
<p>Въпреки че съм доста доволен от лекотата на използване на <code>Cloud Run</code>, това остави странен вкус в устата ми. Чувства се като конкуриращо се с други услуги на Google Cloud и не дава гаранции, че в бъдеще няма да има нова услуга <code>Google Giga Scale</code> (или нещо подобно), която да я замени.</p>
<p>
  Освен това, Cloud Run все още се чувства като продукт в бета версия, който се разширява с функции.
  
  <img src="/images/tech/2022-01-18-first-impressions-google-cloud/cloud-run-map-domain.png" alt="Cloud Run Map Domain">
</p>
<p>Когато публикувах блога си, помислих, страхотно, тази част <code>Manage Custom Domains</code> е точно това, от което се нуждая. Тя буквално ми позволява да картографирам домейн директно от таблото за управление на cloud run. Дори намира домейна ми, въпреки че не използвам правилната облачна услуга! Това е страхотно!</p>
<p>
  <img src="/images/tech/2022-01-18-first-impressions-google-cloud/add-mapping.png" alt="Add Mapping">
</p>
<p>Но, след като стартирах картографирането, се появи индикатор, че се конфигурира. Има смисъл, промените в DNS записите отнемат време за разпространение. И след това индикаторът продължи малко по-дълго. И около 15 минути по-късно, когато проверих, той изчезна, като DNS записът не успя да се промени.</p>
<p>След като се мотаех из документацията за малко, забелязах, че това е бета услуга и не работи във всички региони. Всъщност, тя просто тихо се проваля, тъй като моят инстанс на cloud run е разположен в региона <code>us-east4</code>, който все още не се поддържа. Това не е голям проблем, но липсата на каквито и да било ограничения по време на конфигурационния процес беше доста изненадваща.</p><a href="#undefined"><a class="toc-anchor" id="cdn-и-картографиране-на-домейни"></a></a>
<h3>CDN и Картографиране на Домейни<a href="#cdn-и-картографиране-на-домейни" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<p>Дори с неуспешния опит за лесно картографиране на домейна, бях уверен, че се доближавам до края на процеса на настройка. Колко трудно би било да насоча A запис и да конфигурирам CDN около някакво статично съдържание?</p>
<p>Оказа се, много по-трудно от всичко досега. Процесът включваше настройка на редица мрежови услуги:</p>
<p>
  It turns out, far more difficult than everything so far. The process involved setting up a number of networking
  services:
</p>
<ul>
  <li>Конфигуриране на Статичен IP Адрес</li>
  <li>Конфигуриране на SSL Сертификат</li>
  <li>Конфигуриране на Балансир на Натоварването със споменатия SSL Сертификат и статичен IP Адрес</li>
  <li>Конфигуриране на DNS A запис обратно в портала Google Domains (различен от облачния портал)</li>
  <li>Конфигуриране на CDN</li>
</ul>
<p>Въпреки че не открих нищо твърде изненадващо в тези конфигурации, бях доста изненадан, че услугата <code>Cloud Run</code> нямаше конфигурационен пряк път за осъществяване на всичко това наведнъж. Определено изглежда, че частта за картографиране на домейни на услугата е посоката, в която се стремят, но е наистина бета и няма опция за CDN.</p><a href="#undefined"><a class="toc-anchor" id="заключение"></a></a>
<h3>Заключение<a href="#заключение" class="heading-link"><img src="/images/icons/link.svg" class="heading-link-image"></a></h3>
<p>Като цяло, когато става въпрос за тази част, Google Cloud определено се усещаше като изключително прекомерно за този случай на употреба. Просто исках един прост статичен уебсайт за моя блог. Като първокласен потребител на Google Cloud, преминах през лабиринта на документацията и завърших с много повече от това, което търсех. Вероятно ще променя настройката и може би ще избера нещо лесно и просто за конфигуриране като Cloud Flare CDN. От друга страна, почти всичко, което беше конфигурирано, се оказа безплатно за малък сайт като този. Единствената част, която в момента струва пари, е балансирът на натоварването, който има минимална такса независимо от употребата.</p>
<p>Вероятно ще продължа да разглеждам още малко и ще напиша друг блог пост, докато проучвам повече предложения за услуги.</p>
]]></content:encoded>
            <author>Doichin Denchev</author>
            <category>tech</category>
            <category>gcloud</category>
            <enclosure url="https://doich.in/bg//images/tech/2022-01-18-first-impressions-google-cloud/cloud-image.jpeg" length="0" type="image/jpeg"/>
        </item>
    </channel>
</rss>