Advertisement
statheist

Ротор с отладкой последний

Apr 27th, 2022
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.14 KB | None | 0 0
  1.  
  2. #import numpy as np
  3. import math
  4.  
  5. def radius(x,y):
  6.     if 42 <= (math.sqrt(math.pow(x, 2) + math.pow(y, 2))) <=88:
  7.         return (math.sqrt(math.pow(x, 2) + math.pow(y, 2)))
  8.     else:
  9.         return False
  10.  
  11. # m2 = 70
  12. # r2 = 50
  13. # a2 = 150
  14. # x2 = -43.3
  15. # y2 = 25
  16. # z2 = 160
  17. # m3 = 40
  18. # r3 = 85
  19. # a3 = 80
  20. # x3 = 14.8
  21. # y3 = 83.7
  22. # z3 = 240
  23. # z4 = 320
  24. # z1 = 80
  25.  
  26.  
  27. # a = [] import math
  28. # Znach=[[m2,m3,r3]]
  29. # for i in range(3):
  30. #     Znach.append(list(map(int, input().split())))
  31. # print(Znach)
  32.  
  33. # Znach = [['x4', 'y4', 'm4', 'x1', 'y1', 'm1','e']]
  34. # e = 10000
  35. #
  36. # for x4 in range(-88, 88):  # подбор  от -88мм до 88мм с шагом 1мм
  37. #     for y4 in range(-88, 88):
  38. #         if 42 <= (math.sqrt(math.pow(x4, 2) + math.pow(y4, 2))) <= 88:  # 42 <= r4 <= 88
  39. #             for x1 in range(-88, 88):
  40. #                 for y1 in range(-88, 88):
  41. #                     if 42 <= (math.sqrt(math.pow(x1, 2) + math.pow(y1, 2))) <= 88:
  42. #                         for m4 in range(40, 80, 10):  # подбор массы от 40 до 70 с шагом 10
  43. #                             for m1 in range(40, 80, 10):
  44. #                                 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):
  45. #                                     Znach.append(list(map(int, (x4, y4, m4, x1, y1, m1,e)))) # добавление строк, из подходящих значений, в матрицу
  46. #                                     print(Znach)
  47.  
  48. m2=50
  49. m3=60
  50. z2=160
  51. z3=240
  52. z4=320
  53. z1=80
  54. x2= 45.0534
  55. y2= 31.5467
  56. x3=-45.9619
  57. y3=45.9619
  58. Znach=[]
  59.  
  60. e1=1000000
  61. e2=1000000
  62. for x1 in range(-88,89):
  63.     #print(end='\n\n')
  64.     #print(x1)
  65.     for y1 in range(-88,89): # подбор ыгрыков от -88 до 88
  66.         #print(x1, y1, "r1=",radius(x1,y1)) #-----
  67.         if radius(x1,y1):
  68.             #print('r1 proshel')
  69.             for m1 in range(40,80,10): # подбор массы от 40 до 70 с шагом 10
  70.                 for m4 in range(40,80,10):
  71.                     x4= (-m1*x1*z1 - m2*x2*z2 - m3*x3*z3) / (m4*z4)  #выражаем х4 из 3 уравнения
  72.                     #print('x4', x4, 'm1=', m1, 'm4=', m4)
  73.                     if -88 <= x4 <= 88 : # границы для х4 от -88 до 88
  74.                         #print('proverka x4 proshla',)
  75.                         y4 = (-m1*y1*z1 - m2*y2*z2 - m3*y3*z3) / (m4*z4)  # выражаем y4 из 4 уравнения
  76.                         #print('y4', y4)
  77.                         if -88 <= y4 <= 88: # проверка на границы у4 от -88 до 88
  78.                             #print('proverka y4 proshla')
  79.                             #print('r2',radius(x4,y4))
  80.                             if radius(x4,y4): # проверка r4 от 42 до 88
  81.                                 #print('r2 proshel', 'eps1=',(m1 * x1  + m2 * x2  + m3 * x3  + m4 * x4), 'eps2=',(m1 * y1 + m2 * y2  + m3 * y3  + m4 * y4))
  82.                                 if abs(m1 * x1  + m2 * x2  + m3 * x3  + m4 * x4)<=e1 and abs(m1 * y1 + m2 * y2  + m3 * y3  + m4 * y4 )<=e2: # проверка на 1 и 2 уравнение
  83.                                     e1=abs(m1 * x1  + m2 * x2  + m3 * x3  + m4 * x4)
  84.                                     e2=abs(m1 * y1 + m2 * y2  + m3 * y3  + m4 * y4 )
  85.                                     #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)
  86.                                     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 )))))  # добавление строк, из подходящих значений, в матрицу
  87.  
  88. print("Человек, сколько наилучших вариантов я тебе должен показать?")
  89. n=int(input())
  90. if n==1:
  91.     print(end='\n')
  92.     print( "Лучший результат (e1=%f,e2=%f)"%(Znach[int(len(Znach)-1)][8],Znach[int(len(Znach))-1][9]),end="\n")
  93.     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")
  94.     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")
  95.     print("Это было легко")
  96. elif n>1:
  97.     print(end='\n')
  98.     print("Лучший результат (e1=%f,e2=%f)" % (Znach[int(len(Znach) - 1)][8], Znach[int(len(Znach)) - 1][9]), end="\n")
  99.     print("     Для первого неизвестного диска x=%f    y=%f   m=%d   r=%f   Alfa=%f    z=%d" % (
  100.     Znach[int(len(Znach) - 1)][0], Znach[int(len(Znach) - 1)][1], Znach[int(len(Znach) - 1)][2],
  101.     Znach[int(len(Znach) - 1)][3],
  102.     math.degrees(math.atan2(Znach[int(len(Znach)) - 1][0], Znach[int(len(Znach)) - 1][1])), z1), end="\n")
  103.     print("     Для второго неизвестного диска x=%f    y=%f   m=%d   r=%f   Alfa=%f    z=%d" % (
  104.     Znach[int(len(Znach) - 1)][4], Znach[int(len(Znach) - 1)][5], Znach[int(len(Znach) - 1)][6],
  105.     Znach[int(len(Znach) - 1)][7],
  106.     math.degrees(math.atan2(Znach[int(len(Znach)) - 1][4], Znach[int(len(Znach)) - 1][5])), z4), end="\n\n")
  107.  
  108.     for i in range(2,n+1):
  109.         # a1=math.degrees(math.atan2(Znach[int(len(Znach))-i][0],Znach[int(len(Znach))-i][1]))
  110.         # a4=math.degrees(math.atan2(Znach[int(len(Znach))-i][4],Znach[int(len(Znach))-i][5]))
  111.         # m1=Znach[int(len(Znach))-i][2]
  112.         # m4=Znach[int(len(Znach))-i][6]
  113.         print("Результат №%d"%(i),end="\n")
  114.         print("     Для первого неизвестного диска x=%f    y=%f   m=%d   r=%f   Alfa=%f    z=%d" % (
  115.         Znach[int(len(Znach) - 1)][0], Znach[int(len(Znach) - i)][1], Znach[int(len(Znach) - i)][2],
  116.         Znach[int(len(Znach) - i)][3],
  117.         math.degrees(math.atan2(Znach[int(len(Znach)) - i][0], Znach[int(len(Znach)) - i][1])), z1), end="\n")
  118.         print("     Для второго неизвестного диска x=%f    y=%f   m=%d   r=%f   Alfa=%f    z=%d" % (
  119.         Znach[int(len(Znach) - i)][4], Znach[int(len(Znach) - i)][5], Znach[int(len(Znach) - i)][6],
  120.         Znach[int(len(Znach) - i)][7],
  121.         math.degrees(math.atan2(Znach[int(len(Znach)) - 1][4], Znach[int(len(Znach)) - 1][5])), z4), end="\n\n")
  122.     print("Я дал тебе всё, что ты хочешь, человек, могу ли я попросить теперь меня не бить ?")
  123. else:
  124.     print("Бип-буп-бип-пуп")
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement