Member 14134248 Ответов: 1

Решение для коэффициентов в квазиквадратичном диофантовом уравнении


Всем Привет,

Я на самом деле не программист (просто делал некоторые очень простые вещи в свободное время), но я хотел спросить, Может ли кто-нибудь помочь мне написать программу для решения следующей проблемы:

Предположим, что x, y и z-это числа, которые пользователь будет вводить.

ax^2 + by^2 + cz^2 = 1

Решите для a, b и c

Что я уже пробовал:

Я видел программу, которая решает квадратики с помощью циклов по этому адресу: Найдите x и y, удовлетворяющие ax + by = n - GeeksforGeeks[^]

но мне не удалось приспособить его к моей конкретной проблеме.

Проблема заключается в том, чтобы решить три отдельные переменные в терминах, а затем сверить их с некоторым номером держателя "i".

Если кто-то знает, как решить уравнение в терминах трех переменных, или если кто-то знает другой способ (программирование или математика) решить это, я был бы очень признателен.

Richard MacCutchan

Сначала нужно найти математическое решение. Преобразование этого в код не должно быть слишком сложным.

1 Ответов

Рейтинг:
1

Stefan_Lang

Я дам краткое описание математического алгоритма:

Во-первых, не существует простой формулы: в зависимости от значений x, y и z может не быть решений или бесконечное число решений.

Пространство поиска состоит из всех троек целых чисел (a,b,c). Существует бесконечное число троек, поэтому вам нужно ограничить его.

Чтобы найти разумное ограничение, предположим на мгновение, что вы нашли одно решение (A,B,C), которое решает уравнение Ax^2 + By^2 + Cz^2 = 0 (не 1). Если вы зададите A'=A-y^2 и B'=B+x^2, то новое уравнение A'x^2+B'y^2+Cz^2=1 также будет иметь место:
A'x^2 + B'y^2 + Cz^2
= (A-y^2)x^2 + (B+x^2)y^2 + Cz^2
= AX^2-(x^2)(y^2) + By^2+(x^2)(y^2) + Cz^2
= Ax^2 + By^2 + Cz^2
= 1
Таким образом, вы можете изменить любое допустимое решение (A,B,C) путем сложения или вычитания кратных x^2 или y^2 или z^2, чтобы получить другие решения, которые также являются допустимыми. Самое главное, вы можете найти решение, где A-это значение между 0 и y^2-1, а затем вы можете изменить B и C так, чтобы B-это значение между 0 и z^2-1.

С этими ограничениями вы можете попробовать любую комбинацию для A и B в пределах этих интервалов и решить уравнение для C, чтобы узнать, получаете ли вы целое число или нет.

Пример: скажем, x=5, y=3, z=2; это означает, что вы должны проверить комбинации значений для A в [0,8] и B в [0,3]. Чтобы получить значение для C, вы должны решить целевую формулу для C:
C = (1-Ax^2-By^2)/Z^2 = (1-25A-9B)/4
Если окончательное деление на z^2 (=4) приводит к целому числу, то вы нашли решение. В противном случае комбинация А и в, которую вы пробовали, не является частью какого-либо допустимого решения.