How to calculate a polynomial of (s+1)(s+2)…(s+10) in a short time?
Instead of calculate them one by one, we can do it with the help of Python library – Numpy.
1. Make sure you have installed Numpy for your Python interpreter. In Ubuntu, you may just want to install python-scipy as it contains all the scientific calculation tools.
2. Try the following example in your python interpreter:
from numpy import * p1 = poly1d(1, 1 ) #(S+1) p2 = poly1d(1, 2 ) #(S+2) p3 = poly1d(1, 3 ) #(S+3) p4 = poly1d(1, 4 ) #(S+4) p5 = poly1d(1, 5 ) #(S+5) p6 = poly1d(1, 6 ) #(S+6) p7 = poly1d(1, 7 ) #(S+7) p8 = poly1d(1, 8 ) #(S+8) p9 = poly1d(1, 9 ) #(S+9) p10 = poly1d(1, 10) #(S+10) print p1*p2*p3*p4*p5*p6*p7*p8*p9*p10
3. Then, you will an get an output like:
10 9 8 7 6 5 4 3 2 1 x - 10 x + 45 x - 120 x + 210 x - 252 x + 210 x - 120 x + 45 x - 10 x + 1
That is the answer:
x^10 - 10x^9 +45x^8 - 120x^7 + 210x^6 - 252x^5 + 210x^4 - 120x^3 + 45x^2 - 10x + 1
4. Say, we need to find the root of this polynomial. With the help of Python, we can get the roots by feeding these line into the interpreter.
(p1*p2*p3*p4*p5*p6*p7*p8*p9*p10).r #.r means root.
And, we will get an output like this:
array([ 1.04405137+0.0143565j , 1.04405137-0.0143565j , 1.02709855+0.03755416j, 1.02709855-0.03755416j, 0.99974141+0.04619473j, 0.99974141-0.04619473j, 0.97275208+0.03706564j, 0.97275208-0.03706564j, 0.95635659+0.01406697j, 0.95635659-0.01406697j])
The polynomial has 5 complex conjugates: 1.04405137 +/- 0.0143565j, 1.02709855 +/- 0.03755416j, 0.99974141+/- 0.04619473j, 0.97275208 +/-0.03706564j, 0.97275208 +/- 0.03706564j and 0.95635659 +/- 0.01406697j .
Hii thanks for posting this