m
Size: a a a
m
m
m
КК
fl
import math
SCALE_FACTOR_X = 1_000
SCALE_FACTOR_Y = 1_000
f = [] # массив со значениями функции
z = [] # массив со значениями Х
eps = int(SCALE_FACTOR_X * 1 // 1000) # шаг при смене знака
l = int(-5 * SCALE_FACTOR_X) # начало промежутка
r = int(5 * SCALE_FACTOR_X) # конец промежутка
x = l
step = int(SCALE_FACTOR_X * 5 // 10) # шаг
def f1(x):
return int(SCALE_FACTOR_Y * ((x ** 3 - 8 * x * SCALE_FACTOR_X ** 2) / (SCALE_FACTOR_X ** 3) + 1 - (
5 * math.sin(x / SCALE_FACTOR_X)))) # уравнение 1
def sign(o): # функция проверки на смену знака
if o < 0:
return (-1)
elif o > 0:
return (1)
else:
return (0)
def find_the_root(l_b, r_b): # функция, которая ищет корень в промежутке, но не работает
x = l_b
f_prev = f1(x)
while x <= r_b:
if sign(f1(x)) != sign(f_prev): # привожу к одинаковому кол-ву знаков после .
print(f'{(x) / SCALE_FACTOR_X}') # печатает корень типо
return
f_prev = f1(x)
x += eps # шагает дальше
while x <= r: # заполнение массивов
f.append(f1(x))
z.append(x)
x += step
for i in range(1, len(z)):
if sign(f[i]) != sign(f[i - 1]): # если происходит смена знака
# print(z[i-1], z[i]); - отладочный вывод, промежутки смены знака находит правильно, в формате "2.5"
find_the_root(z[i - 1], z[i]) # вызываю функцию для промежутка со сменой знака, которая почему-то не работает
😍
m
m
😍
m
😍
КК
😍
😍
m
m
😍
m