|
| 1 | +# Lucas Polynomial |
| 2 | + |
| 3 | +> Evaluate a [Lucas polynomial][fibonacci-polynomials]. |
| 4 | +
|
| 5 | + |
| 6 | +<section class="intro"> |
| 7 | + |
| 8 | +A [Lucas polynomial][fibonacci-polynomials] is expressed according to the following recurrence relation |
| 9 | + |
| 10 | +<!-- <equation class="equation" label="eq:lucas_polynomial" align="center" raw="L_n(x) = \begin{cases}2 & \textrm{if}\ n = 0\\x & \textrm{if}\ n = 1\\x \cdot L_{n-1}(x) + L_{n-2}(x) & \textrm{if}\ n \geq 2\end{cases}" alt="Lucas polynomial."> --> |
| 11 | + |
| 12 | +<div class="equation" align="center" data-raw-text="L_n(x) = \begin{cases}2 & \textrm{if}\ n = 0\\x & \textrm{if}\ n = 1\\x \cdot L_{n-1}(x) + L_{n-2}(x) & \textrm{if}\ n \geq 2\end{cases}" data-equation="eq:lucas_polynomial"> |
| 13 | + <img src="" alt="Lucas polynomial."> |
| 14 | + <br> |
| 15 | +</div> |
| 16 | + |
| 17 | +<!-- </equation> --> |
| 18 | + |
| 19 | +Alternatively, if `L(n,k)` is the coefficient of `x^k` in `L_n(x)`, then |
| 20 | + |
| 21 | +<!-- <equation class="equation" label="eq:lucas_polynomial_sum" align="center" raw="L_n(x) = \sum_{k = 0}^n L(n,k) x^k" alt="Lucas polynomial expressed as a sum."> --> |
| 22 | + |
| 23 | +<div class="equation" align="center" data-raw-text="L_n(x) = \sum_{k = 0}^n L(n,k) x^k" data-equation="eq:lucas_polynomial_sum"> |
| 24 | + <img src="" alt="Lucas polynomial expressed as a sum."> |
| 25 | + <br> |
| 26 | +</div> |
| 27 | + |
| 28 | +<!-- </equation> --> |
| 29 | + |
| 30 | +We can extend [Lucas polynomials][fibonacci-polynomials] to negative `n` using the identity |
| 31 | + |
| 32 | +<!-- <equation class="equation" label="eq:negalucas_polynomial" align="center" raw="L_{-n}(x) = (-1)^{n} L_n(x)" alt="NegaLucas polynomial."> --> |
| 33 | + |
| 34 | +<div class="equation" align="center" data-raw-text="L_{-n}(x) = (-1)^{n} L_n(x)" data-equation="eq:negalucas_polynomial"> |
| 35 | + <img src="" alt="NegaLucas polynomial."> |
| 36 | + <br> |
| 37 | +</div> |
| 38 | + |
| 39 | +<!-- </equation> --> |
| 40 | + |
| 41 | +</section> |
| 42 | + |
| 43 | +<!-- /.intro --> |
| 44 | + |
| 45 | + |
| 46 | +<section class="usage"> |
| 47 | + |
| 48 | +## Usage |
| 49 | + |
| 50 | +``` javascript |
| 51 | +var lucaspoly = require( '@stdlib/math/base/tools/lucaspoly' ); |
| 52 | +``` |
| 53 | + |
| 54 | +#### lucaspoly( n, x ) |
| 55 | + |
| 56 | +Evaluates a [Lucas polynomial][fibonacci-polynomials] at a value `x`. |
| 57 | + |
| 58 | +``` javascript |
| 59 | +var v = lucaspoly( 5, 2.0 ); // => 2^5 + 5*2^3 + 5*2 |
| 60 | +// returns 82.0 |
| 61 | +``` |
| 62 | + |
| 63 | +#### lucaspoly.factory( n ) |
| 64 | + |
| 65 | +Returns a `function` for evaluating a [Lucas polynomial][fibonacci-polynomials]. |
| 66 | + |
| 67 | +``` javascript |
| 68 | +var polyval = lucaspoly.factory( 5 ); |
| 69 | + |
| 70 | +var v = polyval( 1.0 ); // => 1^5 + 5*1^3 + 5 |
| 71 | +// returns 11.0 |
| 72 | + |
| 73 | +v = polyval( 2.0 ); // => 2^5 + 5*2^3 + 5*2 |
| 74 | +// returns 82.0 |
| 75 | +``` |
| 76 | + |
| 77 | +</section> |
| 78 | + |
| 79 | +<!-- /.usage --> |
| 80 | + |
| 81 | + |
| 82 | +<section class="notes"> |
| 83 | + |
| 84 | +</section> |
| 85 | + |
| 86 | +<!-- /.notes --> |
| 87 | + |
| 88 | + |
| 89 | +<section class="examples"> |
| 90 | + |
| 91 | +## Examples |
| 92 | + |
| 93 | +``` javascript |
| 94 | +var lucaspoly = require( '@stdlib/math/base/tools/lucaspoly' ); |
| 95 | + |
| 96 | +var i; |
| 97 | + |
| 98 | +// Compute the negaLucas and Lucas numbers... |
| 99 | +for ( i = -76; i < 77; i++ ) { |
| 100 | + console.log( 'L_%d = %d', i, lucaspoly( i, 1.0 ) ); |
| 101 | +} |
| 102 | +``` |
| 103 | + |
| 104 | +</section> |
| 105 | + |
| 106 | +<!-- /.examples --> |
| 107 | + |
| 108 | + |
| 109 | +<section class="links"> |
| 110 | + |
| 111 | +[fibonacci-polynomials]: https://en.wikipedia.org/wiki/Fibonacci_polynomials |
| 112 | + |
| 113 | +</section> |
| 114 | + |
| 115 | +<!-- /.links --> |
0 commit comments