📄 a00090.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>The Polynomials Templates Library: Polynomial< T > Class Template Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.5 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li id="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul></div><div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Alphabetical List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul></div><h1>Polynomial< T > Class Template Reference<br><small>[<a class="el" href="a00099.html">The Polynomial Templates</a>]</small></h1><!-- doxytag: class="Polynomial" --><!-- doxytag: inherits="std::vector" --><code>#include <<a class="el" href="a00107.html">Polynomial.h</a>></code><p><p>Inheritance diagram for Polynomial< T >:<p><center><img src="a00090.png" usemap="#Polynomial< T >_map" border="0" alt=""></center><map name="Polynomial< T >_map"></map><a href="a00002.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2><h3>template<class T><br> class Polynomial< T ></h3>defines operations on polynomials.<p>Class Polynomial is based on the class <code>std::vector</code>, and thus requires the Standard C++ Library (STL).<p>Coeficients are stored with lowest degree coeficent first, i.e.: the polynomial <img class="formulaInl" alt="${a_0}+{a_1}x+{a_2}x^2+{a_3}x^3$" src="form_1.png"> will be stored in the vector as <img class="formulaInl" alt="$[a_0, a_1, a_2, a_3]$" src="form_2.png"> .<p>The coeficient <img class="formulaInl" alt="$a_0$" src="form_3.png"> of degree 0 is always populated. That means <code>P</code>[0] will always be valid for a polynomial <code>P</code>.<p>Evaluations are made using Horner's recurence, or synthetic division.<p>Valid types for template parameter <em>T</em> are any floating point, or complex types which define operators +, -, *, /, and functions abs().<p>Several constructors are available, the following example shows them and their usage.<p><dl compact><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"><span class="comment">// constructor.cpp : show usage of Polynomial class constructors.</span><span class="preprocessor">#include <vector></span><span class="preprocessor">#include <<a class="code" href="a00096.html">polynomial.h</a>></span><span class="keywordtype">int</span> main() { <span class="comment">// Initialize p(x) = 5x^4 + 3x^2 + x + 10</span> Polynomial<double> p(4, 10., 1., 3., 0., 5.); <span class="comment">// Initialize q(x) = x^3 + x^2 - 5x + 2</span> Polynomial<double> q(3, 2., -5., 1., 1.); <span class="comment">// Initialize r(x) = x^20 - 1</span> Polynomial<double> r; r.resize(21); r[20] = 1; r[0] = -1; <span class="comment">// initialize u(x) = 1</span> Polynomial<double> u(1.); std::vector<float> v; Polynomial<float> t; <span class="comment">// initialize v</span> <span class="comment">//...</span> <span class="comment">// create a polynomial from vector v</span> t = v; <span class="keywordflow">return</span> 0;}</pre></div></dd></dl><dl compact><dt><b>Author:</b></dt><dd>Michael Roy <a href="mailto:tika1966@yahoo.com">tika1966@yahoo.com</a> </dd></dl><dl compact><dt><b>Version:</b></dt><dd>0.1</dd></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00096.html">polynomial.h</a> for general support function<br> <a class="el" href="a00097.html">polyzero.h</a> for polynomial roots support funtions<br> <a class="el" href="a00094.html">laguerre.h</a> for roots-finding by Laguerre's method<br> <a class="el" href="a00095.html">muller.h</a> for roots-finding by Muller's method </dd></dl><p><p>Definition at line <a class="el" href="a00107.html#l00086">86</a> of file <a class="el" href="a00107.html">Polynomial.h</a>.<table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr><tr><td colspan="2"><div class="groupHeader">Construction</div></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#7de9b11369dc2daf64bbc609b3454baa">Polynomial</a> (const T &a=T(0))</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#aaeed1fb3dc10820de49a00bc4dd6821">Polynomial</a> (const std::vector< T > &p)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#08b4dcb98feb2d90906f1e7697249639">Polynomial</a> (unsigned n, T a0,...)</td></tr><tr><td colspan="2"><div class="groupHeader">Methods</div></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#7d71a634b3ab7d5071c031633b9614d5">compact</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#b433e0edb11b32a205a9d07b89aefa8f">degree</a> () const </td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#ba49e76c2d516f6aa270b8333e99df8f">degree</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#043f1f1821306fe3cc497ca3400fc703">shift</a> (int n)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#246af5c906ec9a1a2fb7befea6d991ae">makeMonic</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#2fd33ef58c1d4dc24877322027a8bb50">isMonic</a> () const </td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#c107df05015e0113aee17e6665ab8a60">getDerivative</a> (<a class="el" href="a00090.html">Polynomial</a>< T > &pp) const </td></tr><tr><td colspan="2"><div class="groupHeader">Evaluation</div></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#a845bf5cc0f93217a7c7f403a0bc9d38">eval</a> (const T &x) const </td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#4dc10e1190f7f71f0d04e9871c1d7a2f">evalAndDeflate</a> (const T &a, <a class="el" href="a00090.html">Polynomial</a>< T > &q) const </td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#3035df8b06fcc5015efb56762fc68f93">evalAndDerive</a> (const T &x, T &ppx) const </td></tr><tr><td colspan="2"><div class="groupHeader">Operators</div></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="a00090.html">Polynomial</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#326ef308fcad15d7d1f778bb3b8beb31">operator=</a> (const std::vector< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="a00090.html">Polynomial</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#23b2b39cd96c44c49bb31c1229165119">operator+=</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="a00090.html">Polynomial</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#be51eb0dc8e4a3721479be4b11536da0">operator-=</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#9c6951d37215e36ec4d171d26f90f487">operator *=</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &p)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="a00090.html">Polynomial</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#b2f6bf0ca6914dfcfb6e03862d162c7e">operator *=</a> (const T &f)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#11458f42a6275e6c384467ca5c398e95">operator/=</a> (const T &s)</td></tr><tr><td colspan="2"><br><h2>Friends</h2></td></tr><tr><td colspan="2"><div class="groupHeader">Non-member operators</div></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#b6cb5632c793b07705ce488ac0fab8eb">operator+</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &p, const <a class="el" href="a00090.html">Polynomial</a>< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#6c43bbb2372812f10b97bb365f482a24">operator-</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &p, const <a class="el" href="a00090.html">Polynomial</a>< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#cd642f1b8ab48b8b99394fffc24727d6">operator *</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &p, const <a class="el" href="a00090.html">Polynomial</a>< T > &q)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#955b65f7ae51e1a45bcf985c738640eb">operator *</a> (const T &s, const <a class="el" href="a00090.html">Polynomial</a>< T > &p)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00090.html">Polynomial</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html#fedcfef27cf2f0a1f0075272a849b951">operator/</a> (const <a class="el" href="a00090.html">Polynomial</a>< T > &p, const T &s)</td></tr></table><hr><h2>Constructor & Destructor Documentation</h2><a class="anchor" name="7de9b11369dc2daf64bbc609b3454baa"></a><!-- doxytag: member="Polynomial::Polynomial" ref="7de9b11369dc2daf64bbc609b3454baa" args="(const T &a=T(0))" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="mdPrefix" colspan="4">template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"><a class="el" href="a00090.html">Polynomial</a>< T >::<a class="el" href="a00090.html">Polynomial</a> </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const T & </td> <td class="mdname1" valign="top" nowrap> <em>a</em> = <code>T(0)</code> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, explicit]</code></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>default constructor.<p>Creates an empty polynomial of degree zero, you can optionally specify a scalar value.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>a</em> </td><td>default scalar value for coeficient <img class="formulaInl" alt="$a_0$" src="form_3.png"> . </td></tr> </table></dl><p>Definition at line <a class="el" href="a00107.html#l00100">100</a> of file <a class="el" href="a00107.html">Polynomial.h</a>. </td> </tr></table><a class="anchor" name="aaeed1fb3dc10820de49a00bc4dd6821"></a><!-- doxytag: member="Polynomial::Polynomial" ref="aaeed1fb3dc10820de49a00bc4dd6821" args="(const std::vector< T > &p)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="mdPrefix" colspan="4">template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"><a class="el" href="a00090.html">Polynomial</a>< T >::<a class="el" href="a00090.html">Polynomial</a> </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const std::vector< T > & </td> <td class="mdname1" valign="top" nowrap> <em>p</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, explicit]</code></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>copy constructor.<p>Creates an exact copy of Polynomial <img class="formulaInl" alt="$p$" src="form_35.png"><p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>p</em> </td><td>source polynomial. </td></tr> </table></dl><p>Definition at line <a class="el" href="a00107.html#l00113">113</a> of file <a class="el" href="a00107.html">Polynomial.h</a>. </td> </tr></table><a class="anchor" name="08b4dcb98feb2d90906f1e7697249639"></a><!-- doxytag: member="Polynomial::Polynomial" ref="08b4dcb98feb2d90906f1e7697249639" args="(unsigned n, T a0,...)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="mdPrefix" colspan="4">template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"><a class="el" href="a00090.html">Polynomial</a>< T >::<a class="el" href="a00090.html">Polynomial</a> </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">unsigned </td> <td class="mdname" nowrap> <em>n</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>T </td> <td class="mdname" nowrap> <em>a0</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap> </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -