mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-25 14:23:03 +08:00
Documentation for 98b2609e1b
This commit is contained in:
@@ -114,10 +114,11 @@ Include dependency graph for newton_raphson_method.cpp:</div>
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:a002b2f4894492820fe708b1b7e7c5e70"><td class="memItemLeft" align="right" valign="top"><a id="a002b2f4894492820fe708b1b7e7c5e70"></a>
|
||||
#define </td><td class="memItemRight" valign="bottom"><b>EPSILON</b>   1e-6</td></tr>
|
||||
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd3/newton__raphson__method_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>   1e-10</td></tr>
|
||||
<tr class="memdesc:a002b2f4894492820fe708b1b7e7c5e70"><td class="mdescLeft"> </td><td class="mdescRight">system accuracy limit <br /></td></tr>
|
||||
<tr class="separator:a002b2f4894492820fe708b1b7e7c5e70"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0a3abbca80bc98e7abcb3ae73abe0f14"><td class="memItemLeft" align="right" valign="top"><a id="a0a3abbca80bc98e7abcb3ae73abe0f14"></a>
|
||||
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a>   50000</td></tr>
|
||||
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a>   INT16_MAX</td></tr>
|
||||
<tr class="memdesc:a0a3abbca80bc98e7abcb3ae73abe0f14"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of iterations to check. <br /></td></tr>
|
||||
<tr class="separator:a0a3abbca80bc98e7abcb3ae73abe0f14"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
@@ -161,10 +162,12 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>define \(f(x)\) to find root for </p>
|
||||
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {</div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> (<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(i, 3) - (4 * i) - 9); <span class="comment">// original equation</span></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div>
|
||||
<p>define \(f(x)\) to find root for. Currently defined as: </p><p class="formulaDsp">
|
||||
\[ f(x) = x^3 - 4x - 9 \]
|
||||
</p>
|
||||
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> (<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(i, 3) - (4 * i) - 9); <span class="comment">// original equation</span></div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -197,10 +200,12 @@ Here is the call graph for this function:</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>define the derivative function \(f'(x)\) </p>
|
||||
<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> ((3 * <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(i, 2)) - 4); <span class="comment">// derivative of equation</span></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> }</div>
|
||||
<p>define the derivative function \(f'(x)\) For the current problem, it is: </p><p class="formulaDsp">
|
||||
\[ f'(x) = 3x^2 - 4 \]
|
||||
</p>
|
||||
<div class="fragment"><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> ((3 * <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>(i, 2)) - 4); <span class="comment">// derivative of equation</span></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -225,29 +230,29 @@ Here is the call graph for this function:</div>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Main function </p>
|
||||
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/srand.html">std::srand</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/chrono/c/time.html">std::time</a>(<span class="keyword">nullptr</span>)); <span class="comment">// initialize randomizer</span></div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> z, c = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 100, m, n;</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">int</span> i;</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"\nInitial approximation: "</span> << c;</div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// start iterations</span></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a>; i++) {</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m = <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a2003b5b2dcfff0769b957ab5c968b03d">eq</a>(c);</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  n = <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a3d3f7f41977394680af6ebbed96f3386">eq_der</a>(c);</div>
|
||||
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/srand.html">std::srand</a>(<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/chrono/c/time.html">std::time</a>(<span class="keyword">nullptr</span>)); <span class="comment">// initialize randomizer</span></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> z, c = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a>() % 100, m, n;</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">int</span> i;</div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  z = c - (m / n);</div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  c = z;</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (std::abs(m) < EPSILON) <span class="comment">// stoping criteria</span></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"\nInitial approximation: "</span> << c;</div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// start iterations</span></div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">for</span> (i = 0; i < <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a>; i++) {</div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m = <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a2003b5b2dcfff0769b957ab5c968b03d">eq</a>(c);</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  n = <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a3d3f7f41977394680af6ebbed96f3386">eq_der</a>(c);</div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"\n\nRoot: "</span> << z << <span class="stringliteral">"\t\tSteps: "</span> << i << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  z = c - (m / n);</div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  c = z;</div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (std::abs(m) < <a class="code" href="../../de/dd3/newton__raphson__method_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>) <span class="comment">// stoping criteria</span></div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <span class="stringliteral">"\n\nRoot: "</span> << z << <span class="stringliteral">"\t\tSteps: "</span> << i << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -260,11 +265,12 @@ Here is the call graph for this function:</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<div class="ttc" id="asrand_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/srand.html">std::srand</a></div><div class="ttdeci">T srand(T... args)</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a0a3abbca80bc98e7abcb3ae73abe0f14"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a></div><div class="ttdeci">#define MAX_ITERATIONS</div><div class="ttdoc">Maximum number of iterations to check.</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:22</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a2003b5b2dcfff0769b957ab5c968b03d"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a2003b5b2dcfff0769b957ab5c968b03d">eq</a></div><div class="ttdeci">static double eq(double i)</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:26</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a3d3f7f41977394680af6ebbed96f3386"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a3d3f7f41977394680af6ebbed96f3386">eq_der</a></div><div class="ttdeci">static double eq_der(double i)</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:32</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a0a3abbca80bc98e7abcb3ae73abe0f14"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a0a3abbca80bc98e7abcb3ae73abe0f14">MAX_ITERATIONS</a></div><div class="ttdeci">#define MAX_ITERATIONS</div><div class="ttdoc">Maximum number of iterations to check.</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:21</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a2003b5b2dcfff0769b957ab5c968b03d"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a2003b5b2dcfff0769b957ab5c968b03d">eq</a></div><div class="ttdeci">static double eq(double i)</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:29</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a3d3f7f41977394680af6ebbed96f3386"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a3d3f7f41977394680af6ebbed96f3386">eq_der</a></div><div class="ttdeci">static double eq_der(double i)</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:39</div></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 class="ttc" id="arand_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/random/rand.html">std::rand</a></div><div class="ttdeci">T rand(T... args)</div></div>
|
||||
<div class="ttc" id="anewton__raphson__method_8cpp_html_a002b2f4894492820fe708b1b7e7c5e70"><div class="ttname"><a href="../../de/dd3/newton__raphson__method_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a></div><div class="ttdeci">#define EPSILON</div><div class="ttdoc">system accuracy limit</div><div class="ttdef"><b>Definition:</b> newton_raphson_method.cpp:20</div></div>
|
||||
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
|
||||
<div class="ttc" id="atime_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/chrono/c/time.html">std::time</a></div><div class="ttdeci">T time(T... args)</div></div>
|
||||
<div class="ttc" id="apow_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a></div><div class="ttdeci">T pow(T... args)</div></div>
|
||||
@@ -272,7 +278,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_9c6faab82c22511b50177aa2e38e2780.html">numerical_methods</a></li><li class="navelem"><a class="el" href="../../de/dd3/newton__raphson__method_8cpp.html">newton_raphson_method.cpp</a></li>
|
||||
<li class="footer">Generated on Sun Jun 21 2020 19:43:36 for Algorithms_in_C++ by
|
||||
<li class="footer">Generated on Mon Jun 22 2020 11:53:38 for Algorithms_in_C++ by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.18 </li>
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user