﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?application progid="SMath Studio Desktop" version="0.98.6089.6946"?>
<regions>
  <settings>
    <identity>
      <id>85467bf7-0e0a-48ee-8428-2a5391166391</id>
      <revision>43</revision>
    </identity>
    <metadata lang="rus">
      <title>Интерполяция замкнутых кривых</title>
      <author>Denxc, Николай Чашников</author>
      <translator>Андрей Ивашов</translator>
    </metadata>
    <metadata lang="eng">
      <title>Interpolation of closed curves</title>
      <author>Denxc, Nikolai Chashnikov</author>
      <translator>Andrey Ivashov</translator>
    </metadata>
    <calculation>
      <precision>4</precision>
      <exponentialThreshold>5</exponentialThreshold>
      <fractions>decimal</fractions>
    </calculation>
    <pageModel active="true" printAreas="true" simpleEqualsOnly="false" printBackgroundImages="true">
      <paper id="1" orientation="Portrait" width="850" height="1100" />
      <margins left="39" right="39" top="39" bottom="39" />
      <header alignment="Center" color="#a9a9a9">&amp;[DATE] &amp;[TIME] - &amp;[FILENAME]</header>
      <footer alignment="Center" color="#a9a9a9">&amp;[PAGENUM] / &amp;[COUNT]</footer>
      <backgrounds />
    </pageModel>
    <dependencies>
      <assembly name="SMath Studio Desktop" version="0.98.6089.6946" guid="a37cba83-b69c-4c71-9992-55ff666763bd" />
      <assembly name="Text Region" version="1.10.6089.6950" guid="485d28c5-349a-48b6-93be-12a35a1c1e39" />
      <assembly name="Math Region" version="0.98.6089.6946" guid="02f1ab51-215b-466e-a74d-5d8b1cf85e8d" />
      <assembly name="Slider Region" version="0.4.6078.12189" guid="0c864749-6fe8-4f62-a74d-f6ac601e52a5" />
      <assembly name="Checkbox Region" version="1.0.5722.400" guid="aeb799ab-3afc-4a82-8f44-27d03df672ca" />
      <assembly name="Special Functions" version="1.11.6089.6949" guid="2814e667-4e12-48b1-8d51-194e480eabc5" />
      <assembly name="Plot Region" version="1.9.6089.6952" guid="c451c2b5-798b-4f08-b9ec-b90963d1ddaa" />
    </dependencies>
  </settings>
  <region id="0" left="9" top="9" width="309" height="28" color="#0000ff" bgColor="#ffffff" fontSize="12">
    <text lang="rus">
      <p bold="true">Интерполяция замкнутых кривых</p>
    </text>
    <text lang="eng">
      <p bold="true">Interpolation of closed curves</p>
    </text>
  </region>
  <region id="1" top="45" color="#000000" bgColor="#ffffff">
    <area collapsed="true">
      <title lang="rus">
        <p>Программа</p>
      </title>
      <title lang="eng">
        <p>Procedure</p>
      </title>
    </area>
    <region id="2" left="9" top="63" width="499" height="280" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <description active="true" position="Top" lang="eng">
          <p>Вычисляет коэфициенты дискретного периодического Q-сплайна 1-ого порядка, согласноформулам http://www.math.spbu.ru/ru/mmeh/AspDok/pub/2010/Chashnikov.pdf (страница 6).</p>
        </description>
        <input>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="2">CalculateQSpline</e>
          <e type="operand">N</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">j</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">≥</e>
          <e type="bracket">(</e>
          <e type="operand">j</e>
          <e type="operand">n</e>
          <e type="operand">1</e>
          <e type="operator" args="2">-</e>
          <e type="operator" args="2">≤</e>
          <e type="bracket">(</e>
          <e type="operator" args="2">&amp;</e>
          <e type="operand">qS</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">n</e>
          <e type="operand">j</e>
          <e type="operator" args="2">-</e>
          <e type="bracket">(</e>
          <e type="operand">n</e>
          <e type="operator" args="2">/</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">n</e>
          <e type="operator" args="2">≥</e>
          <e type="bracket">(</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operand">n</e>
          <e type="operator" args="2">-</e>
          <e type="operator" args="2">≤</e>
          <e type="bracket">(</e>
          <e type="operator" args="2">&amp;</e>
          <e type="operand">qS</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operand">n</e>
          <e type="operator" args="2">-</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">≥</e>
          <e type="bracket">(</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operand">1</e>
          <e type="operator" args="2">-</e>
          <e type="operator" args="2">≤</e>
          <e type="bracket">(</e>
          <e type="operator" args="2">&amp;</e>
          <e type="operand">qS</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operator" args="2">-</e>
          <e type="operand">n</e>
          <e type="operator" args="2">+</e>
          <e type="bracket">(</e>
          <e type="operand">n</e>
          <e type="operator" args="2">/</e>
          <e type="operator" args="2">:</e>
          <e type="operand" style="string">Impossible error.</e>
          <e type="function" preserve="true" args="1">error</e>
          <e type="function" preserve="true" args="3">if</e>
          <e type="function" preserve="true" args="3">if</e>
          <e type="function" preserve="true" args="3">if</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="3">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">qS</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="5">line</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="3" left="9" top="387" width="362" height="79" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <description active="true" position="Top" lang="eng">
          <p>Обеспечивает периодичность для заданного множества.</p>
        </description>
        <input>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="function" args="2">GetPositiveIndex</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">≥</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="function" preserve="true" args="2">mod</e>
          <e type="operand">N</e>
          <e type="operand">1</e>
          <e type="operator" args="2">-</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">N</e>
          <e type="function" preserve="true" args="2">mod</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">if</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="3">line</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="4" left="9" top="495" width="713" height="398" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <description active="true" position="Top" lang="eng">
          <p>Вычисляет вектора дискретного периодического сплайна с векторными коэфициентами,согласно формулам http://www.math.spbu.ru/ru/mmeh/AspDok/pub/2010/Chashnikov.pdf (страница 7).</p>
        </description>
        <input>
          <e type="operand">aV</e>
          <e type="operand">aQS</e>
          <e type="operand">r</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="5">CalculateSSpline</e>
          <e type="operand">N</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">:</e>
          <e type="operand">sS</e>
          <e type="operand">r</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">N</e>
          <e type="function" preserve="true" args="2">matrix</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">j</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">sS</e>
          <e type="operand">2</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">p</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">p</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">p</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">x</e>
          <e type="operand">j</e>
          <e type="operand">p</e>
          <e type="operand">n</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">-</e>
          <e type="operand">N</e>
          <e type="function" args="2">GetPositiveIndex</e>
          <e type="operator" args="2">:</e>
          <e type="operand">sS</e>
          <e type="operand">2</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">sS</e>
          <e type="operand">2</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">aV</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">aQS</e>
          <e type="operand">x</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">v</e>
          <e type="operand">2</e>
          <e type="operator" args="2">:</e>
          <e type="operand">v</e>
          <e type="operand">r</e>
          <e type="operator" args="2">≤</e>
          <e type="operand">v</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">N</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">j</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">N</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">k</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">x</e>
          <e type="operand">j</e>
          <e type="operand">k</e>
          <e type="operator" args="2">-</e>
          <e type="operand">N</e>
          <e type="function" args="2">GetPositiveIndex</e>
          <e type="operator" args="2">:</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">aQS</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">x</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">sS</e>
          <e type="operand">v</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">n</e>
          <e type="operator" args="2">/</e>
          <e type="operator" args="2">:</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="5">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">z</e>
          <e type="operand">sS</e>
          <e type="operand">r</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">row</e>
          <e type="operator" args="2">:</e>
          <e type="operand">z</e>
          <e type="operand">1</e>
          <e type="operand">N</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="3">el</e>
          <e type="operand">z</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operator" args="2">:</e>
          <e type="operand">6</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="8">line</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="5" left="9" top="945" width="747" height="746" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <description active="true" position="Top" lang="eng">
          <p>Пересчитывает коэфициенты сплайна для того, чтобы результирующий сплайнпроходил через полюса. http://dha.spb.ru/PDF/discreteSplines.pdf (страница 6 и 7).</p>
        </description>
        <input>
          <e type="operand">aV</e>
          <e type="operand">r</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="4">RecalculateVectors</e>
          <e type="operand">N</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">:</e>
          <e type="operand" style="string">Вычисляем знаменатель.</e>
          <e type="operand">tr</e>
          <e type="operand">1</e>
          <e type="operand">m</e>
          <e type="function" preserve="true" args="2">matrix</e>
          <e type="operator" args="2">:</e>
          <e type="operand">tr</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">1</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">k</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">q</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">q</e>
          <e type="operand">n</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">q</e>
          <e type="operand">q</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">tr</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">tr</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">n</e>
          <e type="operator" args="2">*</e>
          <e type="operand">π</e>
          <e type="operand">q</e>
          <e type="operand">m</e>
          <e type="operator" args="2">*</e>
          <e type="operand">k</e>
          <e type="operator" args="2">+</e>
          <e type="bracket">(</e>
          <e type="operator" args="2">*</e>
          <e type="operand">N</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">sin</e>
          <e type="operator" args="2">*</e>
          <e type="bracket">(</e>
          <e type="operand">2</e>
          <e type="operand">r</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="1">-</e>
          <e type="operator" args="2">^</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">tr</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">tr</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">π</e>
          <e type="operand">k</e>
          <e type="operator" args="2">*</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">sin</e>
          <e type="operator" args="2">*</e>
          <e type="bracket">(</e>
          <e type="operand">2</e>
          <e type="operand">r</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">^</e>
          <e type="operator" args="2">*</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand" style="string">Вычисляем числитель.</e>
          <e type="operand">zre</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="2">matrix</e>
          <e type="operator" args="2">:</e>
          <e type="operand">zim</e>
          <e type="operand">1</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="2">matrix</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">j</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">j</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">zre</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">zim</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">k</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">zre</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">zre</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">aV</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">π</e>
          <e type="operator" args="2">*</e>
          <e type="operand">j</e>
          <e type="operator" args="2">*</e>
          <e type="operand">k</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="1">-</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">cos</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">zim</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">zim</e>
          <e type="operand">j</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">aV</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">π</e>
          <e type="operator" args="2">*</e>
          <e type="operand">j</e>
          <e type="operator" args="2">*</e>
          <e type="operand">k</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="1">-</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">sin</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="5">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand" style="string">Считаем результат.</e>
          <e type="operand">result</e>
          <e type="operand">1</e>
          <e type="operand">m</e>
          <e type="function" preserve="true" args="2">matrix</e>
          <e type="operator" args="2">:</e>
          <e type="operand">p</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">p</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">p</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">result</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">0</e>
          <e type="operand">0</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">mat</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">0</e>
          <e type="operator" args="2">:</e>
          <e type="operand">k</e>
          <e type="operand">m</e>
          <e type="operator" args="2">&lt;</e>
          <e type="operand">k</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">d</e>
          <e type="operand">zre</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">π</e>
          <e type="operator" args="2">*</e>
          <e type="operand">k</e>
          <e type="operator" args="2">*</e>
          <e type="operand">p</e>
          <e type="operator" args="2">*</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">cos</e>
          <e type="operator" args="2">*</e>
          <e type="operand">zim</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">2</e>
          <e type="operand">π</e>
          <e type="operator" args="2">*</e>
          <e type="operand">k</e>
          <e type="operator" args="2">*</e>
          <e type="operand">p</e>
          <e type="operator" args="2">*</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">sin</e>
          <e type="operator" args="2">*</e>
          <e type="operator" args="2">-</e>
          <e type="operand">tr</e>
          <e type="operand">k</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operator" args="2">/</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">result</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">result</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">d</e>
          <e type="operator" args="2">+</e>
          <e type="operator" args="2">:</e>
          <e type="operand">2</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="4">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">result</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">result</e>
          <e type="operand">p</e>
          <e type="operand">1</e>
          <e type="operator" args="2">+</e>
          <e type="function" preserve="true" args="2">el</e>
          <e type="operand">m</e>
          <e type="operator" args="2">/</e>
          <e type="operator" args="2">:</e>
          <e type="operand">3</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="5">line</e>
          <e type="function" preserve="true" args="4">for</e>
          <e type="operand">result</e>
          <e type="operand">13</e>
          <e type="operand">1</e>
          <e type="function" preserve="true" args="15">line</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="6" top="1737" color="#000000" bgColor="#ffffff">
      <area terminator="true" />
    </region>
  </region>
  <region id="7" left="9" top="1764" width="251" height="48" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <description active="true" position="Right" lang="rus">
        <p>Полюса сплайна (исходные точки).Должно быть не менее 2-х полюсов.</p>
      </description>
      <description active="true" position="Right" lang="eng">
        <p>Spline poles (starting points).Must be at least 2 poles.</p>
      </description>
      <input>
        <e type="operand">aVectors</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
        <e type="operand">5</e>
        <e type="operand">5</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
        <e type="operand">10</e>
        <e type="operand">1</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
        <e type="operand">5</e>
        <e type="operand">6</e>
        <e type="operator" args="1">-</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
        <e type="operand">4</e>
        <e type="operator" args="1">-</e>
        <e type="operand">1</e>
        <e type="operator" args="1">-</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
        <e type="operand">1</e>
        <e type="operand">5</e>
        <e type="function" preserve="true" args="7">mat</e>
        <e type="operator" args="2">:</e>
      </input>
    </math>
  </region>
  <region id="8" left="9" top="1827" width="161" height="72" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
    <slider settings="" orientation="Horizontal" maxValue="10" minValue="1" value="3" valueLabel="false" increment="1" decimalPlaces="0" tickStyle="BottomRight" tickFrequency="0" ticksLabels="true">
      <description active="true" position="Top" lang="rus">
        <p>Число узлов между полюсами сплайна. </p>
      </description>
      <description active="true" position="Top" lang="eng">
        <p>The number of nodes between the poles of the spline.</p>
      </description>
      <input>
        <e type="operand">n</e>
      </input>
    </slider>
  </region>
  <region id="9" left="405" top="1827" width="159" height="72" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
    <slider settings="" orientation="Horizontal" maxValue="6" minValue="1" value="2" valueLabel="false" increment="1" decimalPlaces="0" tickStyle="BottomRight" tickFrequency="0" ticksLabels="true">
      <description active="true" position="Top" lang="rus">
        <p>Порядок сплайна. </p>
      </description>
      <description active="true" position="Top" lang="eng">
        <p>The rder of the spline.</p>
      </description>
      <input>
        <e type="operand">r</e>
      </input>
    </slider>
  </region>
  <region id="10" left="9" top="1944" width="32" height="30" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
    <checkbox checked="true">
      <description active="true" position="Right" lang="rus">
        <p>Отрисовка сплайна через полюса.</p>
      </description>
      <description active="true" position="Right" lang="eng">
        <p>Drawing a spline through the poles.</p>
      </description>
      <input>
        <e type="operand">match</e>
      </input>
    </checkbox>
  </region>
  <region id="11" top="1980" color="#000000" bgColor="#ffffff">
    <area collapsed="true">
      <title lang="rus">
        <p>Вычисления</p>
      </title>
      <title lang="eng">
        <p>Calculation</p>
      </title>
    </area>
    <region id="12" left="9" top="1998" width="162" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">m</e>
          <e type="operand">aVectors</e>
          <e type="function" preserve="true" args="1">length</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="13" left="9" top="2016" width="269" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">aQSpline</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="2">CalculateQSpline</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="14" left="9" top="2043" width="411" height="76" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">match</e>
          <e type="operand">fin</e>
          <e type="operand">aVectors</e>
          <e type="operand">r</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="4">RecalculateVectors</e>
          <e type="function" preserve="true" args="1">eval</e>
          <e type="operator" args="2">:</e>
          <e type="operand">fin</e>
          <e type="operand">aVectors</e>
          <e type="operator" args="2">:</e>
          <e type="function" preserve="true" args="3">if</e>
        </input>
      </math>
    </region>
    <region id="15" left="9" top="2124" width="375" height="26" color="#000000" bgColor="#ffffff" fontSize="10">
      <math>
        <input>
          <e type="operand">res</e>
          <e type="operand">fin</e>
          <e type="operand">aQSpline</e>
          <e type="operand">r</e>
          <e type="operand">n</e>
          <e type="operand">m</e>
          <e type="function" args="5">CalculateSSpline</e>
          <e type="operator" args="2">:</e>
        </input>
      </math>
    </region>
    <region id="16" top="2169" color="#000000" bgColor="#ffffff">
      <area collapsed="false">
        <title lang="eng">
          <p>Visualization</p>
        </title>
      </area>
      <region id="17" left="9" top="2187" width="230" height="110" color="#000000" bgColor="#ffffff" fontSize="10">
        <math>
          <input>
            <e type="operand">k</e>
            <e type="operand">res</e>
            <e type="operand">plot2</e>
            <e type="function" preserve="true" args="1">IsDefined</e>
            <e type="operand">plot2</e>
            <e type="operand">plot2</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="function" preserve="true" args="2">stack</e>
            <e type="operator" args="2">:</e>
            <e type="operand">plot2</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="operator" args="2">:</e>
            <e type="function" preserve="true" args="3">if</e>
            <e type="function" preserve="true" args="3">for</e>
          </input>
        </math>
      </region>
      <region id="18" left="252" top="2187" width="245" height="133" color="#000000" bgColor="#ffffff" fontSize="10">
        <math>
          <input>
            <e type="operand">k</e>
            <e type="operand">aVectors</e>
            <e type="operand">k</e>
            <e type="operand">k</e>
            <e type="operand" style="string">o</e>
            <e type="operand">8</e>
            <e type="operand" style="string">red</e>
            <e type="function" preserve="true" args="4">stack</e>
            <e type="operator" args="2">:</e>
            <e type="operand">plot1</e>
            <e type="function" preserve="true" args="1">IsDefined</e>
            <e type="operand">plot1</e>
            <e type="operand">plot1</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="function" preserve="true" args="2">stack</e>
            <e type="operator" args="2">:</e>
            <e type="operand">plot1</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="operator" args="2">:</e>
            <e type="function" preserve="true" args="3">if</e>
            <e type="operand">2</e>
            <e type="operand">1</e>
            <e type="function" preserve="true" args="4">line</e>
            <e type="function" preserve="true" args="3">for</e>
          </input>
        </math>
      </region>
      <region id="19" left="504" top="2187" width="253" height="133" color="#000000" bgColor="#ffffff" fontSize="10">
        <math>
          <input>
            <e type="operand">k</e>
            <e type="operand">res</e>
            <e type="operand">k</e>
            <e type="operand">k</e>
            <e type="operand" style="string">.</e>
            <e type="operand">8</e>
            <e type="operand" style="string">blue</e>
            <e type="function" preserve="true" args="4">stack</e>
            <e type="operator" args="2">:</e>
            <e type="operand">plot3</e>
            <e type="function" preserve="true" args="1">IsDefined</e>
            <e type="operand">plot3</e>
            <e type="operand">plot3</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="function" preserve="true" args="2">stack</e>
            <e type="operator" args="2">:</e>
            <e type="operand">plot3</e>
            <e type="operand">k</e>
            <e type="function" preserve="true" args="1">transpose</e>
            <e type="operator" args="2">:</e>
            <e type="function" preserve="true" args="3">if</e>
            <e type="operand">2</e>
            <e type="operand">1</e>
            <e type="function" preserve="true" args="4">line</e>
            <e type="function" preserve="true" args="3">for</e>
          </input>
        </math>
      </region>
      <region id="20" top="2322" color="#000000" bgColor="#ffffff">
        <area terminator="true" />
      </region>
    </region>
    <region id="21" top="2340" color="#000000" bgColor="#ffffff">
      <area terminator="true" />
    </region>
  </region>
  <region id="22" left="9" top="2367" width="421" height="237" color="#000000" bgColor="#ffffff" fontSize="10" showInputData="False">
    <plot grid="false" axes="false" type="2d" render="lines" scale_x="1.53748553427601" scale_y="1.53748553427601" scale_z="1.53748553427601" rotate_x="0" rotate_y="0" rotate_z="0" transpose_x="-80" transpose_y="13" transpose_z="0">
      <input>
        <e type="operand">plot2</e>
        <e type="operand">plot3</e>
        <e type="operand">plot1</e>
        <e type="operand">3</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="5">sys</e>
      </input>
    </plot>
  </region>
  <region id="23" left="9" top="2619" width="680" height="136" color="#000000" bgColor="#ffffff" fontSize="10">
    <text lang="eng">
      <p>https://habrahabr.ru/post/309210/   Интерполяция замкнутых кривыхhttps://github.com/denxc/DpSplines   Discrete periodic splines with vector coefficienthttp://www.math.spbu.ru/ru/mmeh/AspDok/pub/2010/Chashnikov.pdf   Дискретные периодические сплайны с векторными коэффициентами и поверхности кунса</p>
    </text>
  </region>
</regions>