Решение диофантова уравнения и подстановка через ряд. В общем виде
# Big O(m^n), m ряд, n число
# Реализация двух рядов - 2^n (x, y) для sha, aes 256/512
# В проекте реализация 45 рядов (осей) в линейном виде
# if a1*e1 + ... + an*en = bn, b -> [0:1000] (sum(an*en) = bn
# then return all a and e кроме одного
# Последний е остается и выводится для случая в 2 оси = c-ax/b,
# if (c-ax) % b == 0, return 'Z integer equation' else: return 'Q,R'
def eq(a, e, b): # По типу Базиса Шаудера
for n in range(1, 10 + 1): # число рядов
if a[n] * e[n] == b: # a1*e1 + a2*e2 + ... + an*en = b, b > 0
return a, n, e, b
if __name__ == '__main__':
res = eq()
print(res)
##################
while n <= 10:
if (a[n] * e[n]) + (a[n-1] * e[n-1]) == b:
print(a, n, e, b)
Как решать это уравнение в целых и рациональных, если ответ - при условии, если 1 из рядов имеет решение. Берча Св Дайера ответ.
Единственное хочу на питоне реализацию вопроса про уравнение с ограниченным числом переменных.
Ответы (1 шт):
У вас в комментарии сумма ряда сравнивается с b
, а в коде вы всего одно слагаемое сравниваете с b
. Вы уж разберитесь, чего вы точно хотите. Для того, чтобы посчитать сумму ряда, нужно добавлять его слагаемые в какую-то переменную. А сравнение с b
производить уже после того, как окончится цикл и посчитается весь ряд. И ещё индексация в питоне начинается с 0, а не с 1.
s = 0
for n in range(10): # число членов ряда
s += a[n] * e[n]
return s == b
Но это ещё не всё. Нужно помнить, что у вас вычисления приблизительные и точность чисел с плавающей точкой ограничена. Поэтому сравнение нужно производить не точно, а с каким-то допущением.
epsilon = 1e-5
...
return abs(s-b) < epsilon