Bird
Raised Fist0
NumPydata~20 mins

Polynomial operations with np.poly in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Polynomial Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of polynomial addition using np.polyadd
What is the output of this code that adds two polynomials using np.polyadd?
NumPy
import numpy as np
p1 = np.array([1, -3, 2])  # x^2 - 3x + 2
p2 = np.array([0, 4, -1])  # 4x - 1
result = np.polyadd(p1, p2)
print(result)
A[ 1 -3 6 1]
B[ 1 1 1]
C]1 1 1 [
D 1 1 1]
Attempts:
2 left
💡 Hint
Remember that np.polyadd adds coefficients of the same degree terms.
❓ data_output
intermediate
2:00remaining
Degree of polynomial from roots using np.poly
Given roots [-1, 0, 2], what is the degree and coefficients of the polynomial generated by np.poly?
NumPy
import numpy as np
roots = [-1, 0, 2]
coeffs = np.poly(roots)
degree = len(coeffs) - 1
print(degree)
print(coeffs)
A
3
[ 1. -1.  2.  0.]
B
].0  .2- .1- .1 [
3
C
3
[ 1. -1. -2.  0.]
D
].0  .2  .1- .1 [
3
Attempts:
2 left
💡 Hint
np.poly returns coefficients of polynomial with given roots, highest degree first.
❓ visualization
advanced
3:00remaining
Plot polynomial and its derivative
Which option correctly plots the polynomial p(x) = 2x^3 - 3x^2 + x - 5 and its derivative using np.polyder?
NumPy
import numpy as np
import matplotlib.pyplot as plt
p = np.array([2, -3, 1, -5])
p_der = np.polyder(p)
x = np.linspace(-2, 3, 100)
y = np.polyval(p, x)
y_der = np.polyval(p_der, x)
plt.plot(x, y, label='Polynomial')
plt.plot(x, y_der, label='Derivative')
plt.legend()
plt.show()
APlots polynomial and derivative curves correctly with labels.
BPlots only polynomial curve, derivative missing.
CPlots derivative curve only, polynomial missing.
DRaises error due to wrong np.polyder usage.
Attempts:
2 left
💡 Hint
np.polyder returns coefficients of the derivative polynomial.
🔧 Debug
advanced
2:00remaining
Identify error in polynomial multiplication code
What error does this code raise when multiplying two polynomials using np.polymul incorrectly?
NumPy
import numpy as np
p1 = [1, 2]
p2 = (3, 4)
result = np.polymul(p1, p2)
print(result)
ATypeError: polymul() missing 1 required positional argument
BSyntaxError: invalid syntax
CNo error, outputs [3, 10, 8]
DTypeError: polymul() argument 2 must be array-like, not tuple
Attempts:
2 left
💡 Hint
Check the data types of the polynomial coefficient inputs.
🚀 Application
expert
3:00remaining
Find roots of polynomial from coefficients
Given polynomial coefficients [1, -6, 11, -6], which option correctly finds all roots using np.roots?
NumPy
import numpy as np
coeffs = [1, -6, 11, -6]
roots = np.roots(coeffs)
print(sorted(roots))
A[1.0, 2.0, 3.0]
B[-3.0, 1.0, 2.0]
C[3.0, 2.0, 1.0]
DRaises ValueError due to invalid coefficients
Attempts:
2 left
💡 Hint
np.roots returns roots in any order; sorting helps compare.

Practice

(1/5)
1. What does the np.poly function do in NumPy?
easy
A. It evaluates a polynomial at given points.
B. It calculates the derivative of a polynomial.
C. It finds the roots of a polynomial from coefficients.
D. It returns polynomial coefficients from given roots.

Solution

  1. Step 1: Understand the purpose of np.poly

    The function np.poly takes roots of a polynomial as input and returns the coefficients of the polynomial with those roots.
  2. Step 2: Differentiate from other polynomial functions

    Other functions like np.polyder find derivatives, np.polyval evaluates polynomials, and np.roots finds roots from coefficients, so they are different.
  3. Final Answer:

    It returns polynomial coefficients from given roots. -> Option D
  4. Quick Check:

    np.poly = coefficients from roots [OK]
Hint: Remember: np.poly converts roots to coefficients [OK]
Common Mistakes:
  • Confusing np.poly with np.roots
  • Thinking np.poly evaluates polynomials
  • Mixing up derivative functions with np.poly
2. Which of the following is the correct syntax to get polynomial coefficients from roots [-1, 2, 3] using NumPy?
easy
A. np.poly([-1, 2, 3])
B. np.polyroots([-1, 2, 3])
C. np.polyval([-1, 2, 3])
D. np.polycoef([-1, 2, 3])

Solution

  1. Step 1: Recall the correct function name

    The function to get polynomial coefficients from roots is np.poly.
  2. Step 2: Check the syntax

    The correct syntax is np.poly([-1, 2, 3]). Other options are not valid NumPy functions.
  3. Final Answer:

    np.poly([-1, 2, 3]) -> Option A
  4. Quick Check:

    Correct function is np.poly with roots list [OK]
Hint: Use np.poly with a list of roots inside parentheses [OK]
Common Mistakes:
  • Using non-existent functions like np.polyroots
  • Confusing np.polyval with np.poly
  • Misspelling function names
3. What is the output of the following code?
import numpy as np
coeffs = np.poly([1, 2])
print(coeffs)
medium
A. [1. 3. 2.]
B. [1. -3. 2.]
C. [1. -2. 1.]
D. [1. 2. -3.]

Solution

  1. Step 1: Understand np.poly output for roots [1, 2]

    np.poly returns coefficients of polynomial with roots 1 and 2, which is (x - 1)(x - 2) = x^2 - 3x + 2.
  2. Step 2: Write coefficients in descending order

    The coefficients are [1, -3, 2], representing 1*x^2 - 3*x + 2.
  3. Final Answer:

    [1. -3. 2.] -> Option B
  4. Quick Check:

    Roots [1,2] -> coeffs [1, -3, 2] [OK]
Hint: Multiply (x - root) terms and list coefficients [OK]
Common Mistakes:
  • Mixing signs of coefficients
  • Listing roots instead of coefficients
  • Confusing order of coefficients
4. The following code throws an error. What is the problem?
import numpy as np
coeffs = np.poly(3, 4, 5)
print(coeffs)
medium
A. roots should be a list or array, not a tuple without brackets
B. np.poly does not accept more than two roots
C. print statement syntax is incorrect
D. np.poly requires integer roots only

Solution

  1. Step 1: Check the input to np.poly

    The roots 3, 4, 5 are passed as separate positional arguments instead of a single sequence. np.poly expects one array-like input (list, array, or tuple).
  2. Step 2: Fix the roots input

    Wrap roots in brackets: coeffs = np.poly([3, 4, 5]) to pass a list to np.poly.
  3. Final Answer:

    roots should be a list or array, not a tuple without brackets -> Option A
  4. Quick Check:

    np.poly needs list/array input [OK]
Hint: Always pass roots as list or array to np.poly [OK]
Common Mistakes:
  • Passing tuple without brackets
  • Assuming np.poly limits root count
  • Misunderstanding print syntax errors
5. You have roots [-2, 0, 3] and want to create a polynomial with leading coefficient 2 instead of 1. How can you do this using np.poly?
hard
A. Add 2 to the coefficients returned by np.poly
B. Pass an extra argument 2 to np.poly as np.poly([-2, 0, 3], 2)
C. Multiply the output of np.poly([-2, 0, 3]) by 2
D. Use np.polyval with 2 as the first argument

Solution

  1. Step 1: Generate coefficients from roots

    Use np.poly([-2, 0, 3]) to get coefficients for polynomial with leading coefficient 1.
  2. Step 2: Scale coefficients to change leading coefficient

    Multiply all coefficients by 2 to make leading coefficient 2, since np.poly does not take leading coefficient as argument.
  3. Final Answer:

    Multiply the output of np.poly([-2, 0, 3]) by 2 -> Option C
  4. Quick Check:

    Scale coefficients to change leading term [OK]
Hint: Multiply coefficients array to adjust leading coefficient [OK]
Common Mistakes:
  • Trying to pass leading coefficient as np.poly argument
  • Adding instead of multiplying coefficients
  • Using np.polyval incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard