|
|
Line 1: |
Line 1: |
| In [[mathematics]], '''Horner's method''' (also known as '''Horner scheme''' in the UK or '''Horner's rule''' in the U.S.<ref name="Cormen et al.">{{cite book|last=Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein|title=Introduction to Algorithms|edition=3rd|year=2009|publisher=MIT Press|pages=41, 900, 990}}</ref><ref name="HornerRule">{{cite web|title=Wolfram MathWorld: Horner's Rule|url=http://mathworld.wolfram.com/HornersRule.html}}</ref>) is either of two things: (i) an [[algorithm]] for calculating [[polynomial]]s, which consists of transforming the [[Monomial basis|monomial form]] into a computationally efficient form;<ref name="HornerRule" /> or (ii) a method for approximating the roots of a polynomial.<ref name="HornerMethod">{{cite web|title=Wolfram MathWorld: Horner's Method|url=http://mathworld.wolfram.com/HornersMethod.html}}</ref> The latter is also known as '''Ruffini–Horner's method'''.<ref>{{cite web|title=French Wikipedia: Méthode de Ruffini-Horner|url=http://fr.wikipedia.org/wiki/M%C3%A9thode_de_Ruffini-Horner}}</ref>
| | Let's look an actual registry scan and a few of what you'll see whenever you do one on a computer. This test was completed on a computer which was not working as it must, operating at slow speed and having certain issues with freezing up.<br><br>Most of the reliable companies will offer a full money back guarantee. This means which we have the chance to receive a cash back if you find the registry cleaning has not delivered what we expected.<br><br>StreamCI.dll is a file selected by the default Windows Audio driver to aid procedure the various audio settings on the program. Although this file is regarded as the most important on many different Windows systems, StreamCI.dll is continually causing a lot of errors that have to be repaired. The advantageous news is the fact that you are able to fix this error by utilizing many effortless to work procedures that usually solve all of the possible issues that are causing the error to show on a PC.<br><br>Paid registry cleaners found on the additional hand, I have found, are frequently inexpensive. They provide standard, free changes or at least cheap changes. This follows because the software manufacturer must confirm their product is best in staying ahead of its competitors.<br><br>Google Chrome crashes on Windows 7 when the registry entries are improperly modified. Missing registry keys or registry keys with wrong values will lead to runtime errors and thereby the issue happens. We are recommended to scan the entire system registry and review the outcome. Attempt the registry repair procedure using third-party [http://bestregistrycleanerfix.com/registry-reviver registry reviver] software.<br><br>You must equally see with it that it is pretty easy to download plus install. We could avoid those products which will need we a surprisingly complicated set of instructions. Furthermore, we should no longer need any other system requirements.<br><br>The 'registry' is just the central database that stores all the settings plus choices. It's a absolutely important part of the XP program, meaning that Windows is continually adding and updating the files inside it. The difficulties happen when Windows actually corrupts & loses certain of these files. This makes the computer run slow, as it attempts hard to obtain them again.<br><br>There is a lot a wise registry cleaner could do for your computer. It could check for and download updates for Windows, Java plus Adobe. Keeping changes current is an important piece of wise computer health. It may additionally protect your individual plus company confidentiality in addition to your online safety. |
| | |
| These methods are named after the British mathematician [[William George Horner]], although they were known before him by [[Paolo Ruffini]]<ref name="Cajori">[[Florian Cajori]], [http://projecteuclid.org/DPubS/Repository/1.0/Disseminate?view=body&id=pdf_1&handle=euclid.bams/1183421253 Horner's method of approximation anticipated by Ruffini], Bulletin of the American Mathematical Society, Vol. 17, No. 9, pp. 409–414, 1911 (read before the Southwestern Section of the American Mathematical Society on November 26, 1910).</ref> and, six hundred years earlier, by the Chinese mathematician [[Qin Jiushao]].<ref>''It is obvious that this procedure is a Chinese invention'', Ulrich Librecht, Chinese Mathematics in the Thirteenth Century, Chapter 13, '' Equations of Higher Degree'', p178 Dover, ISBN 0-486-44619-0</ref>
| |
| | |
| ==Description of the algorithm==
| |
| Given the polynomial
| |
| | |
| :<math>p(x) = \sum_{i=0}^n a_i x^i = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + \cdots + a_n x^n,</math>
| |
| | |
| where <math>a_0, \ldots, a_n</math> are real numbers, we wish to evaluate the polynomial at a specific value of <math>x</math>, say <math>x_0</math>.
| |
| | |
| To accomplish this, we define a new sequence of constants as follows:
| |
| | |
| :<math>\begin{align}
| |
| b_n & := a_n \\
| |
| b_{n-1} & := a_{n-1} + b_n x_0 \\
| |
| & {}\ \ \vdots \\
| |
| b_0 & := a_0 + b_1 x_0.
| |
| \end{align}</math>
| |
| | |
| Then <math>b_0</math> is the value of <math>p(x_0)</math>.
| |
| | |
| To see why this works, note that the polynomial can be written in the form
| |
| | |
| :<math>p(x) = a_0 + x(a_1 + x(a_2 + \cdots + x(a_{n-1} + a_n x)\cdots)). \, </math>
| |
| | |
| Thus, by iteratively substituting the <math>b_i</math> into the expression,
| |
| : <math>
| |
| \begin{align}
| |
| p(x_0) & = a_0 + x_0(a_1 + x_0(a_2 + \cdots + x_0(a_{n-1} + b_n x_0)\cdots)) \\
| |
| & = a_0 + x_0(a_1 + x_0(a_2 + \cdots + x_0(b_{n-1})\cdots)) \\
| |
| & {} \ \ \vdots \\
| |
| & = a_0 + x_0(b_1) \\
| |
| & = b_0.
| |
| \end{align}
| |
| </math>
| |
| | |
| ==Examples==
| |
| Evaluate
| |
| :<math>f(x)=2x^3-6x^2+2x-1\,</math> for <math>x=3.\;</math>
| |
| | |
| We use [[synthetic division]] as follows:
| |
| | |
| x₀│ x³ x² x¹ x⁰
| |
| 3 │ 2 −6 2 −1
| |
| │ 6 0 6
| |
| └────────────────────────
| |
| 2 0 2 5
| |
| | |
| The entries in the third row are the sum of those in the first two. Each entry in the second row is the product of the ''x''-value (3 in this example) with the third-row entry immediately to the left. The entries in the first row are the coefficients of the polynomial to be evaluated. Then the remainder of <math>f(x)</math> on division by <math>x-3</math> is 5.
| |
| | |
| But by the remainder theorem, we know that the remainder is <math>f(3) </math>. Thus <math>f(3) = 5</math>
| |
| | |
| In this example, if <math>a_3 = 2, a_2 = -6, a_1 = 2, a_0 = -1</math> we can see that <math>b_3 = 2, b_2 = 0, b_1 = 2, b_0 = 5 </math>, the entries in the third row. So, synthetic division is based on Horner's method.
| |
| | |
| As a consequence of the [[polynomial remainder theorem]], the entries in the third row are the coefficients of the second-degree polynomial, the quotient of <math>f(x)</math> on division by <math> x-3 </math>.
| |
| The remainder is 5. This makes Horner's method useful for [[polynomial long division]].
| |
| | |
| Divide <math>x^3-6x^2+11x-6\,</math> by <math>x-2\,</math>:
| |
| | |
| 2 │ 1 -6 11 -6
| |
| │ 2 -8 6
| |
| └────────────────────────
| |
| 1 -4 3 0
| |
| | |
| The quotient is <math>x^2-4x+3\,</math>.
| |
| | |
| Let <math>f_1(x)=4x^4-6x^3+3x-5\,</math> and <math>f_2(x)=2x-1\,</math>. Divide <math>f_1(x)\,</math> by <math>f_2\,(x)</math> using Horner's method.
| |
| | |
| 2 │ 4 -6 0 3 │ -5
| |
| ────┼──────────────────────┼───────
| |
| 1 │ 2 -2 -1 │ 1
| |
| │ │
| |
| └──────────────────────┼───────
| |
| 2 -2 -1 1 │ -4
| |
| | |
| The third row is the sum of the first two rows, divided by 2. Each entry in the second row is the product of 1 with the third-row entry to the left. The answer is
| |
| | |
| :<math>\frac{f_1(x)}{f_2(x)}=2x^3-2x^2-x+1-\frac{4}{2x-1}.</math>
| |
| | |
| ===Floating point multiplication and division===
| |
| {{main|multiplication algorithm#Shift and add}}
| |
| | |
| Horner's method is a fast, code-efficient method for multiplication and division of binary numbers on a [[microcontroller]] with no [[binary multiplier|hardware multiplier]]. One of the binary numbers to be multiplied is represented as a trivial polynomial, where, (using the above notation): a<sub>i</sub> = 1, and x = 2. Then, x (or x to some power) is repeatedly factored out. In this [[binary numeral system]] (base 2), x = 2, so powers of 2 are repeatedly factored out.
| |
| | |
| ====Example====
| |
| For example, to find the product of two numbers, (0.15625) and ''m'':
| |
| | |
| :<math>
| |
| \begin{align}
| |
| ( 0.15625) m & = (0.00101_b) m = ( 2^{-3} + 2^{-5}) m = (2^{-3})m + (2^{-5})m \\[4pt]
| |
| & = 2^{-3} (m + (2^{-2})m) = 2^{-3} (m + 2^{-2} (m)).
| |
| \end{align}
| |
| </math>
| |
| | |
| ====Method====
| |
| To find the product of two binary numbers, d and m:
| |
| *1. A register holding the intermediate result is initialized to d.
| |
| *2. Begin with the least significant (rightmost) non-zero bit in m.
| |
| **2b. Count (to the left) the number of bit positions to the next most significant non-zero bit. If there are no more-significant bits, then take the value of the current bit position.
| |
| **2c. Using that value, perform a right-shift operation by that number of bits on the register holding the intermediate result
| |
| *3. If all the non-zero bits were counted, then the intermediate result register now holds the final result. Otherwise, add d to the intermediate result, and continue in step #2 with the next most significant bit in m.
| |
| | |
| ====Derivation====
| |
| In general, for a binary number with bit values: (<math> d_3 d_2 d_1 d_0 </math>) the product is:
| |
| :<math> (d_3 2^3 + d_2 2^2 + d_1 2^1 + d_0 2^0)m = d_3 2^3 m + d_2 2^2 m + d_1 2^1 m + d_0 2^0 m </math>
| |
| At this stage in the algorithm, it is required that terms with zero-valued coefficients are dropped, so that only binary coefficients equal to one are counted, thus the problem of multiplication or [[division by zero]] is not an issue, despite this implication in the factored equation:
| |
| | |
| :<math> = d_0(m + 2 \frac{d_1}{d_0} (m + 2 \frac{d_2}{d_1} (m + 2 \frac{d_3}{d_2} (m)))). </math>
| |
| | |
| The denominators all equal one (or the term is absent), so this reduces to:
| |
| :<math> = d_0(m + 2 {d_1} (m + 2 {d_2} (m + 2 {d_3} (m)))),</math>
| |
| or equivalently (as consistent with the "method" described above):
| |
| :<math> = d_3(m + 2^{-1} {d_2} (m + 2^{-1}{d_1} (m + {d_0} (m)))). </math>
| |
| | |
| In binary (base 2) math, multiplication by a power of 2 is merely a [[arithmetic shift|register shift]] operation. Thus, multiplying by 2 is calculated in base-2 by an [[arithmetic shift]]. The factor (2<sup>−1</sup>) is a right [[arithmetic shift]], a (0) results in no operation (since 2<sup>0</sup> = 1, is the multiplicative [[identity element]]), and a (2<sup>1</sup>) results in a left arithmetic shift.
| |
| The multiplication product can now be quickly calculated using only arithmetic shift operations, addition and subtraction.
| |
| | |
| The method is particularly fast on processors supporting a single-instruction shift-and-addition-accumulate. Compared to a C floating-point library, Horner's method sacrifices some accuracy, however it is nominally 13 times faster (16 times faster when the "[[canonical signed digit]]" (CSD) form is used), and uses only 20% of the code space.<ref>Kripasagar, March 2008, "Efficient Micro Mathematics", Circuit Cellar, issue 212, p. 62.</ref>
| |
| | |
| === Polynomial root finding ===
| |
| Using Horner's method in combination with [[Newton's method]], it is possible to approximate the real roots of a polynomial. The algorithm works as follows. Given a polynomial <math>p_n(x)</math> of degree <math>n</math> with zeros <math> z_n < z_{n-1} < \cdots < z_1 </math>, make some initial guess <math> x_0 </math> such that <math> x_0 > z_1 </math>. Now iterate the following two steps:
| |
| | |
| 1. Using [[Newton's method]], find the largest zero <math>z_1</math> of <math>p_n(x)</math> using the guess <math>x_0</math>.
| |
| | |
| 2. Using Horner's method, divide out <math>(x-z_1)</math> to obtain <math>p_{n-1}</math>. Return to step 1 but use the polynomial <math>p_{n-1}</math> and the initial guess <math>z_1</math>.
| |
| | |
| These two steps are repeated until all real zeros are found for the polynomial. If the approximated zeros are not precise enough, the obtained values can be used as initial guesses for Newton's method but using the full polynomial rather than the reduced polynomials.<ref>Kress, Rainer, "Numerical Analysis", Springer, 1991, p.112.</ref>
| |
| | |
| ==== Example ====
| |
| | |
| [[File:HornerandNewton.gif|thumb|right|500px|Polynomial root finding using Horner's method]]
| |
| | |
| Consider the polynomial,
| |
| | |
| : <math>
| |
| p_6(x) = (x-3)(x+3)(x+5)(x+8)(x-2)(x-7)
| |
| </math>
| |
| | |
| which can be expanded to
| |
| | |
| : <math>
| |
| p_6(x) = x^6 + 4x^5 - 72x^4 -214x^3 + 1127x^2 + 1602x -5040.
| |
| </math>
| |
| | |
| From the above we know that the largest root of this polynomial is 7 so we are able to make an initial guess of 8. Using Newton's method the first zero of 7 is found as shown in black in the figure to the right. Next <math>p(x)</math> is divided by <math>(x-7)</math> to obtain
| |
| | |
| : <math>
| |
| p_5(x) = x^5 + 11x^4 + 5x^3 - 179x^2 - 126x + 720 \,
| |
| </math>
| |
| | |
| which is drawn in red in the figure to the right. Newton's method is used to find the largest zero of this polynomial with an initial guess of 7. The largest zero of this polynomial which corresponds to the second largest zero of the original polynomial is found at 3 and is circled in red. The degree 5 polynomial is now divided by <math>(x-3)</math> to obtain
| |
| | |
| : <math>
| |
| p_4(x) = x^4 + 14x^3 + 47x^2 - 38x - 240 \,
| |
| </math>
| |
| | |
| which is shown in yellow. The zero for this polynomial is found at 2 again using Newton's method and is circled in yellow. Horner's method is now used to obtain
| |
| | |
| : <math>
| |
| p_3(x) = x^3 + 16x^2 + 79x + 120 \,
| |
| </math>
| |
| | |
| which is shown in green and found to have a zero at −3. This polynomial is further reduced to
| |
| | |
| : <math>
| |
| p_2(x) = x^2 + 13x + 40 \,
| |
| </math>
| |
| | |
| which is shown in blue and yields a zero of −5. The final root of the original polynomial may be found by either using the final zero as an initial guess for Newton's method, or by reducing <math>p_2(x)</math> and solving the linear equation. As can be seen, the expected roots of −8, −5, −3, 2, 3, and 7 were found.
| |
| | |
| ==== Octave implementation ====
| |
| The following [[GNU Octave|Octave]] code was used in the example above to implement Horner's method.
| |
| | |
| <source lang="octave">
| |
| function [y b] = horner(a,x)
| |
| % Input a is the polynomial coefficient vector, x the value to be evaluated at.
| |
| % The output y is the evaluated polynomial and b the divided coefficient vector.
| |
| b(1) = a(1);
| |
| for i = 2:length(a)
| |
| b(i) = a(i)+x*b(i-1);
| |
| end
| |
| y = b(length(a));
| |
| b = b(1:length(b)-1);
| |
| end
| |
| </source>
| |
| | |
| ==== Python implementation ====
| |
| | |
| The following [[Python (programming language)|Python]] code implements Horner's method.
| |
| | |
| <source lang="python">
| |
| def horner(x, *polynomial):
| |
| """A function that implements the Horner Scheme for evaluating a
| |
| polynomial of coefficients *polynomial in x."""
| |
| result = 0
| |
| for coefficient in polynomial:
| |
| result = result * x + coefficient
| |
| return result
| |
| </source>
| |
| | |
| ==Application==
| |
| Horner's method can be used to convert between different positional [[numeral system]]s – in which case ''x'' is the base of the number system, and the ''a''<sub>''i''</sub> coefficients are the digits of the base-''x'' representation of a given number – and can also be used if ''x'' is a [[matrix (math)|matrix]], in which case the gain in computational efficiency is even greater. In fact, when ''x'' is a matrix, further acceleration is possible which exploits the structure of [[matrix multiplication]], and only <math>\sqrt{n}</math> instead of ''n'' multiplies are needed (at the expense of requiring more storage) using the 1973 method of Paterson and Stockmeyer.<ref>Higham, Nicholas. (2002). ''Accuracy and Stability of Numerical Algorithms''. Philadelphia: SIAM. ISBN 0-89871-521-0. Section 5.4.</ref>
| |
| | |
| ==Efficiency==
| |
| Evaluation using the monomial form of a degree-''n'' polynomial requires at most ''n'' additions and (''n''<sup>2</sup> + ''n'')/2 multiplications, if powers are calculated by repeated multiplication and each monomial is evaluated individually. (This can be reduced to ''n'' additions and 2''n'' − 1 multiplications by evaluating the powers of ''x'' iteratively.) If numerical data are represented in terms of digits (or bits), then the naive algorithm also entails storing approximately 2''n'' times the number of bits of ''x'' (the evaluated polynomial has approximate magnitude ''x''<sup>''n''</sup>, and one must also store ''x''<sup>''n''</sup> itself). By contrast, Horner's method requires only ''n'' additions and ''n'' multiplications, and its storage requirements are only ''n'' times the number of bits of ''x''. Alternatively, Horner's method can be computed with ''n'' [[fused multiply–add]]s. Horner's method can also be extended to evaluate the first ''k'' derivatives of the polynomial with ''kn'' additions and multiplications.<ref>{{cite web|url=http://portal.acm.org/citation.cfm?doid=364063.364089|title=Algorithm 337: calculation of a polynomial and its derivative values by Horner scheme|author=W. Pankiewicz}}</ref>
| |
| | |
| Horner's method is optimal, in the sense that any algorithm to evaluate an arbitrary polynomial must use at least as many operations. [[Alexander Ostrowski]] proved in 1954 that the number of additions required is minimal.<ref>Ostrowski, A. M. (1954). "On two problems in abstract algebra connected with Horner's rule", Studies in Math. Mech., pp. 40-48. New York: Academic Press.</ref> [[Victor Pan]] proved in 1966 that the number of multiplications is minimal.<ref>Pan, Y. Ja. (1966). "On means of calculating values of polynomials'', Russian Math. Surveys" '''21''', pp. 105-136.</ref> However, when ''x'' is a matrix, Horner's method is not optimal.
| |
| | |
| This assumes that the polynomial is evaluated in monomial form and no [[preconditioning]] of the representation is allowed, which makes sense if the polynomial is evaluated only once. However, if preconditioning is allowed and the polynomial is to be evaluated many times, then faster algorithms are possible. They involve a transformation of the representation of the polynomial. In general, a degree-''n'' polynomial can be evaluated using only <math>{\scriptstyle{\left\lfloor n/2 \right\rfloor + 2}}</math> multiplications and ''n'' additions (see [[Donald Knuth|Knuth]]: ''[[The Art of Computer Programming]]'', Vol.2).
| |
| | |
| ==History==
| |
| [[File:Qingjiushaoquad1.GIF|thumb|right|200px|Qin Jiushao algorithm for solving quadratic polymial equation<math>-x^4+763200x^2-40642560000=0</math><br>result:x=840<ref>Urich Libbrecht Chinese Mathematics in the Thirteenth Century, p181–191, Dover ISBN 0-486-44619-0</ref>]]
| |
| Horner's paper entitled "[http://turing.une.edu.au/~ernie/Horner/Horner1819PhilTransRoySocLon.pdf A new method of solving numerical equations of all orders, by continuous approximation]", was read before the Royal Society of London, at its meeting on on July 1, 1819, with [[Davies Gilbert]], Vice-President and Treasurer, in the chair; this was the final [http://hdl.handle.net/2027/mdp.39015014105277?urlappend=%3Bseq=158 meeting] of the session before the Society adjorned for its Summer recess. When a sequel was read before the Society in 1823, it was again at the final meeting of the session. On both occasions, papers by [[James Ivory (mathematician)|James Ivory]], FRS, were also read. In 1819, it was Horner's paper that got through to publication in the "Philosophical Transactions".<ref name="Horner">{{cite journal
| |
| |last = William George Horner
| |
| |title = A new method of solving numerical equations of all orders, by continuous approximation
| |
| |journal = Philosophical Transactions
| |
| |date=July 1819
| |
| |pages = pp. 308–335
| |
| |publisher = Royal Society of London
| |
| }}</ref><ref>{{cite journal
| |
| |title=JSTOR archive of the Royal Society of London
| |
| |jstor=107508
| |
| }}</ref> later in the year, Ivory's paper falling by the way, despite Ivory being a Fellow; in 1823, when a total of ten papers were read, fortunes as regards publication, were reversed. But Gilbert, who had strong connections with the West of England and may have had social contact with Horner, resident as Horner was in Bristol and Bath, published his own [http://turing.une.edu.au/~ernie/Horner/Gilbert1823QJSLA.pdf survey] of Horner-type methods earlier in 1823.
| |
| | |
| Horner's paper in Part II of ''Philosophical Transactions of the Royal Society of London'' for 1819 was warmly and expansively welcomed by a [http://turing.une.edu.au/~ernie/Horner/Horner1820MonthlyRev91-4.pdf reviewer] in the issue of ''The Monthly Review: or, Literary Journal'' for April, 1820; in comparison, a technical paper by [[Charles Babbage]] is dismissed curtly in this review. However, the reviewer noted that another, similar method had also recently been promoted by the architect and mathematical expositor, Peter Nicholson. This theme is developed in a further [http://turing.une.edu.au/~ernie/Horner/Horner1820MonthlyRev93-12.pdf review] of some of Nicholson's books in the issue of ''The Monthly Review'' for December, 1820, which in turn ends with notice of the appearance of a booklet by Theophilus Holdred, from whom Nicholson acknowledges he obtained the gist of his approach in the first place, although claiming to have improved upon it. The sequence of reviews is concluded in the issue of ''The Monthly Review'' for September, 1821, with the [http://turing.une.edu.au/~ernie/Horner/Horner1821MonthlyRev96-9.pdf reviewer] reasserting both Horner's priority and the primacy of his method, judiciously observing that had Holdred published forty years earlier, his contribution could more easily be recognized. The reviewer is exceptionally well-informed, even having sighted Horner's preparatory correspondence with [[Peter Barlow (mathematician)|Peter Barlow]] in 1818, seeking work of [[François Budan de Boislaurent|Budan]]. The Bodlean Library, Oxford has the Editor's annotated copy of ''The Monthly Review'' from which it is clear that the most active reviewer in mathematics in 1814 and 1815 (the last years for which this information has been published) was none other than Peter Barlow,one of the foremost specialists on approximation theory of the period, suggesting that it was Barlow, who wrote this sequence of reviews. As it also happened, Henry Atkinson, of Newcastle, devised a similar approximation scheme in 1809; he had consulted his fellow [[Geordie]], [[Charles Hutton]], another specialist and a senior colleague of Barlow at the Royal Military Academy, Woolwich, only to be advised that, while his work was publishable, it was unlikely to have much impact. J. R. Young, writing in the mid-1830s, concluded that Holdred's first method replicated Atkinson's while his improved method was only added to Holdred's booklet some months after its first appearance in 1820, when Horner's paper was already in circulation.
| |
| | |
| The feature of Horner's writing that most distinguishes it from his English contemporaries is the way he draws on the Continental literature, notably the work of [[Louis François Antoine Arbogast|Arbogast]]. The advocacy, as well as the detraction, of Horner's Method has this as an unspoken subtext. Quite how he gained that familiarity has not been determined. Horner is known to have made a close reading of John Bonneycastle's book on algebra. Bonneycastle recognizes that Arbogast has the general, combinatorial expression for the reversion of series, a project going back at least to Newton. But Bonneycastle's main purpose in mentioning Arbogast is not to praise him, but to observe that Arbogast's notation is incompatible with the approach he adopts. The gap in Horner's reading was the work of [[Paolo Ruffini]], except that, as far as awareness of Ruffini goes, citations of Ruffini's work by authors, including medical authors, in ''Philosophical Transactions'' speak volumes: there are none - Ruffini's [http://hdl.handle.net/2027/njp.32101013501372?urlappend=%3Bseq=695 name] only appears in 1814, recording a work he donated to the Royal Society. Ruffini might have done better if his work had appeared in French, as had [[Malfatti's problem|Malfatti's Problem]] in the reformulation of [[Gergonne|Joseph Diaz Gergonne]], or had he written in French, as had [[:it:Antonio Cagnoli|Antonio Cagnoli]], a source quoted by Bonneycastle on series reversion (today, Cagnoli is in the Italian Wikipedia, as shown, but has yet to make it into either French or English).
| |
| | |
| Fuller<ref>Fuller A. T. :Horner versus Holdred: An Episode in the History of Root Computation, Historia Mathematica 26 (1999), 29–51</ref> develops the thesis that Horner's method was never published by Horner until after it was published by Holdred. But this is at variance with the contemporary reception of the works of both Horner and Holdred, as indicated in the previous paragraph, besides the numerous internal flaws in Fuller's paper, flaws that are so strange as to raise doubt as to Fuller's purpose (see the [[Talk:Horner%27s_method#Is_Fuller.27s_article_a_hoax.3F|Talk]] page). Fuller also takes aim at [[Augustus De Morgan]]. Precocious though Augustus de Morgan was, he was not the reviewer for ''The Monthly Review'', while several others - [[Thomas Stephens Davies]], J. R. Young, Stephen Fenwick, T. T. Wilkinson - wrote Horner firmly into their records, not least Horner himself, as he published extensively up until the year of his death in 1837. His paper in 1819 was one that would have been difficult to miss. In contrast, the only other mathematical sighting of Holdred is a single named contribution to ''The Gentleman's Mathematical Companion'', an answer to a problem.
| |
| | |
| It is questionable to what extent it was De Morgan's advocacy of Horner's priority in discovery<ref name="Cajori" /><ref name="St Andrews" /> that led to "Horner's method" being so called in textbooks, but it is true that those suggesting this tend themselves to know of Horner largely through intermediaries, of whom De Morgan made himself a prime example. However, this method ''qua'' method was known long before Horner. In reverse chronological order, Horner's method was already known to: | |
| | |
| * [[Paolo Ruffini]] in 1809 (see [[Ruffini's rule]])<ref name="Cajori" /><ref name="St Andrews">{{MacTutor Biography|id=Horner}}</ref>
| |
| * [[Isaac Newton]] in 1669 (but precise reference needed)
| |
| * the [[Chinese mathematics|Chinese mathematician]] [[Zhu Shijie]] in the 14th century<ref name="St Andrews" />
| |
| * the [[Chinese mathematics|Chinese mathematician]] [[Qin Jiushao]] in his ''[[Mathematical Treatise in Nine Sections]]'' in the 13th century
| |
| * the [[Persian people|Persian]] [[Islamic mathematics|mathematician]] [[Sharaf al-Dīn al-Tūsī]] in the 12th century<ref>J. L. Berggren (1990). "Innovation and Tradition in Sharaf al-Din al-Tusi's Muadalat", ''Journal of the American Oriental Society'' '''110''' (2), p. 304–309.</ref>
| |
| * the Chinese mathematician [[Jia Xian]] in the 11th century ([[Song Dynasty]])
| |
| * ''[[The Nine Chapters on the Mathematical Art]]'', a Chinese work of the [[Han Dynasty]] (202 BC – 220 AD) edited by [[Liu Hui]] (fl. 3rd century).<ref>Temple, Robert. (1986). ''The Genius of China: 3,000 Years of Science, Discovery, and Invention''. With a forward by Joseph Needham. New York: Simon and Schuster, Inc. ISBN 0-671-62028-2. Page 142.</ref>
| |
| | |
| However, this observation on its own masks significant differences in conception and also, as noted with Ruffini's work, issues of accessibility.
| |
| | |
| [[Qin Jiushao]], in his ''Shu Shu Jiu Zhang'' (''[[Mathematical Treatise in Nine Sections]]''; 1247), presents a portfolio of methods of Horner-type for solving polynomial equations, which was based on earlier works of the 11th century Song dynasty mathematician [[Jia Xian]]; for example, one method is specifically suited to bi-qintics, of which Qin gives an instance, in keeping with the then Chinese custom of case studies. The first person writing in English to note the connection with Horner's method was [[Alexander Wylie (missionary)|Alexander Wylie]], writing in ''The North China Herald'' in 1852; perhaps conflating and misconstruing different Chinese phrases, Wylie calls the method ''Harmoniously Alternating Evolution'' (which does not agree with his Chinese, ''linglong kaifang'', not that at that date he uses [[pinyin]]), working the case of one of Qin's quartics and giving, for comparison, the working with Horner's method. [[Yoshio Mikami]] in ''Development of Mathematics in China and Japan'' published in Leipzig in 1913, gave a detailed description of Qin's method, using the quartic illustrated to the above right in a worked example; he wrote: "who can deny the fact of Horner's illustrious process being used in China at least nearly six long centuries earlier than in Europe ... We of course don't intend in any way to ascribe Horner's invention to a Chinese origin, but the lapse of time sufficiently makes it not altogether impossible that the Europeans could have known of the Chinese method in a direct or indirect way.".<ref>Yoshio Mikami, Chinese Mathematics in the Thirteenth Century, Chapter 11, Chin Chiu Shao, p77 Chelsea Publishing Co</ref> However, as Mikami is also aware, it was ''not altogether impossible'' that a related work, ''Si Yuan Yu Jian'' (''Jade Mirror of the Four Unknowns; 1303)'' by [[Zhu Shijie]] might make the shorter journey across to Japan, but seemingly it never did, although another work of Zhu, ''Suan Xue Qi Meng'', had a seminal influence on the development of traditional mathematics in the Edo period, starting in the mid-1600s. [[Ulrich Libbrecht]] (at the time teaching in school, but subsequently a professor of comparative philosophy) gave a detailed description in his doctoral thesis of Qin's method, he concluded: ''It is obvious that this procedure is a Chinese invention....the method was not known in India''. He said, Fibonacci probably learned of it from Arabs, who perhaps borrowed from the Chinese.<ref>Ulrich Libbrecht, Chinese Mathematics in the Thirteenth Century, Chapter 13, Numerial Equations of Higher Degree, p208 Dover, ISBN 0-486-44619-0</ref> Here, the problems is that there is no more evidence for this speculation than there is of the method being known in India. Of course, the extraction of square and cube roots along similar lines is already discussed by [[Liu Hui]] in connection with Problems IV.16 and 22 in ''Jiu Zhang Suan Shu'', while [[Wang Xiaotong]] in the 7th century supposes his readers can solve cubics by an approximation method he does not specify.
| |
| | |
| ==See also==
| |
| *[[Clenshaw algorithm]] to evaluate polynomials in [[Chebyshev form]]
| |
| *[[De Boor's algorithm]] to evaluate [[spline curve|splines]] in [[B-spline]] form
| |
| *[[De Casteljau's algorithm]] to evaluate polynomials in [[Bézier form]]
| |
| *[[Estrin's scheme]] to facilitate parallelization on modern computer architectures
| |
| *[[Lill's method]] to approximate roots graphically
| |
| *[[Ruffini's rule]] to divide a polynomial by a binomial of the form x − r
| |
| | |
| ==References==
| |
| {{reflist}}
| |
| | |
| ===Bibliography===
| |
| * {{cite journal
| |
| |last = Horner
| |
| |first = William George
| |
| |title = [http://babel.hathitrust.org/cgi/pt?u=1&num=308&seq=13&view=image&size=100&id=mdp.39015034564461 A new method of solving numerical equations of all orders, by continuous approximation]
| |
| |journal = Philosophical Transactions
| |
| |date=July 1819
| |
| |pages = pp. 308–335
| |
| |publisher = Royal Society of London
| |
| }} Directly available online via the link, but also reprinted with appraisal in D.E.Smith: ''A Source Book in Mathematics'', McGraw-Hill, 1929; Dover reprint, 2 vols 1959
| |
| * {{cite book
| |
| |last = Spiegel
| |
| |first = Murray R.
| |
| |title = Schaum's Outline of Theory and Problems of College Algebra
| |
| |year = 1956
| |
| |publisher = McGraw-Hill Book Company
| |
| }}
| |
| * {{cite book
| |
| |last = Knuth
| |
| |first = Donald
| |
| |title = The Art of Computer Programming
| |
| |volume = Vol. 2: Seminumerical Algorithms
| |
| |edition = 3rd
| |
| |year = 1997
| |
| |publisher = Addison-Wesley
| |
| |isbn = 0-201-89684-2
| |
| |pages = 486–488 in section 4.6.4
| |
| }}
| |
| * {{Cite journal
| |
| | last = Kripasagar
| |
| | first = Venkat
| |
| | title = Efficient Micro Mathematics – Multiplication and Division Techniques for MCUs
| |
| | journal = Circuit Cellar magazine
| |
| | issue = 212
| |
| | page = p. 60
| |
| | date = March 2008
| |
| }}
| |
| * {{cite book
| |
| |last = Mikami
| |
| |first = Yoshio
| |
| |title = [http://archive.org/details/treatiseindynami033561mbp The Development of Mathematics in China and Japan]
| |
| |chapter = [http://archive.org/stream/treatiseindynami033561mbp#page/n77/mode/2up 11]
| |
| |edition = 1st
| |
| |year = 1913
| |
| |publisher = Chelsea Publishing Co reprint
| |
| |isbn =
| |
| |pages = [http://archive.org/stream/treatiseindynami033561mbp#page/n89/mode/2up 74–77]
| |
| }} Yes, really! It looks as though the link is taking you to a completely different work, but you end up at Mikami's book, as you find on checking the specified pages.
| |
| | |
| * {{cite book
| |
| |last = Ulrich
| |
| |first = Librecht
| |
| |title = Chinese Mathematics in the Thirteenth Century
| |
| |chapter = 13
| |
| |edition = 2nd
| |
| |year = 2005
| |
| |publisher = Dover
| |
| |isbn = 0-486-44619-0
| |
| |pages = 175–211
| |
| }}
| |
| | |
| * {{cite book
| |
| |last = Wylie
| |
| |first = Alexander
| |
| |title = [http://archive.org/details/chineseresearche00wyliuoft Chinese Researches]
| |
| |year = 1897
| |
| |publisher = Printed in Shanghai
| |
| }}, ''[http://archive.org/stream/chineseresearche00wyliuoft#page/158/mode/2up Jottings on the Science of Chinese Arithmetic]'' (reprinted from issues of ''The North China Herald'' (1852).
| |
| *T. Holdred (1820), [http://turing.une.edu.au/~ernie/Horner/Holdred1820.pdf A New Method of Solving Equations with Ease and Expedition; by which the True Value of the Unknown Quantity is Found Without Previous Reduction. With a Supplement, Containing Two Other Methods of Solving Equations, Derived from the Same Principle] Richard Watts. Sold by Davis and Dickson, mathematical and philosophical booksellers, 17, St. Martin's-le-Grand; and by the author, 2, Denzel Street, Clare-Market, 56pp..
| |
| | |
| ==External links==
| |
| * {{springer|title=Horner scheme|id=p/h048030}}
| |
| * {{MathWorld|urlname=HornersMethod|title=Horner's method}}
| |
| * [http://math.fullerton.edu/mathews/n2003/HornerMod.html Module for Horner's Method by John H. Mathews]
| |
| * Qiu Jin-Shao, [http://turing.une.edu.au/~ernie/Chinese/SSJZ.pdf Shu Shu Jiu Zhang] (Cong Shu Ji Cheng ed.)
| |
| | |
| {{DEFAULTSORT:Horner Scheme}}
| |
| [[Category:Algebra]]
| |
| [[Category:Polynomials]]
| |
| [[Category:Numerical analysis]]
| |