Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import random
- import time
- MasA = [0] * 11
- MasG = [0] * 11
- MasX = [0] * 1001
- MasY = [0] * 1001
- MasCosWXj = [0] * 20001
- MasSinWXj = [0] * 20001
- MasWj = [0] * 11
- indCos = [0] * 11
- data = input().split('[')
- data = data[1:]
- ans = [0] * 100
- """ ------ Ввод пар (x, y) ------ """
- for i in range(2):
- if i % 2 == 0:
- r = 2
- cords = data[i].split(', ')
- cords[-1] = cords[-1][:-2]
- for cord in cords:
- if r % 2 == 0:
- MasX[r // 2] = float(cord[1:])
- else:
- num = float(cord[:-1])
- MasY[r // 2] = num
- r += 1
- else:
- xcords = data[i].split(', ')
- for i in range(len(xcords)):
- if i == 99:
- ans[i] = float(xcords[i][:-2])
- else:
- ans[i] = float(xcords[i])
- """ ---------------------------- """
- #for j in range(1, 1001):
- # MasX[j] = j * j
- # MasY[j] = 3 * math.sin(-0.333 * j * j) - 10 * math.cos(0.872 * j * j) + 2 * math.cos(0.7 * j * j)
- #start = time.time()
- for i in range(1, 11):
- icos = 0
- AAm = 0
- for jw in range(20001):
- w = jw / 1000 - 10
- SummS = 0
- SummC = 0
- for j in range(1, 1001):
- SYY = 0
- for k in range(1, i):
- if indCos[k] == 1:
- SYY = SYY + MasA[k] * math.cos(MasWj[k] * MasX[j])
- else:
- SYY = SYY + MasA[k] * math.sin(MasWj[k] * MasX[j])
- MasCosWXj[j] = math.cos(w * MasX[j])
- SummC = j / (j + 1) * SummC + (MasY[j] - SYY) * MasCosWXj[j] / (j + 1)
- MasSinWXj[j] = math.sin(w * MasX[j])
- SummS = j / (j + 1) * SummS + (MasY[j] - SYY) * MasSinWXj[j] / (j + 1)
- #print(math.fabs(SummS), math.fabs(SummC))
- if math.fabs(SummS) < math.fabs(SummC):
- icos = 1
- AA = SummC
- else:
- icos = 0
- AA = SummS
- AAA = math.fabs(AA)
- if math.fabs(AAm) < AAA:
- AAm = AA
- wm = w
- iCosm = icos
- MasA[i] = 2 * AAm
- MasWj[i] = wm
- indCos[i] = iCosm
- #print(time.time() - start)
- print(*MasA)
- print(*MasWj)
- #print(*indCos)
- #for i in range(1, 11):
- # indCos[i] = random.randint(0, 1)
- print(*indCos)
- res = []
- for ii in range(100):
- x = ans[ii]
- y = 0
- for i in range(1, 11):
- if indCos[i] == 0:
- y += MasA[i] * math.sin(x * MasWj[i])
- else:
- y += MasA[i] * math.cos(x * MasWj[i])
- res.append(round(y, 2))
- print(res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement