Advertisement
Guest User

Untitled

a guest
Feb 16th, 2022
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. import math
  2. import cmath
  3. def input_coef(): #ввод данных
  4. print("Введите коэффициенты:")
  5. a=float(input("a="))
  6. b=float(input("b="))
  7. c=float(input("c="))
  8. d=float(input("d="))
  9. return a,b,c,d
  10.  
  11. def check(coef): #проверка, что уравнение кубическое
  12. a=float(coef[0])
  13. b=float(coef[1])
  14. c=float(coef[2])
  15. d=float(coef[3])
  16. print ("Заданы коэффициенты:", a, b, c, d)
  17. if abs(a) > 1e-6:
  18. return a, b, c, d
  19. else:
  20. return False
  21.  
  22. def Vieta(coef): #решение уравнения
  23. print("Решение кубического уравнения Ax^3 + Bx^2 + Cx + D = 0")
  24. print("Тригонометрической формулой Виета")
  25. k_a = a
  26. k_b = b
  27. k_c = c
  28. k_d = d
  29. a = k_b / k_a
  30. b = k_c / k_a
  31. c = k_d / k_a
  32. q = (a**2 - 3 * b) / 9
  33. r = (2 * a**3 - 9 * a * b + 27 * c) / 54
  34. s = q**3 - r**2
  35. if s > 0:
  36. from math import acos, cos, sqrt, pi
  37. f = (1 / 3) * acos(r / sqrt(q**3))
  38. x1 = -2 * sqrt(q) * cos(f) - (a / 3)
  39. x2 = -2 * sqrt(q) * cos(f + (2 / 3) * pi) - (a / 3)
  40. x3 = -2 * sqrt(q) * cos(f - (2 / 3) * pi) - (a / 3)
  41. print("Q = ", q)
  42. print("R = ", r)
  43. print("S = ", s)
  44. print("fi = ", f)
  45. print("x1 = ", x1)
  46. print("x2 = ", x2)
  47. print("x3 = ", x3)
  48. elif s < 0:
  49. if q > 0:
  50. from cmath import acosh, cosh, sinh, sqrt
  51. f = (1 / 3) * acosh((abs(r)) / (sqrt(q**3)))
  52. if r > 0:
  53. x1 = -2 * sqrt(q) * cosh(f) - (a / 3)
  54. x2 = sqrt(q) * cosh(f) - (a / 3) + 1j * sqrt(3) * sqrt(q) * sinh(f)
  55. x3 = sqrt(q) * cosh(f) + (a / 3) + 1j * sqrt(3) * sqrt(q) * sinh(f)
  56. print("Q = ", q)
  57. print("R = ", r)
  58. print("S = ", s)
  59. print("fi = ", f)
  60. print("x1 = ", x1)
  61. print("x2 = ", x2)
  62. print("x3 = ", x3)
  63. elif r == 0:
  64. x1 = -a / 3
  65. x2 = (-a / 3) - 1j * sqrt(3) * sqrt(q) * sinh(f)
  66. x3 = (-a / 3) + 1j * sqrt(3) * sqrt(q) * sinh(f)
  67. print("Q = ", q)
  68. print("R = ", r)
  69. print("S = ", s)
  70. print("fi = ", f)
  71. print("x1 = ", x1)
  72. print("x2 = ", x2)
  73. print("x3 = ", x3)
  74. else:
  75. x1 = 2 * sqrt(q) * cosh(f) - a / 3
  76. x2 = -1 * sqrt(q) * cosh(f) - a / 3 + 1j * sqrt(3) * sqrt(q) * sinh(f)
  77. x3 = -1 * sqrt(q) * cosh(f) - a / 3 - 1j * sqrt(3) * sqrt(q) * sinh(f)
  78. print("Q = ", q)
  79. print("R = ", r)
  80. print("S = ", s)
  81. print("fi = ", f)
  82. print("x1 = ", x1)
  83. print("x2 = ", x2)
  84. print("x3 = ", x3)
  85. elif q < 0:
  86. from cmath import asinh, cosh, sinh, sqrt
  87. f = (1 / 3) * asinh(abs(r) / sqrt(q**3))
  88. if r > 0:
  89. x1 = -2 * sqrt(abs(q)) * sinh(f) - a / 3
  90. x2 = sqrt(abs(q)) * sinh(f) - a / 3 + 1j * sqrt(3) * sqrt(abs(q)) * cosh(f)
  91. x3 = sqrt(abs(q)) * sinh(f) - a / 3 - 1j * sqrt(3) * sqrt(abs(q)) * cosh(f)
  92. print("Q = ", q)
  93. print("R = ", r)
  94. print("S = ", s)
  95. print("fi = ", f)
  96. print("x1 = ", x1)
  97. print("x2 = ", x2)
  98. print("x3 = ", x3)
  99. elif r == 0:
  100. x1 = -a / 3
  101. x2 = -a / 3 + 1j * sqrt(3) * sqrt(abs(q)) * cosh(f)
  102. x3 = -a / 3 - 1j * sqrt(3) * sqrt(abs(q)) * cosh(f)
  103. print("Q = ", q)
  104. print("R = ", r)
  105. print("S = ", s)
  106. print("fi = ", f)
  107. print("x1 = ", x1)
  108. print("x2 = ", x2)
  109. print("x3 = ", x3)
  110. else:
  111. x1 = 2 * sqrt(abs(q)) * sinh(f) - a / 3
  112. x2 = -1 * sqrt(abs(q)) * sinh(f) - a / 3 + 1j * sqrt(3) * cosh(f)
  113. x3 = -1 * sqrt(abs(q)) * sinh(f) + a / 3 + 1j * sqrt(3) * cosh(f)
  114. print("Q: = ", q)
  115. print("R = ", r)
  116. print("S = ", s)
  117. print("fi = ", f)
  118. print("x1 = ", x1)
  119. print("x2 = ", x2)
  120. print("x3 = ", x3)
  121. else:
  122. from cmath import sqrt
  123. x1 = -((c - (a * 3) / 27))**(1 / 3) - a / 3
  124. x2 = (-a + x1) / 2 + 1j / 2 * sqrt(abs((a - 3 * x1) * (a + x1) - 4 * b))
  125. x3 = x2 = (-a + x1) / 2 - 1j / 2 * sqrt(abs((a - 3 * x1) * (a + x1) - 4 * b))
  126. print("Q = ", q)
  127. print("R = ", r)
  128. print("S = ", s)
  129. print("fi = ", f)
  130. print("x1 = ", x1)
  131. print("x2 = ", x2)
  132. print("x3 = ", x3)
  133. else:
  134. x1 = -2 * (r)**(1 / 3) - a / 3
  135. x2 = (r)**(1 / 3) - a / 3
  136. print("Q = ", q)
  137. print("R = ", r)
  138. print("S = ", s)
  139. print("fi = ", f)
  140. print("x1 = ", x1)
  141. print("x2 = ", x2)
  142.  
  143. return x1, x2, x3
  144.  
  145.  
  146. coef = input_coef()
  147. check = check(coef)
  148. if check != False:
  149. roots = Vieta(coef)
  150.  
  151. else:
  152. print("Уравнение не кубическое")
  153.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement