﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?application progid="SMath Studio" version="0.95"?>
<regions>
  <settings>
    <calculation>
      <precision>4</precision>
      <exponentialThreshold>5</exponentialThreshold>
      <fractions>decimal</fractions>
    </calculation>
    <pageModel active="true" printAreas="true" simpleEqualsOnly="false">
      <paper id="9" orientation="Portrait" width="827" height="1169" />
      <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>
    </pageModel>
    <dependences>
      <assembly name="SMath Studio" version="0.95" guid="a37cba83-b69c-4c71-9992-55ff666763bd" />
      <assembly name="Text Region" version="1.8.4594.45" guid="485d28c5-349a-48b6-93be-12a35a1c1e39" />
      <assembly name="Math Region" version="0.95" guid="02f1ab51-215b-466e-a74d-5d8b1cf85e8d" />
      <assembly name="Special Functions" version="1.9.4594.42" guid="2814e667-4e12-48b1-8d51-194e480eabc5" />
    </dependences>
  </settings>
  <region id="0" left="9" top="9" width="457" height="24" color="#000000" bgColor="#ffffff" fontSize="10">
    <text lang="eng">
      <p>http://en.wikipedia.org/wiki/Conjugate_gradient_method</p>
    </text>
  </region>
  <region id="1" left="765" top="9" width="87" height="45" color="#000000" bgColor="#ff0000" fontSize="10">
    <math>
      <description active="true" position="Top" lang="eng">
        <p>SMath issue: doesn't work inside the user-defined function"Mutrix must be square" errorvariables affected: α,β</p>
      </description>
      <input>
        <e type="operand">5</e>
        <e type="operand">1</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="3">mat</e>
        <e type="operand">20</e>
        <e type="operand">1</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="3">mat</e>
        <e type="operator" args="2">/</e>
      </input>
      <result action="numeric">
        <e type="operand">0.25</e>
      </result>
    </math>
  </region>
  <region id="2" left="9" top="45" width="607" height="425" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <input>
        <e type="operand">A</e>
        <e type="operand">b</e>
        <e type="operand">x.0</e>
        <e type="operand">epsilon</e>
        <e type="operand">maxIters</e>
        <e type="function" args="5">ConjugateGradient</e>
        <e type="operand">k</e>
        <e type="operand">0</e>
        <e type="operator" args="2">:</e>
        <e type="operand">r</e>
        <e type="operand">b</e>
        <e type="operand">A</e>
        <e type="operand">x.0</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">-</e>
        <e type="operator" args="2">:</e>
        <e type="operand">p</e>
        <e type="operand">r</e>
        <e type="operator" args="2">:</e>
        <e type="operand">x</e>
        <e type="operand">x.0</e>
        <e type="operator" args="2">:</e>
        <e type="operand">k</e>
        <e type="operand">maxIters</e>
        <e type="operator" args="2">&lt;</e>
        <e type="operand">α</e>
        <e type="operand">r</e>
        <e type="function" preserve="true" args="1">transpose</e>
        <e type="operand">r</e>
        <e type="operator" args="2">*</e>
        <e type="operand">p</e>
        <e type="function" preserve="true" args="1">transpose</e>
        <e type="operand">A</e>
        <e type="operator" args="2">*</e>
        <e type="operand">p</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">x</e>
        <e type="operand">x</e>
        <e type="operand">α</e>
        <e type="operand">p</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">+</e>
        <e type="operator" args="2">:</e>
        <e type="operand">r.last</e>
        <e type="operand">r</e>
        <e type="operator" args="2">:</e>
        <e type="operand">r</e>
        <e type="operand">r</e>
        <e type="operand">α</e>
        <e type="operand">A</e>
        <e type="operator" args="2">*</e>
        <e type="operand">p</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">-</e>
        <e type="operator" args="2">:</e>
        <e type="operand">r</e>
        <e type="operand">2</e>
        <e type="operator" args="2">^</e>
        <e type="function" preserve="true" args="1">sqrt</e>
        <e type="operand">epsilon</e>
        <e type="operator" args="2">&lt;</e>
        <e type="operand">break</e>
        <e type="operand">0</e>
        <e type="function" preserve="true" args="3">if</e>
        <e type="operand">β</e>
        <e type="operand">r</e>
        <e type="function" preserve="true" args="1">transpose</e>
        <e type="operand">r</e>
        <e type="operator" args="2">*</e>
        <e type="operand">r.last</e>
        <e type="function" preserve="true" args="1">transpose</e>
        <e type="operand">r.last</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">p</e>
        <e type="operand">r</e>
        <e type="operand">β</e>
        <e type="operand">p</e>
        <e type="operator" args="2">*</e>
        <e type="operator" args="2">+</e>
        <e type="operator" args="2">:</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">8</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="10">line</e>
        <e type="function" preserve="true" args="2">while</e>
        <e type="operand">x</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="3" left="9" top="477" width="428" height="46" color="#000000" bgColor="#ffffff" fontSize="10">
    <math>
      <input>
        <e type="operand">4</e>
        <e type="operand">1</e>
        <e type="operand">1</e>
        <e type="operand">3</e>
        <e type="operand">2</e>
        <e type="operand">2</e>
        <e type="function" preserve="true" args="6">mat</e>
        <e type="operand">1</e>
        <e type="operand">2</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</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="operand">10</e>
        <e type="operand">5</e>
        <e type="operator" args="1">-</e>
        <e type="operator" args="2">^</e>
        <e type="operand">100</e>
        <e type="function" args="5">ConjugateGradient</e>
      </input>
      <result action="numeric">
        <e type="operand">0.0909</e>
        <e type="operand">0.6364</e>
        <e type="operand">2</e>
        <e type="operand">1</e>
        <e type="function" preserve="true" args="4">mat</e>
      </result>
    </math>
  </region>
</regions>