Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numpy import poly1d
- import numpy
- #bad code. It It needs refactoring and optimization
- def printT(tabl):
- for r in tabl:
- print(r)
- def zchange(arr, i):
- c = 0
- z = arr[0][i]
- for k in range(len(arr)):
- if z == -arr[k][i]:
- z = arr[k][i]
- c += 1
- return c
- coef = input("Input coef: ").split()
- for i in range(len(coef)):
- coef[i] = float(coef[i])
- f = []
- f.append(poly1d(coef))
- f.append(poly1d(coef).deriv())
- while len(f[-1]) > 0:
- tmp, ft = f[-2] / f[-1]
- f.append(-ft)
- tabl = []
- tablHead = ['inf', 0, 'inf']
- for fp in f:
- row = []
- row.append(fp(-10000) / abs(fp(-10000)))
- row.append(fp(0) / abs(fp(0)))
- row.append(fp(10000) / abs(fp(10000)))
- tabl.append(row)
- znk = []
- for i in range(len(tabl[0])):
- znk.append(zchange(tabl, i))
- vidrc = abs(znk[0] - znk[1])
- dodrc = abs(znk[0] - znk[2])
- print("vidroots" + str(vidrc))
- print("dodroots" + str(dodrc))
- i = -1
- while vidrc != 0:
- tablHead.insert(1, i)
- for fi in range(len(f)):
- x = i
- if f[fi](x) != 0:
- fx = f[fi](x) / abs(f[fi](x))
- else:
- fx = 0
- tabl[fi].insert(1, fx)
- i -= 1
- print(zchange(tabl, -2))
- print(zchange(tabl, -3))
- if abs(zchange(tabl, -2) - zchange(tabl, -3)) == 1:
- vidrc -= 1
- i = 1
- while dodrc != 0:
- tablHead.insert(-1, i)
- for fi in range(len(f)):
- x = i
- if f[fi](x) != 0:
- fx = f[fi](x) / abs(f[fi](x))
- else:
- fx = 0
- tabl[fi].insert(-1, fx)
- i += 1
- if abs(zchange(tabl, -2) - zchange(tabl, -3)) == 1:
- dodrc -= 1
- print(tablHead)
- printT(tabl)
Advertisement
Add Comment
Please, Sign In to add comment