• Поможете сделать код лучше, чем у меня сейчас, a³+b³=c³?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    2. Этот код не для Windows;


    Там нет ничего платформо-зависимого. Если установите какой-нибудь mingw на windows, то оно makefile съест.

    В крайнем случае, установите любой C компилятор и введите команду вручную (последняя строчка тут)

    3. Если я в формуле a³+b³+c³=3 поменяю 3, на 0 будет ли программа правильно считать?

    Там в описании написано "cubefree k = +/- 3 mod 9 at most 1000", т.е. для k=0 не сработает.

    Поможете сделать код лучше?


    Выкиньте цикл по c. Вам не надо его перебирать, а вам надо решить уравнение c³=3-a³+b³.
    Для чего просто вычислите значение справа, потом возьмите кубический корень: int((3-a**3-b**3)**(1/3.0)). Не забудьте только проверить, что это значение c подходит, ибо тут корень округляется до целого. И не факт, что уравнение выполняется.
    Ответ написан
  • Как доказать, что a³+b³+c³=3?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Тут нет никаких математических методов найти все, или даже некоторые, решения. Математикой можно только перебор сократить.

    Это диафантово уравнение. При чем очень сложное: от трех переменных да еще и кубическое. Только для каких-то самых тривиальных случаев, вроде линейного уравнения, еще есть какие-то алгоритмы прямо получения решения (вроде расширенного алгоритма Эвклида). Для некоторых классов существуют методы порождения всех решений, если вам известно одно, но это одно часто надо еще найти - перебором. Но вот такие уравнения человечество еще решать не научилось.
    Ответ написан
  • Как доказать, что a³+b³+c³=3?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Похоже на диофантово уравнение. Не по математическому виду а скорее по подходу.
    Можно попробовать генетические алгоритмы. Хромосома (a,b,c).
    Ответ написан
  • Как доказать, что a³+b³+c³=3?

    @0x0f80
    Точного метода без перебора нет
    Ответ написан
    Комментировать
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище Корень. Вижу прошло пару месяцев а ты все тот-же Ферматист :)

    Я не знаком с пакетом Вольфрам. Но его делал очень умный человек. И я думаю что символьные
    вычисления там тоже поддерживаются.

    Но такие вычисления обычно подходят под расчеты с дробями. Например 1/2 + 1/3 = 1
    в символьных вычислениях поддерживаются. Это позволяет точнее посчитать
    пределы например.

    То что ты посчитал - это трансцедентное число.

    z = exp((1/3)*log(664572³ + 257118³))

    Из-за логарифма внутри.
    Везде где есть синусы, логарифмы (ряды Тейлора) мы можем говорить об этом
    свойстве чисел. Грубо говоря это число которое мы не можем в общем случае
    получить путем конечного числа операций над рациональными числами.

    И обычно в физике и в инженерном деле логарифмы и экспоненты считают приближенно.
    Используя float, double и extended (80bit). И этого хватает чтоб запускать ракеты на Марс.

    Их никто не считает точно, просто по той причине что их нельзя представить точно.
    У нас не хватит памяти всех датацентров чтоб точно такое считать.

    Иногда в очень-очень редких случаях математический пакет может упростить формулу
    аналитически (exp(log(x)) и получить более простые цифры без свойства трансцедентности.
    Почитай документацию по MathCad, MatLab, может там такое тоже есть.

    Я также упрекаю тебя в невнимательности. Я тебе в прошлый раз делал акцент на типах
    данных. И ты это благополучно проигнорировал. И снова ты полез в теорию чисел и Ферма
    даже не понимая с каким типом данных работает Вольфрам. Разберись сначала с этим вопросом.
    Иначе будешь всегда выглядеть почемучкой.
    Ответ написан
    6 комментариев
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Этот корень - иррациональное число. Бесконечное. Его точно на компьютере не подсчитать никак. Это будет какое-то большое число с бесконечным не повторяющимся набором цифр после точки.

    Точнее всех будет считать python если использовать библиотеку Decimal:
    from decimal import *
    getcontext().prec = 400
    a = Decimal('112312312312312311231231231231231123123123123123112312312312312311231231231231231123123123123123');
    print(pow(a,Decimal(1/3.0)))


    Можете хоть тысячи знаков считать, ограничения - в основном скорость работы и требования по памяти.
    Ответ написан
    5 комментариев
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Вы ищите a и b из одного и того же интервала. Но, как вы сами видите, могут быть решения, где разные переменные из разных интервалов. Поэтому один интервал на 1-2000 находит больше решений, чем два интервала 1-1000 и 1001-2000.

    Я думаю, вам стоит вообще внешний цикл убрать и всегда работать только с одним интервалом.

    Можно чуть чуть ускорить решение, если не увеличивать c в цикле, а вычислить его по формуле (an+bn-1)^(1/n). Какая-нибудь функция pow вам поможет. Она даст неуелое число, его надо округлить и проверить, что равенство ввполняется.

    Еще, ваша проблема, что c у вас может быть не из заданного интервала. Надо или жто проверять, или перебирать b и c, считать a, вместо перебора a, b и вычисления c. Потому что a < c. И раз c перебирается в интервале - то и a будет в нем.
    Ответ написан
    44 комментария
  • Как делить куб пополам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище Корень

    Я вместо ответа дам тебе несколько советов.

    Первое. Тема Ферма является толстым троллингом для всех кто знает математику. И эксперты qna мне кажется ощущают от тебя усталость. Ты достаточно много продуцируешь потока сознания и это не идет на пользу. Лучше напиши 1 вопрос в неделю но обдумай. Второе Есть разница между операцией деления "/" в Python и в языках C++/Scala. Результат разный. Можно получить 5/2 = 2.5 или можно получить целое 2. Это очень важно для тех кто читает код. И это кардинально меняет взгляд на твою формулу которую ты пишешь в самом начале. Поэтому всегда обозначай язык разработки. Это поможет читающим понять формулу. Иначе будут обиды и непонимания. И если ты тегируешь топик Математикой то не стоит писать всякие исходники с inserts. Это раздражает. Раздели свои проблемы на части. Так будет лучше. Третье. Если ты выступаешь медиатором между Microsoft Bing и прочими чатами то - обозначь это. Пускай это будет джентльменское соглашение. Я всегда пишу если мой ответ был получен с GPT. Тоесть я разделяю за что я лично отвечаю и за что всякие AI.
    Ответ написан
    5 комментариев
  • Какое решение уравнения x^3 + y^3 = z^3 в дробных числах?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Решений в рациональных и целых числах нет: Великая теорема ферма.

    А в иррациональных - берете вообще любые x, y и по ним считаете z. Все.
    Например, x=10, y=1, z= 1001^(1/3)
    Или x = 20^(1/3), y= 7^(1/3), z=3
    Их континуум этих решений (бесконечно много).
    Ответ написан
    24 комментария