Documentation for c26eea874d

This commit is contained in:
realstealthninja
2025-05-19 11:38:33 +00:00
parent c7a9a42397
commit 14583a2f33
2829 changed files with 30266 additions and 21669 deletions

View File

@@ -4,7 +4,7 @@
<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="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: numerical_methods/brent_method_extrema.cpp Source File</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
@@ -60,7 +60,7 @@ window.MathJax = {
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -124,7 +124,7 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="headertitle"><div class="title">brent_method_extrema.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../db/d01/brent__method__extrema_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<a href="../../db/d01/brent__method__extrema_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#a525335710b53cb064ca56b936120431e"> 16</a></span><span class="preprocessor">#define _USE_MATH_DEFINES </span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;cassert&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &lt;cmath&gt;</span></div>
@@ -138,7 +138,7 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor"> std::sqrt( \</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor"> std::numeric_limits&lt;double&gt;::epsilon()) </span></div>
</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span></div>
<div class="foldopen" id="foldopen00036" data-start="{" data-end="}">
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#a1aa76a6d5fd4d333f9072beff1dc486b"> 36</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#a1aa76a6d5fd4d333f9072beff1dc486b">get_minima</a>(<span class="keyword">const</span> std::function&lt;<span class="keywordtype">double</span>(<span class="keywordtype">double</span>)&gt; &amp;f, <span class="keywordtype">double</span> lim_a,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">double</span> lim_b) {</div>
@@ -146,8 +146,8 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">if</span> (lim_a &gt; lim_b) {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> std::swap(lim_a, lim_b);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::abs(lim_a - lim_b) &lt;= <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>) {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Search range must be greater than &quot;</span> &lt;&lt; <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (std::abs(lim_a - lim_b) &lt;= EPSILON) {</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;Search range must be greater than &quot;</span> &lt;&lt; EPSILON &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">return</span> lim_a;</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> }</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
@@ -167,7 +167,7 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<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="keywordflow">do</span> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> mid_point = (lim_a + lim_b) / 2.f;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> tolerance = <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a> * std::abs(x);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> tolerance = EPSILON * std::abs(x);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> tolerance2 = 2 * tolerance;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (std::abs(e) &gt; tolerance2) {</div>
@@ -242,7 +242,7 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordflow">return</span> x;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span>}</div>
</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span></div>
<div class="foldopen" id="foldopen00144" data-start="{" data-end="}">
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0"> 144</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a>() {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// define the function to minimize as a lambda function</span></div>
@@ -256,11 +256,11 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::cout &lt;&lt; minima &lt;&lt; <span class="stringliteral">&quot;...&quot;</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> assert(std::abs(minima - 2) &lt; <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> assert(std::abs(minima - 2) &lt; EPSILON);</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed\n&quot;</span>;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span>}</div>
</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span></div>
<div class="foldopen" id="foldopen00166" data-start="{" data-end="}">
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#a0283886819c7c140a023582b7269e2d0"> 166</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a>() {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// define the function to maximize as a lambda function</span></div>
@@ -275,11 +275,11 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> std::cout &lt;&lt; minima &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; M_E &lt;&lt; <span class="stringliteral">&quot;)...&quot;</span>;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> assert(std::abs(minima - M_E) &lt; <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> assert(std::abs(minima - M_E) &lt; EPSILON);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed\n&quot;</span>;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span>}</div>
</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span></div>
<div class="foldopen" id="foldopen00189" data-start="{" data-end="}">
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#a6d0455dd5c30adda100e95f0423c786e"> 189</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a>() {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// define the function to maximize as a lambda function</span></div>
@@ -292,16 +292,16 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<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> std::cout &lt;&lt; minima &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; M_PI &lt;&lt; <span class="stringliteral">&quot;)...&quot;</span>;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> assert(std::abs(minima - M_PI) &lt; <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a>);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> assert(std::abs(minima - M_PI) &lt; EPSILON);</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> std::cout &lt;&lt; <span class="stringliteral">&quot;passed\n&quot;</span>;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span>}</div>
</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span></div>
<div class="foldopen" id="foldopen00205" data-start="{" data-end="}">
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="../../db/d01/brent__method__extrema_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 205</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> std::cout.precision(18);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Computations performed with machine epsilon: &quot;</span> &lt;&lt; <a class="code hl_define" href="../../db/d01/brent__method__extrema_8cpp.html#a002b2f4894492820fe708b1b7e7c5e70">EPSILON</a></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Computations performed with machine epsilon: &quot;</span> &lt;&lt; EPSILON</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <a class="code hl_function" href="../../db/d01/brent__method__extrema_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a>();</div>
@@ -311,7 +311,6 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span>}</div>
</div>
<div class="ttc" id="abrent__method__extrema_8cpp_html_a002b2f4894492820fe708b1b7e7c5e70"><div class="ttname"><a href="../../db/d01/brent__method__extrema_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> <a href="#l00024">brent_method_extrema.cpp:24</a></div></div>
<div class="ttc" id="abrent__method__extrema_8cpp_html_a0283886819c7c140a023582b7269e2d0"><div class="ttname"><a href="../../db/d01/brent__method__extrema_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a></div><div class="ttdeci">void test2()</div><div class="ttdoc">Test function to find root for the function in the interval Expected result: .</div><div class="ttdef"><b>Definition</b> <a href="#l00166">brent_method_extrema.cpp:166</a></div></div>
<div class="ttc" id="abrent__method__extrema_8cpp_html_a1440a7779ac56f47a3f355ce4a8c7da0"><div class="ttname"><a href="../../db/d01/brent__method__extrema_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a></div><div class="ttdeci">void test1()</div><div class="ttdoc">Test function to find root for the function in the interval Expected result = 2.</div><div class="ttdef"><b>Definition</b> <a href="#l00144">brent_method_extrema.cpp:144</a></div></div>
<div class="ttc" id="abrent__method__extrema_8cpp_html_a1aa76a6d5fd4d333f9072beff1dc486b"><div class="ttname"><a href="../../db/d01/brent__method__extrema_8cpp.html#a1aa76a6d5fd4d333f9072beff1dc486b">get_minima</a></div><div class="ttdeci">double get_minima(const std::function&lt; double(double)&gt; &amp;f, double lim_a, double lim_b)</div><div class="ttdoc">Get the real root of a function in the given interval.</div><div class="ttdef"><b>Definition</b> <a href="#l00036">brent_method_extrema.cpp:36</a></div></div>
@@ -323,7 +322,7 @@ $(function(){initNavTree('db/d01/brent__method__extrema_8cpp_source.html','../..
<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="../../db/d01/brent__method__extrema_8cpp.html">brent_method_extrema.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>
<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.13.2 </li>
</ul>
</div>
</body>