View difference between Paste ID: wS4ub1Uv and eezge7H4
SHOW: | | - or go back to the newest paste.
1
import math
2
def input_coef(): #ввод данных
3
    print("Введите коэффициенты:")
4
    a=float(input("a="))
5
    b=float(input("b="))
6
    c=float(input("c="))
7
    d=float(input("d="))
8
    return a,b,c,d
9
10
def check(coef): #проверка, что уравнение кубическое
11
	a=float(coef[0])
12
	b=float(coef[1])
13
	c=float(coef[2])
14
	d=float(coef[3])
15
	print ("Заданы коэффициенты:", a, b, c, d)
16
	if abs(a) > 1e-6:
17
		return a, b, c, d
18
	else:
19
		return False
20
21
def Cardano(a, b, c, d): #решение уравнения
22
    #if a == 0:
23
    #    return 0
24
    res = []
25
    p = (3 * a * c - b * b) / 3 * a ** 2
26
    q  = (2 * math.pow(b, 3) - 9 * a * b * c + 27 * a * a * d) / 27 * math.pow(a, 3)
27
    D = (q / 2) ** 2 + (p / 3) ** 3
28
    
29
    if D < 0:
30
        if q < 0:
31
            fi = math.arctg(math.sqrt(-D))
32
        elif q > 0:
33
            fi = math.arctg(math.sqrt(-D)) + math.pi
34
        else:
35
            fi = math.pi / 2
36
        y1 = 2 * math.sqrt(-p / 3) * math.cos(fi / 3)
37
        y2 = 2 * math.sqrt(-p / 3) * math.cos(fi / 3 + 2 * math.pi / 3)
38
        y3 = 2 * math.sqrt(-p / 3) * math.cos(fi / 3 + 4 * math.pi / 3)
39
        res.append(y1 - b / 3 * a)
40
        res.append(y2 - b / 3 * a)
41
        res.append(y3 - b / 3 * a)
42
    
43
    return res
44
    
45
46-
coef = input_coef()
46+
k1,k2,k3,k4 = input_coef()
47
check = check(coef)
48
if check != False:
49-
    roots = Cardano(input_coef)
49+
    roots = Cardano(k1,k2,k3,k4)
50
    print("решение уравнения:", res)
51
else:
52
    print("Уравнение не кубическое")
53