Polynomial derivative: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
(julia example)
Line 16: Line 16:
IN: math.polynomials
IN: math.polynomials
: pdiff ( p -- p' ) dup length <iota> v* rest ;</lang>
: pdiff ( p -- p' ) dup length <iota> v* rest ;</lang>


=={{header|Julia}}==
<lang julia>using Polynomials

testcases = [
("5", [5]),
("-3x+4", [4, -3]),
("5x2+6x-1", [-1, 6, 5]),
("x3-2x2+3x-4", [-4, 3, -2, 1]),
("-x4-x3+x+1", [1, 1, 0, -1, -1]),
]

for (s, coef) in testcases
println("Derivative of $s: ", derivative(Polynomial(coef)))
end
</lang>{{out}}
<pre>
Derivative of 5: 0
Derivative of -3x+4: -3
Derivative of 5x2+6x-1: 6 + 10*x
Derivative of x3-2x2+3x-4: 3 - 4*x + 3*x^2
Derivative of -x4-x3+x+1: 1 - 3*x^2 - 4*x^3
</pre>

Revision as of 08:33, 9 November 2021

Polynomial derivative is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Given a polynomial, represented by an ordered list of its coefficients by increasing degree (e.g. [-1, 6, 5] represents 5x2+6x-1), calculate the polynomial representing the derivative. For example, the derivative of the aforementioned polynomial is 10x+6, represented by [6, 10]. Test cases: 5, -3x+4, 5x2+6x-1, x3-2x2+3x-4, -x4-x3+x+1

Factor

<lang factor>USING: math.polynomials prettyprint ;

{ -1 6 5 } pdiff .</lang>

Output:
{ 6 10 }

The implementation of pdiff:

<lang factor>USING: kernel math.vectors sequences ; IN: math.polynomials

pdiff ( p -- p' ) dup length <iota> v* rest ;</lang>


Julia

<lang julia>using Polynomials

testcases = [

   ("5", [5]),
   ("-3x+4", [4, -3]),
   ("5x2+6x-1", [-1, 6, 5]),
   ("x3-2x2+3x-4", [-4, 3, -2, 1]),
   ("-x4-x3+x+1", [1, 1, 0, -1, -1]),

]

for (s, coef) in testcases

   println("Derivative of $s: ", derivative(Polynomial(coef)))

end

</lang>

Output:
Derivative of 5: 0
Derivative of -3x+4: -3
Derivative of 5x2+6x-1: 6 + 10*x
Derivative of x3-2x2+3x-4: 3 - 4*x + 3*x^2
Derivative of -x4-x3+x+1: 1 - 3*x^2 - 4*x^3