Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import numpy as np
- import math
- def radius(x,y):
- if 42 <= (math.sqrt(math.pow(x, 2) + math.pow(y, 2))) <=88:
- return (math.sqrt(math.pow(x, 2) + math.pow(y, 2)))
- else:
- return False
- # m2 = 70
- # r2 = 50
- # a2 = 150
- # x2 = -43.3
- # y2 = 25
- # z2 = 160
- # m3 = 40
- # r3 = 85
- # a3 = 80
- # x3 = 14.8
- # y3 = 83.7
- # z3 = 240
- # z4 = 320
- # z1 = 80
- # a = [] import math
- # Znach=[[m2,m3,r3]]
- # for i in range(3):
- # Znach.append(list(map(int, input().split())))
- # print(Znach)
- # Znach = [['x4', 'y4', 'm4', 'x1', 'y1', 'm1','e']]
- # e = 10000
- #
- # for x4 in range(-88, 88): # подбор от -88мм до 88мм с шагом 1мм
- # for y4 in range(-88, 88):
- # if 42 <= (math.sqrt(math.pow(x4, 2) + math.pow(y4, 2))) <= 88: # 42 <= r4 <= 88
- # for x1 in range(-88, 88):
- # for y1 in range(-88, 88):
- # if 42 <= (math.sqrt(math.pow(x1, 2) + math.pow(y1, 2))) <= 88:
- # for m4 in range(40, 80, 10): # подбор массы от 40 до 70 с шагом 10
- # for m1 in range(40, 80, 10):
- # if (abs(m1*x1 + m2*x2 + m3*x3 + m4*x4)<=e) and (abs(m1*y1 + m2*y2 + m3*y3 + m4*y4)<=e) and (abs(m1*x1*z1 + m2*x2*z2 + m3*x3*z3 + m4*x4*z4)<=e) and (abs(m1*y1*z1 + m2*y2*z2 + m3*y3*z3 + m4*y4*z4)<=e):
- # Znach.append(list(map(int, (x4, y4, m4, x1, y1, m1,e)))) # добавление строк, из подходящих значений, в матрицу
- # print(Znach)
- m2=50
- m3=60
- z2=160
- z3=240
- z4=320
- z1=80
- x2= 45.0534
- y2= 31.5467
- x3=-45.9619
- y3=45.9619
- Znach=[]
- e1=1000000
- e2=1000000
- for x1 in range(-88,89):
- #print(end='\n\n')
- #print(x1)
- for y1 in range(-88,89): # подбор ыгрыков от -88 до 88
- #print(x1, y1, "r1=",radius(x1,y1)) #-----
- if radius(x1,y1):
- #print('r1 proshel')
- for m1 in range(40,80,10): # подбор массы от 40 до 70 с шагом 10
- for m4 in range(40,80,10):
- x4= (-m1*x1*z1 - m2*x2*z2 - m3*x3*z3) / (m4*z4) #выражаем х4 из 3 уравнения
- #print('x4', x4, 'm1=', m1, 'm4=', m4)
- if -88 <= x4 <= 88 : # границы для х4 от -88 до 88
- #print('proverka x4 proshla',)
- y4 = (-m1*y1*z1 - m2*y2*z2 - m3*y3*z3) / (m4*z4) # выражаем y4 из 4 уравнения
- #print('y4', y4)
- if -88 <= y4 <= 88: # проверка на границы у4 от -88 до 88
- #print('proverka y4 proshla')
- #print('r2',radius(x4,y4))
- if radius(x4,y4): # проверка r4 от 42 до 88
- #print('r2 proshel', 'eps1=',(m1 * x1 + m2 * x2 + m3 * x3 + m4 * x4), 'eps2=',(m1 * y1 + m2 * y2 + m3 * y3 + m4 * y4))
- if abs(m1 * x1 + m2 * x2 + m3 * x3 + m4 * x4)<=e1 and abs(m1 * y1 + m2 * y2 + m3 * y3 + m4 * y4 )<=e2: # проверка на 1 и 2 уравнение
- e1=abs(m1 * x1 + m2 * x2 + m3 * x3 + m4 * x4)
- e2=abs(m1 * y1 + m2 * y2 + m3 * y3 + m4 * y4 )
- #print('URA',x1,y1,m1,x4,y4,m4,m1 * x1 + m2 * x2 + m3 * x3 + m4 * x4,m1 * y1 + m2 * y2 + m3 * y3 + m4 * y4,m1 * x1 * z1 + m2 * x2 * z2 + m3 * x3 * z3 + m4 * x4 * z4,m1 * y1 * z1 + m2 * y2 * z2 + m3 * y3 * z3 + m4 * y4 * z4)
- Znach.append(list(map(float,(x1, y1, m1,radius(x1,y1), x4, y4, m4,radius(x4,y4),e1,e2,(m1 * x1*z1 + m2 * x2*z2 + m3 * x3*z3 + m4 * x4*z4),(m1 * y1*z1 + m2 * y2*z2 + m3 * y3*z3 + m4 * y4*z4 ))))) # добавление строк, из подходящих значений, в матрицу
- print("Человек, сколько наилучших вариантов я тебе должен показать?")
- n=int(input())
- if n==1:
- print(end='\n')
- print( "Лучший результат (e1=%f,e2=%f)"%(Znach[int(len(Znach)-1)][8],Znach[int(len(Znach))-1][9]),end="\n")
- print(" Для первого неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d"%(Znach[int(len(Znach)-1)][0],Znach[int(len(Znach)-1)][1],Znach[int(len(Znach)-1)][2],Znach[int(len(Znach)-1)][3],math.degrees(math.atan2(Znach[int(len(Znach))-1][0],Znach[int(len(Znach))-1][1])),z1),end="\n")
- print(" Для второго неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d"%(Znach[int(len(Znach)-1)][4],Znach[int(len(Znach)-1)][5],Znach[int(len(Znach)-1)][6],Znach[int(len(Znach)-1)][7],math.degrees(math.atan2(Znach[int(len(Znach))-1][4],Znach[int(len(Znach))-1][5])),z4),end="\n")
- print("Это было легко")
- elif n>1:
- print(end='\n')
- print("Лучший результат (e1=%f,e2=%f)" % (Znach[int(len(Znach) - 1)][8], Znach[int(len(Znach)) - 1][9]), end="\n")
- print(" Для первого неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d" % (
- Znach[int(len(Znach) - 1)][0], Znach[int(len(Znach) - 1)][1], Znach[int(len(Znach) - 1)][2],
- Znach[int(len(Znach) - 1)][3],
- math.degrees(math.atan2(Znach[int(len(Znach)) - 1][0], Znach[int(len(Znach)) - 1][1])), z1), end="\n")
- print(" Для второго неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d" % (
- Znach[int(len(Znach) - 1)][4], Znach[int(len(Znach) - 1)][5], Znach[int(len(Znach) - 1)][6],
- Znach[int(len(Znach) - 1)][7],
- math.degrees(math.atan2(Znach[int(len(Znach)) - 1][4], Znach[int(len(Znach)) - 1][5])), z4), end="\n\n")
- for i in range(2,n+1):
- # a1=math.degrees(math.atan2(Znach[int(len(Znach))-i][0],Znach[int(len(Znach))-i][1]))
- # a4=math.degrees(math.atan2(Znach[int(len(Znach))-i][4],Znach[int(len(Znach))-i][5]))
- # m1=Znach[int(len(Znach))-i][2]
- # m4=Znach[int(len(Znach))-i][6]
- print("Результат №%d"%(i),end="\n")
- print(" Для первого неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d" % (
- Znach[int(len(Znach) - 1)][0], Znach[int(len(Znach) - i)][1], Znach[int(len(Znach) - i)][2],
- Znach[int(len(Znach) - i)][3],
- math.degrees(math.atan2(Znach[int(len(Znach)) - i][0], Znach[int(len(Znach)) - i][1])), z1), end="\n")
- print(" Для второго неизвестного диска x=%f y=%f m=%d r=%f Alfa=%f z=%d" % (
- Znach[int(len(Znach) - i)][4], Znach[int(len(Znach) - i)][5], Znach[int(len(Znach) - i)][6],
- Znach[int(len(Znach) - i)][7],
- math.degrees(math.atan2(Znach[int(len(Znach)) - 1][4], Znach[int(len(Znach)) - 1][5])), z4), end="\n\n")
- print("Я дал тебе всё, что ты хочешь, человек, могу ли я попросить теперь меня не бить ?")
- else:
- print("Бип-буп-бип-пуп")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement