Advertisement
manish

Polynomial Division

Feb 11th, 2018
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.66 KB | None | 0 0
  1. def divide(dividend, divisor, quotient=None):
  2.     d1, d2 = len(dividend), len(divisor)
  3.     if quotient is None:
  4.         terms = d1 - d2 + 1
  5.         quotient = [0]*terms
  6.     pos = 0
  7.     for i in range(d1):
  8.         if dividend[i] != 0:
  9.             pos = i
  10.             break
  11.     power = d1 - 1 - pos
  12.     factor, mini = dividend[pos] / divisor[0], d2 - 1
  13.     if power - mini >= 0:
  14.         quotient[len(quotient) - (power - mini) - 1] += factor
  15.         for i in range(d2):
  16.             cur = divisor[i] * factor
  17.             curpower = d2 - 1 - i + power - mini
  18.             dividend[d1 - curpower - 1] -= cur
  19.         for j in range(d1 - d2 + 1):
  20.             if dividend[j] != 0:
  21.                 return divide(dividend, divisor, quotient)
  22.         return "Quotient is: %s (remainder:%s) " % (pol(quotient), pol(dividend))
  23.     else:
  24.         return "Quotient is: %s (remainder:%s) " % (pol(quotient), pol(dividend))
  25.  
  26.  
  27. def pol(x):
  28.     val = "  "
  29.     for i in range(len(x)):
  30.         if x[i] != 0:
  31.             if i == len(x) - 1:
  32.                 val += "+ " + str(int(x[i]))
  33.             else:
  34.                 val += "+ " + str(int(x[i])) + " x^" + str(int(len(x)) - i - 1) + " "
  35.     if val == "  ":
  36.         return " 0"
  37.     return val.replace("  +", "").replace("+ -", "- ").replace(" 1 ", "").replace("x^1", "x").replace(" x", "x")
  38.  
  39.  
  40. print(divide([1, 3, 3, 1], [1, 1]))  # Divides (x^3 + 3x^2 + 3x + 1) by (x + 1)
  41. print(divide([2, -5, -1], [1, -3]))  # Divides (2x^2 - 5x - 1) by (x - 3)
  42. print(divide([4, 3, 0, 2, 1], [1, 1, 2]))  # Divides (4x^4 + 3x^3 + 2x + 1) by (x^2 + x + 2)
  43. print(divide([2, 13, 15, 0, 0], [2, 3]))  # Divides (2x^4 + 13x^3 + 15x^2) by (2x + 3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement