1, 2, 3, 4, 5 (рост, стабильно)
5, 4, 3, 2, 1 (спад, стабильно)
5, 50, 4, 3, 1 (в общем — это спад, нестабильный)
1, 2, 1, 2, 1 (колебания, стабильно)
2, 1, 2, 1, 2 (колебания, стабильно)
1, 5, 2, 5, 1 (колебания, нестабильно)
5, 4, 4, 5, 4 (колебания, стабильно)
[ a*x + b, a*sin(b*x) + c]
на данных, подбирая коэффициенты, минимизируя отклонения. Посчитать сумму квадратов отклонений данных от теории, сделать вывод, попадает идеально или нет.# -*- coding: utf-8 -*-
# Author: Metalofon
def stab(numbers, last_number=None):
numbers = list(numbers)
if len(numbers) < 1:
return True
number = numbers[0]
if last_number is not None:
if last_number - 1 <= number <= last_number + 1:
return True and stab(numbers[1:], number)
else:
return False
else:
return True and stab(numbers[1:], number)
def add_or_sub(numbers, last_number=None):
numbers = list(numbers)
if len(numbers) < 1:
return []
number = numbers[0]
if last_number is not None:
if last_number < number:
return [1, *add_or_sub(numbers[1:], number)]
else:
return [-1, *add_or_sub(numbers[1:], number)]
else:
return [0, *add_or_sub(numbers[1:], number)]
def stabil(numbers):
result = stab(numbers)
if result:
return "Стабильно"
else:
return "Нестабильно"
def col(numbers):
colbs = sum(add_or_sub(numbers))
if colbs > 0:
return "Рост"
elif colbs < 0:
return "Спад"
else:
return "Колебания"
numbers_m = (
(1, 2, 3, 4, 5),
(5, 4, 3, 2, 1),
(5, 50, 4, 3, 1),
(1, 2, 1, 2, 1),
(2, 1, 2, 1, 2),
(1, 5, 2, 5, 1),
(5, 4, 4, 5, 4)
)
for numbers_n in numbers_m:
print(stabil(numbers_n), col(numbers_n))