Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. class Interval:
  2.     def __init__(self, minimum, maximum):
  3.         self.min = minimum
  4.         self.max = maximum
  5.  
  6.     def length(self):
  7.         self.length = self.max - self.min
  8.         return (self.length)
  9.  
  10.     def mid(self):
  11.         self.mid = (self.min + self.max) / 2
  12.         return (self.mid)
  13.  
  14.     def contains(self, x):
  15.         if x >= self.min and x <= self.max:
  16.             return True
  17.         else:
  18.             return False
  19.  
  20.     def __add__(self, other):
  21.         newmax = self.max + other.max
  22.         newmin = self.min + other.min
  23.         return (Interval(newmin, newmax))
  24.  
  25.     def __sub__(self, other):
  26.         newmin = self.min - other.max
  27.         newmax = self.max - other.min
  28.         return (Interval(newmin, newmax))
  29.  
  30.     def __repr__(self):
  31.         return ("[" + str(self.min) + "," + str(self.max) + "]")
  32.  
  33.     def __mul__(self, other):
  34.         newmin = min(self.max * other.min, self.max * other.max, self.min * other.min, self.min * other.max)
  35.         newmax = max(self.max * other.min, self.max * other.max, self.min * other.min, self.min * other.max)
  36.         return (Interval(newmin, newmax))
  37.  
  38.     def evalPolynomial(self, a):
  39.         if len(a) == 1:
  40.             #print(Interval(self.min, self.max))
  41.             return (Interval(self.min, self.max) * (Interval(a[0], a[0])))
  42.         else:
  43.             # print(Interval(self.min,self.max))
  44.             # print(a[0])
  45.             return (Interval(a[0], a[0]) + (Interval(self.min, self.max) * (self.evalPolynomial(a[1:]))))
  46.  
  47.  
  48. def findZeros(a, I, zeros=[]):
  49.     if I.evalPolynomial(a).contains(0) == False:
  50.         return None
  51.     if I.length() < 0.000001 and I.evalPolynomial(a).contains(0):
  52.         zeros.append(I.mid())
  53.         return None
  54.     findZeros(a, Interval(I.min, I.mid()), zeros)
  55.     findZeros(a, Interval(I.mid, I.max), zeros)
  56.     return (zeros)
  57.  
  58.  
  59. a = Interval(-0.0000001, 0.0000000001)
  60. b = Interval(12, 26)
  61. d = [1, 0, 5, 2, 13, 9]
  62. dd = Interval(1, 1)
  63.  
  64. print(findZeros([-6, 11, -6, 1], Interval(0, 4), []))
  65.  
  66. print(Interval(0,4).evalPolynomial([-6, 11, -6, 1]).contains(0))
  67. print(Interval(2,4).evalPolynomial([-6, 11, -6, 1]).contains(0))
  68. print(Interval(3,4).evalPolynomial([-6, 11, -6, 1]).contains(0))
  69.  
  70. print(findZeros([1,2,1],Interval(-1,1),[]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement