mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-21 12:23:13 +08:00
600 lines
54 KiB
HTML
600 lines
54 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.12.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Algorithms_in_C++: numerical_methods/gram_schmidt.cpp File Reference</title>
|
|
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../jquery.js"></script>
|
|
<script type="text/javascript" src="../../dynsections.js"></script>
|
|
<script type="text/javascript" src="../../clipboard.js"></script>
|
|
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="../../navtreedata.js"></script>
|
|
<script type="text/javascript" src="../../navtree.js"></script>
|
|
<script type="text/javascript" src="../../resize.js"></script>
|
|
<script type="text/javascript" src="../../cookie.js"></script>
|
|
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
|
<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"],
|
|
});
|
|
</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>
|
|
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<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>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.12.0 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(1); });
|
|
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('../../',true,false,'search.php','Search',true);
|
|
$(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){initNavTree('d5/d33/gram__schmidt_8cpp.html','../../'); initResizable(true); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<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><!--header-->
|
|
<div class="contents">
|
|
|
|
<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 />
|
|
<code>#include <cmath></code><br />
|
|
<code>#include <iostream></code><br />
|
|
<code>#include "math.h"</code><br />
|
|
</div><div class="textblock"><div class="dynheader">
|
|
Include dependency graph for gram_schmidt.cpp:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d96/gram__schmidt_8cpp__incl.svg" width="412" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
|
Namespaces</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/de0/namespacenumerical__methods.html">numerical_methods</a></td></tr>
|
|
<tr class="memdesc:d1/de0/namespacenumerical__methods"><td class="mdescLeft"> </td><td class="mdescRight">for assert <br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><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 id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:ac4a4504924ecc9f12a2ebd80788ec01d" id="r_ac4a4504924ecc9f12a2ebd80788ec01d"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac4a4504924ecc9f12a2ebd80788ec01d">numerical_methods::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:ac4a4504924ecc9f12a2ebd80788ec01d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8eeaafdde8b56f459aadc6013cf078bc" id="r_a8eeaafdde8b56f459aadc6013cf078bc"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="#a8eeaafdde8b56f459aadc6013cf078bc">numerical_methods::gram_schmidt::projection</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:a8eeaafdde8b56f459aadc6013cf078bc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae6b496dce691e04f7f95ba0f0d33a289" id="r_ae6b496dce691e04f7f95ba0f0d33a289"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae6b496dce691e04f7f95ba0f0d33a289">numerical_methods::gram_schmidt::display</a> (const int &r, const int &c, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 > &B)</td></tr>
|
|
<tr class="separator:ae6b496dce691e04f7f95ba0f0d33a289"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0837468e1a653ed056e2cce3c914afa5" id="r_a0837468e1a653ed056e2cce3c914afa5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::gram_schmidt::gram_schmidt</a> (int r, const int &c, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 > &A, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 > B)</td></tr>
|
|
<tr class="separator:a0837468e1a653ed056e2cce3c914afa5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d" id="r_aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
|
|
<tr class="separator:aa8dca7b867074164d5f45b0f3851269d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
|
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft"> </td><td class="mdescRight">Main Function. <br /></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" 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_md87"></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" target="_blank">Akanksha Gupta</a> </dd></dl>
|
|
</div><h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ae6b496dce691e04f7f95ba0f0d33a289" name="ae6b496dce691e04f7f95ba0f0d33a289"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae6b496dce691e04f7f95ba0f0d33a289">◆ </a></span>display()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void numerical_methods::gram_schmidt::display </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const int &</td> <td class="paramname"><span class="paramname"><em>r</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const int &</td> <td class="paramname"><span class="paramname"><em>c</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 > &</td> <td class="paramname"><span class="paramname"><em>B</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<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>
|
|
<tr><td class="paramname">c</td><td>dimenaion of vectors </td></tr>
|
|
<tr><td class="paramname">B</td><td>stores orthogonalised vectors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 102</span> {</div>
|
|
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < r; ++i) {</div>
|
|
<div class="line"><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"><span class="lineno"> 105</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
|
<div class="line"><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"><span class="lineno"> 107</span> }</div>
|
|
<div class="line"><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"><span class="lineno"> 109</span> }</div>
|
|
<div class="line"><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="ac4a4504924ecc9f12a2ebd80788ec01d" name="ac4a4504924ecc9f12a2ebd80788ec01d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac4a4504924ecc9f12a2ebd80788ec01d">◆ </a></span>dot_product()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">double numerical_methods::gram_schmidt::dot_product </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &</td> <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &</td> <td class="paramname"><span class="paramname"><em>y</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const int &</td> <td class="paramname"><span class="paramname"><em>c</em></span> )</td>
|
|
</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>
|
|
<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>
|
|
<tr><td class="paramname">c</td><td>dimension of the vectors</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>sum </dd></dl>
|
|
<div class="fragment"><div class="line"><span class="lineno"> 60</span> {</div>
|
|
<div class="line"><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"><span class="lineno"> 62</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
|
<div class="line"><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"><span class="lineno"> 64</span> }</div>
|
|
<div class="line"><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"><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">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_ac4a4504924ecc9f12a2ebd80788ec01d_cgraph.svg" width="191" height="76"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a0837468e1a653ed056e2cce3c914afa5" name="a0837468e1a653ed056e2cce3c914afa5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0837468e1a653ed056e2cce3c914afa5">◆ </a></span>gram_schmidt()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void numerical_methods::gram_schmidt::gram_schmidt </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>r</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const int &</td> <td class="paramname"><span class="paramname"><em>c</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 > &</td> <td class="paramname"><span class="paramname"><em>A</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 >, 20 ></td> <td class="paramname"><span class="paramname"><em>B</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<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>
|
|
<tr><td class="paramname">A</td><td>stores input of given LI vectors </td></tr>
|
|
<tr><td class="paramname">B</td><td>stores orthogonalised vectors</td></tr>
|
|
</table>
|
|
</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"><span class="lineno"> 123</span> {</div>
|
|
<div class="line"><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"><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"><span class="lineno"> 126</span> <span class="stringliteral">"\n first "</span></div>
|
|
<div class="line"><span class="lineno"> 127</span> << c << <span class="stringliteral">" vectors are orthogonalised\n"</span>;</div>
|
|
<div class="line"><span class="lineno"> 128</span> r = c;</div>
|
|
<div class="line"><span class="lineno"> 129</span> }</div>
|
|
<div class="line"><span class="lineno"> 130</span> </div>
|
|
<div class="line"><span class="lineno"> 131</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a> = 1;</div>
|
|
<div class="line"><span class="lineno"> 132</span> </div>
|
|
<div class="line"><span class="lineno"> 133</span> <span class="keywordflow">while</span> (k <= r) {</div>
|
|
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">if</span> (k == 1) {</div>
|
|
<div class="line"><span class="lineno"> 135</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; j++)</div>
|
|
<div class="line"><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"><span class="lineno"> 137</span> }</div>
|
|
<div class="line"><span class="lineno"> 138</span> </div>
|
|
<div class="line"><span class="lineno"> 139</span> <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><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"><span class="lineno"> 141</span> all_projection{}; <span class="comment">/// array to store projections</span></div>
|
|
<div class="line"><span class="lineno"> 142</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
|
<div class="line"><span class="lineno"> 143</span> all_projection[i] = 0; <span class="comment">/// First initialised to zero</span></div>
|
|
<div class="line"><span class="lineno"> 144</span> }</div>
|
|
<div class="line"><span class="lineno"> 145</span> </div>
|
|
<div class="line"><span class="lineno"> 146</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> = 1;</div>
|
|
<div class="line"><span class="lineno"> 147</span> <span class="keywordflow">while</span> (l < k) {</div>
|
|
<div class="line"><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"><span class="lineno"> 149</span> temp{}; <span class="comment">/// to store previous projected array</span></div>
|
|
<div class="line"><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"><span class="lineno"> 151</span><span class="comment"> /// previous array will change</span></div>
|
|
<div class="line"><span class="lineno"> 152</span><span class="comment"></span> factor = <a class="code hl_function" href="#a8eeaafdde8b56f459aadc6013cf078bc">projection</a>(A[k - 1], B[l - 1], c);</div>
|
|
<div class="line"><span class="lineno"> 153</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
|
<div class="line"><span class="lineno"> 154</span> temp[i] = B[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a> - 1][i] * factor; <span class="comment">/// projected array created</span></div>
|
|
<div class="line"><span class="lineno"> 155</span> }</div>
|
|
<div class="line"><span class="lineno"> 156</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
|
<div class="line"><span class="lineno"> 157</span> all_projection[j] =</div>
|
|
<div class="line"><span class="lineno"> 158</span> all_projection[j] +</div>
|
|
<div class="line"><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"><span class="lineno"> 160</span><span class="comment"> /// previous vector and add them.</span></div>
|
|
<div class="line"><span class="lineno"> 161</span><span class="comment"></span> }</div>
|
|
<div class="line"><span class="lineno"> 162</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">l</a>++;</div>
|
|
<div class="line"><span class="lineno"> 163</span> }</div>
|
|
<div class="line"><span class="lineno"> 164</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < c; ++i) {</div>
|
|
<div class="line"><span class="lineno"> 165</span> B[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a> - 1][i] =</div>
|
|
<div class="line"><span class="lineno"> 166</span> A[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a> - 1][i] -</div>
|
|
<div class="line"><span class="lineno"> 167</span> all_projection[i]; <span class="comment">/// subtract total projection vector</span><span class="comment"></span></div>
|
|
<div class="line"><span class="lineno"> 168</span><span class="comment"> /// from the input vector</span></div>
|
|
<div class="line"><span class="lineno"> 169</span><span class="comment"></span> }</div>
|
|
<div class="line"><span class="lineno"> 170</span> }</div>
|
|
<div class="line"><span class="lineno"> 171</span> <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>++;</div>
|
|
<div class="line"><span class="lineno"> 172</span> }</div>
|
|
<div class="line"><span class="lineno"> 173</span> display(r, c, B); <span class="comment">// for displaying orthogoanlised vectors</span></div>
|
|
<div class="line"><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="acomposite__simpson__rule_8cpp_html_a1b74d828b33760094906797042b89442"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">numerical_methods::simpson_method::k</a></div><div class="ttdeci">double k(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition</b> composite_simpson_rule.cpp:117</div></div>
|
|
<div class="ttc" id="acomposite__simpson__rule_8cpp_html_a6d8df83a6f26ce24a75d3b358b7f5b8a"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a6d8df83a6f26ce24a75d3b358b7f5b8a">numerical_methods::simpson_method::l</a></div><div class="ttdeci">double l(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition</b> composite_simpson_rule.cpp:119</div></div>
|
|
<div class="ttc" id="agram__schmidt_8cpp_html_a8eeaafdde8b56f459aadc6013cf078bc"><div class="ttname"><a href="#a8eeaafdde8b56f459aadc6013cf078bc">numerical_methods::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">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_a0837468e1a653ed056e2cce3c914afa5_cgraph.svg" width="647" height="76"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">◆ </a></span>main()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int main </td>
|
|
<td>(</td>
|
|
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<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"><span class="lineno"> 248</span> {</div>
|
|
<div class="line"><span class="lineno"> 249</span> <span class="keywordtype">int</span> r = 0, c = 0;</div>
|
|
<div class="line"><span class="lineno"> 250</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// perform self tests</span></div>
|
|
<div class="line"><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"><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"><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"><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"><span class="lineno"> 255</span> </div>
|
|
<div class="line"><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"><span class="lineno"> 257</span> A{}; <span class="comment">/// a 2-D array for storing all vectors</span></div>
|
|
<div class="line"><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"><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"><span class="lineno"> 260</span><span class="comment"> /// storing vectors in array A</span></div>
|
|
<div class="line"><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"><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"><span class="lineno"> 263</span> << <span class="charliteral">'\n'</span>; <span class="comment">/// Input of vectors is taken</span></div>
|
|
<div class="line"><span class="lineno"> 264</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < c; ++j) {</div>
|
|
<div class="line"><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"><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"><span class="lineno"> 267</span> }</div>
|
|
<div class="line"><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"><span class="lineno"> 269</span> }</div>
|
|
<div class="line"><span class="lineno"> 270</span> </div>
|
|
<div class="line"><span class="lineno"> 271</span> <a class="code hl_function" href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::gram_schmidt::gram_schmidt</a>(r, c, A, B);</div>
|
|
<div class="line"><span class="lineno"> 272</span> </div>
|
|
<div class="line"><span class="lineno"> 273</span> <span class="keywordtype">double</span> dot = 0;</div>
|
|
<div class="line"><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"><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"><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"><span class="lineno"> 277</span> dot = <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(</div>
|
|
<div class="line"><span class="lineno"> 278</span> numerical_methods::gram_schmidt::dot_product(B[i], B[j], c));</div>
|
|
<div class="line"><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"><span class="lineno"> 280</span><span class="comment"> /// bound for the dot product take 0.1</span></div>
|
|
<div class="line"><span class="lineno"> 281</span><span class="comment"></span> {</div>
|
|
<div class="line"><span class="lineno"> 282</span> flag = 0;</div>
|
|
<div class="line"><span class="lineno"> 283</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><span class="lineno"> 284</span> }</div>
|
|
<div class="line"><span class="lineno"> 285</span> }</div>
|
|
<div class="line"><span class="lineno"> 286</span> }</div>
|
|
<div class="line"><span class="lineno"> 287</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
|
<div class="line"><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"><span class="lineno"> 289</span> <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><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_a0837468e1a653ed056e2cce3c914afa5"><div class="ttname"><a href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::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>
|
|
<div class="ttc" id="agram__schmidt_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdef"><b>Definition</b> gram_schmidt.cpp:181</div></div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="152" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a8eeaafdde8b56f459aadc6013cf078bc" name="a8eeaafdde8b56f459aadc6013cf078bc"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8eeaafdde8b56f459aadc6013cf078bc">◆ </a></span>projection()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">double numerical_methods::gram_schmidt::projection </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &</td> <td class="paramname"><span class="paramname"><em>x</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>< double, 10 > &</td> <td class="paramname"><span class="paramname"><em>y</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const int &</td> <td class="paramname"><span class="paramname"><em>c</em></span> )</td>
|
|
</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>
|
|
<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>
|
|
<tr><td class="paramname">c</td><td>dimension of each vector</td></tr>
|
|
</table>
|
|
</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"><span class="lineno"> 80</span> {</div>
|
|
<div class="line"><span class="lineno"> 81</span> <span class="keywordtype">double</span> dot =</div>
|
|
<div class="line"><span class="lineno"> 82</span> <a class="code hl_function" href="#ac4a4504924ecc9f12a2ebd80788ec01d">dot_product</a>(x, y, c); <span class="comment">/// The dot product of two vectors is taken</span></div>
|
|
<div class="line"><span class="lineno"> 83</span> <span class="keywordtype">double</span> anorm =</div>
|
|
<div class="line"><span class="lineno"> 84</span> <a class="code hl_function" href="#ac4a4504924ecc9f12a2ebd80788ec01d">dot_product</a>(y, y, c); <span class="comment">/// The norm of the second vector is taken.</span></div>
|
|
<div class="line"><span class="lineno"> 85</span> <span class="keywordtype">double</span> factor =</div>
|
|
<div class="line"><span class="lineno"> 86</span> dot /</div>
|
|
<div class="line"><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"><span class="lineno"> 88</span><span class="comment"> /// whose initial values are same as the 2nd vector.</span></div>
|
|
<div class="line"><span class="lineno"> 89</span><span class="comment"></span> <span class="keywordflow">return</span> factor;</div>
|
|
<div class="line"><span class="lineno"> 90</span>}</div>
|
|
<div class="ttc" id="agram__schmidt_8cpp_html_ac4a4504924ecc9f12a2ebd80788ec01d"><div class="ttname"><a href="#ac4a4504924ecc9f12a2ebd80788ec01d">numerical_methods::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>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_a8eeaafdde8b56f459aadc6013cf078bc_cgraph.svg" width="406" height="76"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">◆ </a></span>test()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void test </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</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"><span class="lineno"> 181</span> {</div>
|
|
<div class="line"><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"><span class="lineno"> 183</span> {{1, 0, 1, 0}, {1, 1, 1, 1}, {0, 1, 2, 1}}};</div>
|
|
<div class="line"><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"><span class="lineno"> 185</span> <span class="keywordtype">double</span> dot1 = 0;</div>
|
|
<div class="line"><span class="lineno"> 186</span> <a class="code hl_function" href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::gram_schmidt::gram_schmidt</a>(3, 4, a1, b1);</div>
|
|
<div class="line"><span class="lineno"> 187</span> <span class="keywordtype">int</span> flag = 1;</div>
|
|
<div class="line"><span class="lineno"> 188</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div>
|
|
<div class="line"><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"><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"><span class="lineno"> 191</span> numerical_methods::gram_schmidt::dot_product(b1[i], b1[j], 4));</div>
|
|
<div class="line"><span class="lineno"> 192</span> <span class="keywordflow">if</span> (dot1 > 0.1) {</div>
|
|
<div class="line"><span class="lineno"> 193</span> flag = 0;</div>
|
|
<div class="line"><span class="lineno"> 194</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><span class="lineno"> 195</span> }</div>
|
|
<div class="line"><span class="lineno"> 196</span> }</div>
|
|
<div class="line"><span class="lineno"> 197</span> }</div>
|
|
<div class="line"><span class="lineno"> 198</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
|
<div class="line"><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"><span class="lineno"> 200</span> assert(flag == 1);</div>
|
|
<div class="line"><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"><span class="lineno"> 202</span> </div>
|
|
<div class="line"><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"><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"><span class="lineno"> 205</span> <span class="keywordtype">double</span> dot2 = 0;</div>
|
|
<div class="line"><span class="lineno"> 206</span> <a class="code hl_function" href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::gram_schmidt::gram_schmidt</a>(2, 2, a2, b2);</div>
|
|
<div class="line"><span class="lineno"> 207</span> flag = 1;</div>
|
|
<div class="line"><span class="lineno"> 208</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
|
<div class="line"><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"><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"><span class="lineno"> 211</span> numerical_methods::gram_schmidt::dot_product(b2[i], b2[j], 2));</div>
|
|
<div class="line"><span class="lineno"> 212</span> <span class="keywordflow">if</span> (dot2 > 0.1) {</div>
|
|
<div class="line"><span class="lineno"> 213</span> flag = 0;</div>
|
|
<div class="line"><span class="lineno"> 214</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><span class="lineno"> 215</span> }</div>
|
|
<div class="line"><span class="lineno"> 216</span> }</div>
|
|
<div class="line"><span class="lineno"> 217</span> }</div>
|
|
<div class="line"><span class="lineno"> 218</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
|
<div class="line"><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"><span class="lineno"> 220</span> assert(flag == 1);</div>
|
|
<div class="line"><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"><span class="lineno"> 222</span> </div>
|
|
<div class="line"><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"><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"><span class="lineno"> 225</span> <span class="keywordtype">double</span> dot3 = 0;</div>
|
|
<div class="line"><span class="lineno"> 226</span> <a class="code hl_function" href="#a0837468e1a653ed056e2cce3c914afa5">numerical_methods::gram_schmidt::gram_schmidt</a>(2, 3, a3, b3);</div>
|
|
<div class="line"><span class="lineno"> 227</span> flag = 1;</div>
|
|
<div class="line"><span class="lineno"> 228</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 1; ++i) {</div>
|
|
<div class="line"><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"><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"><span class="lineno"> 231</span> numerical_methods::gram_schmidt::dot_product(b3[i], b3[j], 3));</div>
|
|
<div class="line"><span class="lineno"> 232</span> <span class="keywordflow">if</span> (dot3 > 0.1) {</div>
|
|
<div class="line"><span class="lineno"> 233</span> flag = 0;</div>
|
|
<div class="line"><span class="lineno"> 234</span> <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><span class="lineno"> 235</span> }</div>
|
|
<div class="line"><span class="lineno"> 236</span> }</div>
|
|
<div class="line"><span class="lineno"> 237</span> }</div>
|
|
<div class="line"><span class="lineno"> 238</span> <span class="keywordflow">if</span> (flag == 0)</div>
|
|
<div class="line"><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"><span class="lineno"> 240</span> assert(flag == 1);</div>
|
|
<div class="line"><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"><span class="lineno"> 242</span>}</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="../../dir_9c6faab82c22511b50177aa2e38e2780.html">numerical_methods</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.12.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|