mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-24 13:53:35 +08:00
Documentation for 341ed50da8
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.9.1"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.2"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>Algorithms_in_C++: linear_algebra/gram_schmidt.cpp File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -17,9 +17,9 @@
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
|
||||
@@ -32,8 +32,7 @@
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">Algorithms_in_C++
|
||||
 <span id="projectnumber">1.0.0</span>
|
||||
<div id="projectname">Algorithms_in_C++<span id="projectnumber"> 1.0.0</span>
|
||||
</div>
|
||||
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
||||
</td>
|
||||
@@ -42,21 +41,22 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.1 -->
|
||||
<!-- Generated by Doxygen 1.9.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||||
@@ -70,7 +70,7 @@ $(function() {
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(document).ready(function(){initNavTree('d5/d33/gram__schmidt_8cpp.html','../../'); initResizable(); });
|
||||
/* @license-end */
|
||||
</script>
|
||||
@@ -93,12 +93,11 @@ $(document).ready(function(){initNavTree('d5/d33/gram__schmidt_8cpp.html','../..
|
||||
<div class="summary">
|
||||
<a href="#namespaces">Namespaces</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">gram_schmidt.cpp File Reference</div> </div>
|
||||
<div class="headertitle"><div class="title">gram_schmidt.cpp File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a>
|
||||
<p><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process" target="_blank">Gram Schmidt Orthogonalisation Process</a>
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <array></code><br />
|
||||
<code>#include <cassert></code><br />
|
||||
@@ -112,16 +111,16 @@ Include dependency graph for gram_schmidt.cpp:</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:d3/d78/namespacelinear__algebra"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d78/namespacelinear__algebra.html">linear_algebra</a></td></tr>
|
||||
<tr class="memitem:d3/d78/namespacelinear__algebra"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d78/namespacelinear__algebra.html">linear_algebra</a></td></tr>
|
||||
<tr class="memdesc:d3/d78/namespacelinear__algebra"><td class="mdescLeft"> </td><td class="mdescRight">for io operations <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:d4/d0f/namespacegram__schmidt"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d0f/namespacegram__schmidt.html">gram_schmidt</a></td></tr>
|
||||
<tr class="memdesc:d4/d0f/namespacegram__schmidt"><td class="mdescLeft"> </td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a> <br /></td></tr>
|
||||
<tr class="memitem:d4/d0f/namespacegram__schmidt"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d0f/namespacegram__schmidt.html">gram_schmidt</a></td></tr>
|
||||
<tr class="memdesc:d4/d0f/namespacegram__schmidt"><td class="mdescLeft"> </td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process" target="_blank">Gram Schmidt Orthogonalisation Process</a> <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:aed4d308f46ca1d91e348ca260ec1d2fb"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">linear_algebra::gram_schmidt::dot_product</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &x, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &y, const int &c)</td></tr>
|
||||
<tr class="separator:aed4d308f46ca1d91e348ca260ec1d2fb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -138,16 +137,16 @@ Functions</h2></td></tr>
|
||||
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a> </p>
|
||||
<p>Takes the input of Linearly Independent Vectors, returns vectors orthogonal to each other.</p>
|
||||
<div class="textblock"><p ><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process" target="_blank">Gram Schmidt Orthogonalisation Process</a> </p>
|
||||
<p >Takes the input of Linearly Independent Vectors, returns vectors orthogonal to each other.</p>
|
||||
<h3><a class="anchor" id="autotoc_md73"></a>
|
||||
Algorithm</h3>
|
||||
<p>Take the first vector of given LI vectors as first vector of Orthogonal vectors. Take projection of second input vector on the first vector of Orthogonal vector and subtract it from the 2nd LI vector. Take projection of third vector on the second vector of Othogonal vectors and subtract it from the 3rd LI vector. Keep repeating the above process until all the vectors in the given input array are exhausted.</p>
|
||||
<p>For Example: In R2, Input LI Vectors={(3,1),(2,2)} then Orthogonal Vectors= {(3, 1),(-0.4, 1.2)}</p>
|
||||
<p>Have defined maximum dimension of vectors to be 10 and number of vectors taken is 20. Please do not give linearly dependent vectors</p>
|
||||
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Akanksha-Gupta920">Akanksha Gupta</a> </dd></dl>
|
||||
<p >Take the first vector of given LI vectors as first vector of Orthogonal vectors. Take projection of second input vector on the first vector of Orthogonal vector and subtract it from the 2nd LI vector. Take projection of third vector on the second vector of Othogonal vectors and subtract it from the 3rd LI vector. Keep repeating the above process until all the vectors in the given input array are exhausted.</p>
|
||||
<p >For Example: In R2, Input LI Vectors={(3,1),(2,2)} then Orthogonal Vectors= {(3, 1),(-0.4, 1.2)}</p>
|
||||
<p >Have defined maximum dimension of vectors to be 10 and number of vectors taken is 20. Please do not give linearly dependent vectors</p>
|
||||
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Akanksha-Gupta920" target="_blank">Akanksha Gupta</a> </dd></dl>
|
||||
</div><h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ab6b70f9680752e9fe2ac4e2cce158c40"></a>
|
||||
<a id="ab6b70f9680752e9fe2ac4e2cce158c40" name="ab6b70f9680752e9fe2ac4e2cce158c40"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab6b70f9680752e9fe2ac4e2cce158c40">◆ </a></span>display()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -178,7 +177,7 @@ Algorithm</h3>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Function to print the orthogonalised vector</p>
|
||||
<p >Function to print the orthogonalised vector</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">r</td><td>number of vectors </td></tr>
|
||||
@@ -188,20 +187,20 @@ Algorithm</h3>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r; ++i) {</div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vector "</span> << i + 1 << <span class="stringliteral">": "</span>;</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << B[i][j] << <span class="stringliteral">" "</span>;</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div>
|
||||
<div class="fragment"><div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> {</div>
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r; ++i) {</div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vector "</span> << i + 1 << <span class="stringliteral">": "</span>;</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << B[i][j] << <span class="stringliteral">" "</span>;</div>
|
||||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> }</div>
|
||||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }</div>
|
||||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span>}</div>
|
||||
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="aed4d308f46ca1d91e348ca260ec1d2fb"></a>
|
||||
<a id="aed4d308f46ca1d91e348ca260ec1d2fb" name="aed4d308f46ca1d91e348ca260ec1d2fb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aed4d308f46ca1d91e348ca260ec1d2fb">◆ </a></span>dot_product()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -232,7 +231,7 @@ Algorithm</h3>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Dot product function. Takes 2 vectors along with their dimension as input and returns the dot product. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >Dot product function. Takes 2 vectors along with their dimension as input and returns the dot product. </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">x</td><td>vector 1 </td></tr>
|
||||
<tr><td class="paramname">y</td><td>vector 2 </td></tr>
|
||||
@@ -241,14 +240,14 @@ Algorithm</h3>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>sum </dd></dl>
|
||||
<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a> = 0;</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a> += x[i] * y[i];</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a>;</div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div>
|
||||
<div class="ttc" id="anamespacemachine__learning_html_a5305cc18d11943d3dc0d66e70d7e9c44"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector< std::valarray< T >> &A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
|
||||
<div class="fragment"><div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> {</div>
|
||||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordtype">double</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a> = 0;</div>
|
||||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a> += x[i] * y[i];</div>
|
||||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> }</div>
|
||||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">sum</a>;</div>
|
||||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>}</div>
|
||||
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector< std::valarray< T > > &A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -258,7 +257,7 @@ Here is the call graph for this function:</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa31ca28f60c880802462335eedc5d91f"></a>
|
||||
<a id="aa31ca28f60c880802462335eedc5d91f" name="aa31ca28f60c880802462335eedc5d91f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa31ca28f60c880802462335eedc5d91f">◆ </a></span>gram_schmidt()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -295,7 +294,7 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Function for the process of Gram Schimdt Process </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<p >Function for the process of Gram Schimdt Process </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">r</td><td>number of vectors </td></tr>
|
||||
<tr><td class="paramname">c</td><td>dimension of vectors </td></tr>
|
||||
@@ -305,67 +304,67 @@ Here is the call graph for this function:</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<p>we check whether appropriate dimensions are given or not.</p>
|
||||
<p>First vector is copied as it is.</p>
|
||||
<p>array to store projections</p>
|
||||
<p>First initialised to zero</p>
|
||||
<p>to store previous projected array</p>
|
||||
<p>to store the factor by which the previous array will change</p>
|
||||
<p>projected array created</p>
|
||||
<p>we take the projection with all the previous vector and add them.</p>
|
||||
<p>subtract total projection vector from the input vector</p>
|
||||
<div class="fragment"><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (c < r) { <span class="comment">/// we check whether appropriate dimensions are given or not.</span></div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Dimension of vector is less than number of vector, hence "</span></div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="stringliteral">"\n first "</span></div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  << c << <span class="stringliteral">" vectors are orthogonalised\n"</span>;</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  r = c;</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">int</span> k = 1;</div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  </div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">while</span> (k <= r) {</div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span> (k == 1) {</div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; j++)</div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  B[0][j] = A[0][j]; <span class="comment">/// First vector is copied as it is.</span></div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<double, 10></a></div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  all_projection{}; <span class="comment">/// array to store projections</span></div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  all_projection[i] = 0; <span class="comment">/// First initialised to zero</span></div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">int</span> l = 1;</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">while</span> (l < k) {</div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<double, 10></a></div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  temp{}; <span class="comment">/// to store previous projected array</span></div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">double</span> factor = NAN; <span class="comment">/// to store the factor by which the</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> /// previous array will change</span></div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"></span> factor = <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">projection</a>(A[k - 1], B[l - 1], c);</div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  temp[i] = B[l - 1][i] * factor; <span class="comment">/// projected array created</span></div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  all_projection[j] =</div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  all_projection[j] +</div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  temp[j]; <span class="comment">/// we take the projection with all the</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment"> /// previous vector and add them.</span></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment"></span> }</div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  l++;</div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  B[k - 1][i] =</div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  A[k - 1][i] -</div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  all_projection[i]; <span class="comment">/// subtract total projection vector</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment"> /// from the input vector</span></div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment"></span> }</div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  k++;</div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  display(r, c, B); <span class="comment">// for displaying orthogoanlised vectors</span></div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div>
|
||||
<p >we check whether appropriate dimensions are given or not.</p>
|
||||
<p >First vector is copied as it is.</p>
|
||||
<p >array to store projections</p>
|
||||
<p >First initialised to zero</p>
|
||||
<p >to store previous projected array</p>
|
||||
<p >to store the factor by which the previous array will change</p>
|
||||
<p >projected array created</p>
|
||||
<p >we take the projection with all the previous vector and add them.</p>
|
||||
<p >subtract total projection vector from the input vector</p>
|
||||
<div class="fragment"><div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> {</div>
|
||||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span> (c < r) { <span class="comment">/// we check whether appropriate dimensions are given or not.</span></div>
|
||||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Dimension of vector is less than number of vector, hence "</span></div>
|
||||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="stringliteral">"\n first "</span></div>
|
||||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> << c << <span class="stringliteral">" vectors are orthogonalised\n"</span>;</div>
|
||||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> r = c;</div>
|
||||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> }</div>
|
||||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
|
||||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">int</span> k = 1;</div>
|
||||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
|
||||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">while</span> (k <= r) {</div>
|
||||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">if</span> (k == 1) {</div>
|
||||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; j++)</div>
|
||||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> B[0][j] = A[0][j]; <span class="comment">/// First vector is copied as it is.</span></div>
|
||||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">else</span> {</div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<double, 10></a></div>
|
||||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> all_projection{}; <span class="comment">/// array to store projections</span></div>
|
||||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> all_projection[i] = 0; <span class="comment">/// First initialised to zero</span></div>
|
||||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> }</div>
|
||||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
|
||||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">int</span> l = 1;</div>
|
||||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">while</span> (l < k) {</div>
|
||||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<double, 10></a></div>
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> temp{}; <span class="comment">/// to store previous projected array</span></div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">double</span> factor = NAN; <span class="comment">/// to store the factor by which the</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> /// previous array will change</span></div>
|
||||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"></span> factor = <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">projection</a>(A[k - 1], B[l - 1], c);</div>
|
||||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> temp[i] = B[l - 1][i] * factor; <span class="comment">/// projected array created</span></div>
|
||||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
|
||||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> all_projection[j] =</div>
|
||||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> all_projection[j] +</div>
|
||||
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> temp[j]; <span class="comment">/// we take the projection with all the</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="comment"> /// previous vector and add them.</span></div>
|
||||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="comment"></span> }</div>
|
||||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> l++;</div>
|
||||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
|
||||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
||||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> B[k - 1][i] =</div>
|
||||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> A[k - 1][i] -</div>
|
||||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> all_projection[i]; <span class="comment">/// subtract total projection vector</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment"> /// from the input vector</span></div>
|
||||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"></span> }</div>
|
||||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> }</div>
|
||||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> k++;</div>
|
||||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> }</div>
|
||||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> display(r, c, B); <span class="comment">// for displaying orthogoanlised vectors</span></div>
|
||||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span>}</div>
|
||||
<div class="ttc" id="aarray_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a></div></div>
|
||||
<div class="ttc" id="agram__schmidt_8cpp_html_a46e459aff5eafffb5ad9ceb129b4d274"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">linear_algebra::gram_schmidt::projection</a></div><div class="ttdeci">double projection(const std::array< double, 10 > &x, const std::array< double, 10 > &y, const int &c)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:79</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
@@ -377,7 +376,7 @@ Here is the call graph for this function:</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
||||
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">◆ </a></span>main()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -395,55 +394,55 @@ Here is the call graph for this function:</div>
|
||||
|
||||
<p>Main Function. </p>
|
||||
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
|
||||
<p>a 2-D array for storing all vectors</p>
|
||||
<p>a 2-D array for storing orthogonalised vectors</p>
|
||||
<p>storing vectors in array A</p>
|
||||
<p>Input of vectors is taken</p>
|
||||
<p>To check whether vectors are orthogonal or not</p>
|
||||
<p>take make the process numerically stable, upper bound for the dot product take 0.1</p>
|
||||
<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">int</span> r = 0, c = 0;</div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// perform self tests</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter the dimension of your vectors\n"</span>;</div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> c;</div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter the number of vectors you will enter\n"</span>;</div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> r;</div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  A{}; <span class="comment">/// a 2-D array for storing all vectors</span></div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> B = {</div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {0}}; <span class="comment">/// a 2-D array for storing orthogonalised vectors</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment"> /// storing vectors in array A</span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r; ++i) {</div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter vector "</span> << i + 1</div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  << <span class="charliteral">'\n'</span>; <span class="comment">/// Input of vectors is taken</span></div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Value "</span> << j + 1 << <span class="stringliteral">"th of vector: "</span>;</div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> A[i][j];</div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  </div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(r, c, A, B);</div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">double</span> dot = 0;</div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">int</span> flag = 1; <span class="comment">/// To check whether vectors are orthogonal or not</span></div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r - 1; ++i) {</div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < r; ++j) {</div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  dot =</div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(B[i], B[j], c));</div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (dot > 0.1) <span class="comment">/// take make the process numerically stable, upper</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="comment"> /// bound for the dot product take 0.1</span></div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment"></span> {</div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  flag = 0;</div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div>
|
||||
<p >a 2-D array for storing all vectors</p>
|
||||
<p >a 2-D array for storing orthogonalised vectors</p>
|
||||
<p >storing vectors in array A</p>
|
||||
<p >Input of vectors is taken</p>
|
||||
<p >To check whether vectors are orthogonal or not</p>
|
||||
<p >take make the process numerically stable, upper bound for the dot product take 0.1</p>
|
||||
<div class="fragment"><div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> {</div>
|
||||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keywordtype">int</span> r = 0, c = 0;</div>
|
||||
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// perform self tests</span></div>
|
||||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter the dimension of your vectors\n"</span>;</div>
|
||||
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> c;</div>
|
||||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter the number of vectors you will enter\n"</span>;</div>
|
||||
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> r;</div>
|
||||
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
|
||||
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20></div>
|
||||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> A{}; <span class="comment">/// a 2-D array for storing all vectors</span></div>
|
||||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> B = {</div>
|
||||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> {0}}; <span class="comment">/// a 2-D array for storing orthogonalised vectors</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment"> /// storing vectors in array A</span></div>
|
||||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r; ++i) {</div>
|
||||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Enter vector "</span> << i + 1</div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> << <span class="charliteral">'\n'</span>; <span class="comment">/// Input of vectors is taken</span></div>
|
||||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
||||
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Value "</span> << j + 1 << <span class="stringliteral">"th of vector: "</span>;</div>
|
||||
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> >> A[i][j];</div>
|
||||
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> }</div>
|
||||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> }</div>
|
||||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
|
||||
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(r, c, A, B);</div>
|
||||
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> </div>
|
||||
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keywordtype">double</span> dot = 0;</div>
|
||||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordtype">int</span> flag = 1; <span class="comment">/// To check whether vectors are orthogonal or not</span></div>
|
||||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r - 1; ++i) {</div>
|
||||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < r; ++j) {</div>
|
||||
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> dot =</div>
|
||||
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(B[i], B[j], c));</div>
|
||||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">if</span> (dot > 0.1) <span class="comment">/// take make the process numerically stable, upper</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="comment"> /// bound for the dot product take 0.1</span></div>
|
||||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span><span class="comment"></span> {</div>
|
||||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> flag = 0;</div>
|
||||
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> }</div>
|
||||
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> }</div>
|
||||
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> }</div>
|
||||
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span>}</div>
|
||||
<div class="ttc" id="abasic_istream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a></div></div>
|
||||
<div class="ttc" id="afabs_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">std::fabs</a></div><div class="ttdeci">T fabs(T... args)</div></div>
|
||||
<div class="ttc" id="agram__schmidt_8cpp_html_aa31ca28f60c880802462335eedc5d91f"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a></div><div class="ttdeci">void gram_schmidt(int r, const int &c, const std::array< std::array< double, 10 >, 20 > &A, std::array< std::array< double, 10 >, 20 > B)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:121</div></div>
|
||||
@@ -457,7 +456,7 @@ Here is the call graph for this function:</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a46e459aff5eafffb5ad9ceb129b4d274"></a>
|
||||
<a id="a46e459aff5eafffb5ad9ceb129b4d274" name="a46e459aff5eafffb5ad9ceb129b4d274"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a46e459aff5eafffb5ad9ceb129b4d274">◆ </a></span>projection()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -488,7 +487,7 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Projection Function Takes input of 2 vectors along with their dimension and evaluates their projection in temp</p>
|
||||
<p >Projection Function Takes input of 2 vectors along with their dimension and evaluates their projection in temp</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">x</td><td>Vector 1 </td></tr>
|
||||
@@ -498,20 +497,20 @@ Here is the call graph for this function:</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>factor </dd></dl>
|
||||
<p>The dot product of two vectors is taken</p>
|
||||
<p>The norm of the second vector is taken.</p>
|
||||
<p>multiply that factor with every element in a 3rd vector, whose initial values are same as the 2nd vector.</p>
|
||||
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> dot =</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(x, y, c); <span class="comment">/// The dot product of two vectors is taken</span></div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">double</span> anorm =</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(y, y, c); <span class="comment">/// The norm of the second vector is taken.</span></div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> factor =</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  dot /</div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  anorm; <span class="comment">/// multiply that factor with every element in a 3rd vector,</span><span class="comment"></span></div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"> /// whose initial values are same as the 2nd vector.</span></div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"></span> <span class="keywordflow">return</span> factor;</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div>
|
||||
<p >The dot product of two vectors is taken</p>
|
||||
<p >The norm of the second vector is taken.</p>
|
||||
<p >multiply that factor with every element in a 3rd vector, whose initial values are same as the 2nd vector.</p>
|
||||
<div class="fragment"><div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> {</div>
|
||||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">double</span> dot =</div>
|
||||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(x, y, c); <span class="comment">/// The dot product of two vectors is taken</span></div>
|
||||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">double</span> anorm =</div>
|
||||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(y, y, c); <span class="comment">/// The norm of the second vector is taken.</span></div>
|
||||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">double</span> factor =</div>
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> dot /</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> anorm; <span class="comment">/// multiply that factor with every element in a 3rd vector,</span><span class="comment"></span></div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="comment"> /// whose initial values are same as the 2nd vector.</span></div>
|
||||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment"></span> <span class="keywordflow">return</span> factor;</div>
|
||||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>}</div>
|
||||
<div class="ttc" id="agram__schmidt_8cpp_html_aed4d308f46ca1d91e348ca260ec1d2fb"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">linear_algebra::gram_schmidt::dot_product</a></div><div class="ttdeci">double dot_product(const std::array< double, 10 > &x, const std::array< double, 10 > &y, const int &c)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:59</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
@@ -522,7 +521,7 @@ Here is the call graph for this function:</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
|
||||
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">◆ </a></span>test()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
@@ -544,69 +543,69 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Test Function. Process has been tested for 3 Sample Inputs </p><dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a1 = {</div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {{1, 0, 1, 0}, {1, 1, 1, 1}, {0, 1, 2, 1}}};</div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b1 = {{0}};</div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">double</span> dot1 = 0;</div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(3, 4, a1, b1);</div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">int</span> flag = 1;</div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 3; ++j) {</div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  dot1 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  linear_algebra::gram_schmidt::dot_product(b1[i], b1[j], 4));</div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (dot1 > 0.1) {</div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  flag = 0;</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  assert(flag == 1);</div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 1\n "</span>;</div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a2 = {{{3, 1}, {2, 2}}};</div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b2 = {{0}};</div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">double</span> dot2 = 0;</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 2, a2, b2);</div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  flag = 1;</div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 2; ++j) {</div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  dot2 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  linear_algebra::gram_schmidt::dot_product(b2[i], b2[j], 2));</div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span> (dot2 > 0.1) {</div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  flag = 0;</div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  assert(flag == 1);</div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 2\n"</span>;</div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a3 = {{{1, 2, 2}, {-4, 3, 2}}};</div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b3 = {{0}};</div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">double</span> dot3 = 0;</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 3, a3, b3);</div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  flag = 1;</div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 2; ++j) {</div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  dot3 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  linear_algebra::gram_schmidt::dot_product(b3[i], b3[j], 3));</div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (dot3 > 0.1) {</div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  flag = 0;</div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  assert(flag == 1);</div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 3\n"</span>;</div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div>
|
||||
<p >Test Function. Process has been tested for 3 Sample Inputs </p><dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
||||
<div class="fragment"><div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> {</div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a1 = {</div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> {{1, 0, 1, 0}, {1, 1, 1, 1}, {0, 1, 2, 1}}};</div>
|
||||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b1 = {{0}};</div>
|
||||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordtype">double</span> dot1 = 0;</div>
|
||||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(3, 4, a1, b1);</div>
|
||||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">int</span> flag = 1;</div>
|
||||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div>
|
||||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 3; ++j) {</div>
|
||||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> dot1 = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> linear_algebra::gram_schmidt::dot_product(b1[i], b1[j], 4));</div>
|
||||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">if</span> (dot1 > 0.1) {</div>
|
||||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> flag = 0;</div>
|
||||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> }</div>
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> }</div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> }</div>
|
||||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> assert(flag == 1);</div>
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 1\n "</span>;</div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
|
||||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a2 = {{{3, 1}, {2, 2}}};</div>
|
||||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b2 = {{0}};</div>
|
||||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">double</span> dot2 = 0;</div>
|
||||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 2, a2, b2);</div>
|
||||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> flag = 1;</div>
|
||||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
||||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 2; ++j) {</div>
|
||||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> dot2 = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> linear_algebra::gram_schmidt::dot_product(b2[i], b2[j], 2));</div>
|
||||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">if</span> (dot2 > 0.1) {</div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> flag = 0;</div>
|
||||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> }</div>
|
||||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> }</div>
|
||||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
|
||||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> assert(flag == 1);</div>
|
||||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 2\n"</span>;</div>
|
||||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
|
||||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> a3 = {{{1, 2, 2}, {-4, 3, 2}}};</div>
|
||||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array<std::array<double, 10></a>, 20> b3 = {{0}};</div>
|
||||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">double</span> dot3 = 0;</div>
|
||||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <a class="code hl_function" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 3, a3, b3);</div>
|
||||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> flag = 1;</div>
|
||||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
||||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j < 2; ++j) {</div>
|
||||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> dot3 = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
||||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> linear_algebra::gram_schmidt::dot_product(b3[i], b3[j], 3));</div>
|
||||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordflow">if</span> (dot3 > 0.1) {</div>
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> flag = 0;</div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
|
||||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> }</div>
|
||||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
|
||||
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
||||
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Vectors are linearly dependent\n"</span>;</div>
|
||||
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> assert(flag == 1);</div>
|
||||
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"Passed Test Case 3\n"</span>;</div>
|
||||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span>}</div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -616,7 +615,7 @@ Here is the call graph for this function:</div>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dir_8c4128baa09a573ad2b8b8c0061a04c9.html">linear_algebra</a></li><li class="navelem"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html">gram_schmidt.cpp</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user