Целочисленное уравнение.

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Целочисленное уравнение.

Сообщение geh » 16 янв 2014, 11:21

Дано уравнение
$$x^3+y^3=z^3+1$$
Требуется составить программу для решения этого уравнения в натуральных числах.
Эта программа естественно не будет искать очевидные решения типа:
$$x=1$$
$$y=n$$
$$z=n$$
где n - натуральное число
Кроме того, поскольку x и y входят в уравнения симметрично, то
симметричные решения будут рассматриваться как одно (по умолчанию будем полагать, что y не меньше x)
Программа может выглядеть так

Код: Выбрать все

DEFLNG R, X-Z
DEFDBL D
CLS
FOR z=10 TO 1290
   y0=INT(z/1.26)
   FOR y=y0 TO z-1
      dx=(z^3-y^3)^0.333333333333333#
      x=INT(dx+0.5)
      IF ABS(x-dx)<0.01 THEN         r=x^3+y^3-z^3-1         IF r=0 THEN PRINT "x=";x;"y=";y;"z=";z      END IF   NEXT yNEXT zSTOPEND

Эта программа находит несколько решений, но далее
наступает переполнение. Это и понятно, кубы чисел
очень быстро растут. И здесь приходит мысль использовать
для решения этого уравнения теорию сравнений.
необходимая информация из этой теории:
пусть a - натуральное число и p - простое число
пусть также a<p и $$a\equiv0 (mod p)$$, то a=0
2)
пусть $$p_1, p_2 ,..., p_n$$ - простые числа
и a в общем случае больше любого из заданных простых чисел, но
$$a<p_1p_2 ... p_n$$ и
$$a\equiv0 (mod p_1)$$
$$a\equiv0 (mod p_2)$$
. . . . . . . . . . . . . . . .
$$a\equiv0 (mod p_n)$$
отсюда следует, что
$$a\equiv0 (mod p_1p_2 ... p_n)$$
и что a=0 !!
Теперь мы можем спокойно производить вычисления по модулю и переполнения не будет
примечание:
для контроля программы я все же частично решил
это уравнение и нашел еще одно бесконечное
множество решений. Вот оно:
$$x=9n^3+1$$
$$y=9n^4$$
$$z=9n^4+3n$$
где n - натуральное число (впрочем n может быть любым действительным числом)
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

Целочисленное уравнение.

Сообщение kiv » 16 янв 2014, 12:10

См. "Китайская теорема об остатках" и ее практическое применение...
Последний раз редактировалось kiv 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

folk
Сообщений: 4177
Зарегистрирован: 11 сен 2009, 21:00

Целочисленное уравнение.

Сообщение folk » 16 янв 2014, 13:51

Хм а на бейсике нельзя оставаться в рамках челых чисел? Но это так не в тему - а по сути да вы можете решить эту систему по нескольким независимым модулям и получить кандидаты на ответ - но ответ вам все равно придется проверить - ведь любое решение по модулю это семейство решений. Есть библиотеки где числа не переполняются (gmp), есть языки где есть длинные целые (long long в C) и языки где уже встроена длинная арифметика (lisp)
Последний раз редактировалось folk 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Sonic86
Сообщений: 1774
Зарегистрирован: 03 мар 2011, 21:00

Целочисленное уравнение.

Сообщение Sonic86 » 16 янв 2014, 14:12

geh писал(а):Source of the post Дано уравнение
$$x^3+y^3=z^3+1$$
Требуется составить программу для решения этого уравнения в натуральных числах.
Эта программа естественно не будет искать очевидные решения типа:
$$x=1$$
$$y=n$$
$$z=n$$
где n - натуральное число
Формулировка бессмысленная, если что. Грубо говоря, такую программу написать очень сложно. А Вы пишите нечто другое.
"Решить уравнение" - означает "найти все решения и доказать, что других решений нет".
Последний раз редактировалось Sonic86 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

folk
Сообщений: 4177
Зарегистрирован: 11 сен 2009, 21:00

Целочисленное уравнение.

Сообщение folk » 16 янв 2014, 14:19

На подмножестве n < N0 программа может найти все решения)
Последний раз редактировалось folk 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Целочисленное уравнение.

Сообщение geh » 16 янв 2014, 17:10

Спасибо всем! Да, я не написал ограничений на переменную z.
Это ведущая переменная. Но я такого условия себе и не ставил.
Написав программу, я отдал ее компьютеру и после двух суток непрерывного счета
просмотрел все результаты в текстовом файле (всего более 70 решений).
Разумеется в программе была предусмотрена проверка решений. Так что ничего лишнего я не получил.
С точки зрения математики я не решил уравнения. Но компьютер и не может этого сделать.
Передо мной стояла другая задача: вторгнуться в область больших чисел, не используя массивы
для их представления.
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

Целочисленное уравнение.

Сообщение kiv » 16 янв 2014, 18:44

geh писал(а):Source of the post
Написав программу, я отдал ее компьютеру и после двух суток непрерывного счета
просмотрел все результаты в текстовом файле (всего более 70 решений).


Для каких значений переменных шел просчет? Я имею в виду, максимальное z какое?
Последний раз редактировалось kiv 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
zykov
Сообщений: 1777
Зарегистрирован: 02 ноя 2009, 21:00

Целочисленное уравнение.

Сообщение zykov » 16 янв 2014, 19:16

Почему при вычмслении dx используется "z^3-y^3", а не "1+z^3-y^3"?

PS: выкиньте уже это basic и переходите на C/C++ (или хотя бы Java).
Последний раз редактировалось zykov 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

folk
Сообщений: 4177
Зарегистрирован: 11 сен 2009, 21:00

Целочисленное уравнение.

Сообщение folk » 16 янв 2014, 19:51

zykov писал(а):Source of the post
PS: выкиньте уже это basic и переходите на C/C++ (или хотя бы Java).

Присоединяюсь) Очень неудобно читать текст..
Последний раз редактировалось folk 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

Целочисленное уравнение.

Сообщение geh » 17 янв 2014, 07:48

Максимальное значение z=1000000
Почему при вычислении dx используется "z^3-y^3", а не "1+z^3-y^3"?
Ответ: числа велики. 1 не играет никакой роли при приближенном
вычислении dx. Ибо оно все равно округляется до ближайшего целого числа.
Си конечно хороший язык программирования.
Но что делать с программами, где идет разработка искусственного интеллекта?
Это все на Бейсике! Это тысячи строк кода! Это моя Любовь!! Все бросить? Нет!!
Последний раз редактировалось geh 27 ноя 2019, 21:37, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 3 гостей