Ответы пользователя по тегу Математика
  • Объясните мне на пальцах рекурсию Фибоначчи F(4, например). Это самый простой алгоритм, а я не могу понять. Что мне делать?

    hint000
    @hint000
    у админа три руки
    полностью теряюсь в отладчике
    В отладчике неудобство, если шагать по одной строке за раз, а этот код написан так, что в одной строке сразу два рекурсивных вызова. Для наглядности отладки можно вместо одной строки return Fib(n - 1) + Fib(n - 2); сделать три строки:
    int F1 = Fib(n - 1)
    int F2 = Fib(n - 2);
    return  F1 + F2;
    Ответ написан
    1 комментарий
  • Как составить уравнение, чтобы назначить цену для товара?

    hint000
    @hint000
    у админа три руки
    "Чтобы поймать рыбу, нужно думать как рыба" (с)
    Поэтому думайте как маркетплейс. Им не важно, сколько вы заработаете, им важно, сколько они заработают.
    x = цена продажи.
    Маркетплейс берёт себе x*10%+100 = x*0.1+100.
    Вам остаётся выручка (x минус то, что забрал маркетплейс), т.е. x-(x*0.1+100) = x*0.9-100.
    С другой стороны, вы уже посчитали, что вы хотите выручку 300*130% = 300*1.3 = 390
    (только непонятно, зачем вы для этого аж целое уравнение писали вместо одной операции умножения, ну да ладно, главное, что результат правильный).
    Итак, x*0.9-100=300*1.3
    x*0.9=300*1.3+100
    x=(300*1.3+100)/0.9=544.44
    Ответ написан
    Комментировать
  • Можно ли развить логику программиста?

    hint000
    @hint000
    у админа три руки
    Как решать задачи по программированию математическим путем, а не «в тупую»?
    задачи даже самые примитивные, не поддаются от слова совершенно

    Решать задачи учат в школе на уроках математики, начиная с первого класса и до окончания школы. Эти навыки нужны и для решения задач алгоритмическими методами.
    Вообще принцип простой. Чтобы написать программу, нужно представлять в голове алгоритм решения задачи. Чтобы представлять алгоритм, нужно две вещи:
    (1) уметь решать задачу такого типа без компьютера (речь не идёт о том, что вручную это долго или не долго; только о том, что вы в принципе знаете что делать, хотя бы даже интуитивно - именно этому учат в школе начиная с первого класса);
    (2) уметь формализовать в алгоритм своё умение решать задачу (это универсальное умение, практически не зависящее от типа задачи).
    Ответ написан
  • Как решать задачи по программированию математическим путем, а не "в тупую"?

    hint000
    @hint000
    у админа три руки
    Возможно, буду нескромен, но всё же приведу в качестве иллюстрации несколько своих ответов:

    Всё это несложные задачи, постановка которых доступна для понимания любому, но которые требуют немножко математического мышления.
    Безусловно, здесь есть много лучших примеров применения математики в программировании от других участников, просто свои мне было проще найти.
    Или тут только надо учить математику и все, но вроде знаю её но применять не особо умею
    Если база есть, то учиться применению - примерно так же, как ребёнок учится ходить, учится говорить. Т.е. наблюдать, как это делают другие и пробовать-пробовать-пробовать, пока не начнёт получаться. Каких-то волшебных рецептов нет, просто мозг постепенно привыкнет мыслить определённым образом.
    Ответ написан
    Комментировать
  • Как доказать равномощность множеств(задание из учебника по мат. анализу Зорича)?

    hint000
    @hint000
    у админа три руки
    Для доказательства по указанной теореме (википедия подсказывает) нужно построить две инъекции - туда и обратно.
    Инъекция из интервала в отрезок тривиальная, переводящая каждую точку интервала в такую же точку отрезка.
    Инъекция из отрезка в интервал - это инъекция из отрезка в любой отрезок, полностью содержащийся в интервале.

    Насчёт непосредственной биекции пока не придумал, ибо математику учил 25 лет назад и за это время мозги засохли.
    Ответ написан
    2 комментария
  • Какими соседями будут граничные клетки на замкнутой поверхности?

    hint000
    @hint000
    у админа три руки
    a03 слева
    a30 сверху
    a33, a13 и a31 по диагоналям
    Это если поверхность топологически эквивалентна сфере тору (см. комментарии). Но ведь можно и другим способом замкнуть, хотя это уже будет посложнее.

    для общности можно всегда от индексов брать остаток от деления, тогда:
    a((x-1)mod m,(y-1)mod n)  a(x mod m,(y-1)mod n)  a((x+1)mod m,(y-1)mod n)
    a((x-1)mod m, y   mod n)  a(x,y)                 a((x+1)mod m, y   mod n)
    a((x-1)mod m,(y+1)mod n)  a(x mod m,(y+1)mod n)  a((x+1)mod m,(y+1)mod n)
    Ответ написан
    4 комментария
  • Посчитать многоугольник почему не работает програма?

    hint000
    @hint000
    у админа три руки
    Например: [(10, 0), (0, 10), (-10, 0), (0, -10)]
    Учтите, что код, правильно работающий с целыми числами, будет давать сбои на вещественных числах из-за ошибок округления. Т.е. вы можете получать очень-очень маленькую длинну суммарного вектора (без округления был бы чистый ноль, но компьютер не работает с вещественными числами без округления), из-за этого условие vector_sum == zero_vector не выполнится.
    Ответ написан
    Комментировать
  • Как посчитать процент случаев, когда второе количество больше на 25%?

    hint000
    @hint000
    у админа три руки
    когда второе количество больше на 25%

    3/31=9.6
    3/7=42.8
    4/12=33.3

    (100%*31/3)-100%=933.3% (второе количество на 933.3% больше первого)
    (100%*7/3)-100%=133.3% (второе количество на 133.3% больше первого)
    (100%*12/4)-100%=200% (второе количество на 200% больше первого)

    во всех случаях превышение более, чем на 25%.
    Если имелось в виду "когда второе количество больше на 25% и больше", то здесь таких 100% случаев.
    Ответ написан
    Комментировать
  • Как конвертировать кватернион вращения из X-Plane в углы Эйлера?

    hint000
    @hint000
    у админа три руки
    Думаю, в любом случае один из трёх углов будет "ломаться" - если не крен и не тангаж, тогда рыскание (курс) будет "ломаться" при определённых сочетаниях. Можно в разном порядке вычислять углы, и, насколько я понимаю, "ломаться" будет тот угол, который вычисляется последним. (В формулы не углублялся, просто из общих соображений написал).
    По крайней мере, суть явления вот: https://ru.wikipedia.org/wiki/Складывание_рамок
    Для любого набора эйлеровых углов существует ровно одно положение связанного с твёрдым телом подвижного трёхгранника относительно неподвижного. Однако обратное утверждение не всегда справедливо. То есть существует такое положение твёрдого тела, при котором невозможно однозначно определить эйлеровы углы. При стандартном выборе эйлеровых углов в виде тангажа, рыскания и крена это особое положение возникает при угле тангажа, равном 90 градусов. Отсюда любое непрерывное вращение, имеющее излом в точке, когда угол тангажа равен 90 градусам, в пространстве углов Эйлера не может быть представлено непрерывной кривой;
    Ответ написан
    Комментировать
  • Как посчитать площадь лунной орбиты?

    hint000
    @hint000
    у админа три руки
    Как посчитать площадь лунной орбиты?
    Площадь равна нулю, потому что орбита - это кривая (причём не фрактальная кривая).
    Ok, "как посчитать площадь фигуры внутри лунной орбиты?"
    Апогей минус перигей = длина большей полуоси.
    Ох...
    апогей минус перигей = расстояние между фокусами = 2 * c
    a = длина большой полуоси = (апогей + перигей) / 2.
    Как найти меньшую полуось?
    https://ru.wikipedia.org/wiki/Эллипс
    a^2 = b^2 + c^2, отсюда выразите b через a и c.
    Ответ написан
    3 комментария
  • Как вычислить центр дуги окружности?

    hint000
    @hint000
    у админа три руки
    A - начало дуги, B - конец дуги, C - искомый центр.
    длина AC = длина BC = R (известно);
    длину AB вычисляем по теореме Пифагора;
    таким образом, имеем длины всех сторон треугольника ABC;
    по теореме синусов (и по сумме углов) вычисляем все углы треугольника;
    зная угол A, как угол пересечения прямых AB и AC, зная координаты точки A, а также зная уравнение прямой AB, легко построить уравнение прямой AC; остаётся отмерить вектор длиной R вдоль этой прямой, чтобы получить координаты точки C.

    Ещё один вариант - после вычисления всех углов перейти в полярную систему координат с центром A, сложить (с учётом знаков) угол A с коэффициентом наклона прямой AB и сразу получить полярные координаты точки C (ведь R известен); затем обратно перейти в декартову систему координат.
    Ответ написан
    Комментировать
  • Можно ли придумать новый математический инструмент для решения задачи трёх тел?

    hint000
    @hint000
    у админа три руки
    как раз "новые инструменты" и использует для решения нерешенных задач
    Здесь другое. Задача трёх тел не относится к нерешённым математическим проблемам. https://ru.wikipedia.org/wiki/Открытые_математичес...
    С этой задачей математикам всё ясно. Примерно как с задачей квадратуры круга. Типа: придумать новый математический инструмент для вычисления (наконец-то) всех цифр числа Пи. :) Вот и невозможность аналитического решения в общем случае задачи трёх тел - вполне доказанный математически факт. Никакие новые методы не отменяют старых доказательств. В этом принципиальное отличие математики от естественных наук.
    Брунс и Пуанкаре доказали, что систему дифференциальных уравнений для движения трёх тел невозможно свести к интегрируемой. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Но численные методы - это раздел математики. Решение численными методами (приближённое) - теоретически возможно. Практически - крайне затруднительно.
    К несчастью, как показал Д. Белорицкий, по крайней мере в случае Лагранжа для нужд вычислительной астрономии в сходящихся рядах Зундмана нужно брать как минимум 10^(8*10^6) членов. https://ru.wikipedia.org/wiki/Задача_трёх_тел
    Вот здесь - в численных методах - и остаётся возможность "придумать новый математический инструмент". Здесь никто не запрещает. Повторю: даже при открытии такого инструмента (а это стало бы важным открытием) он будет давать лишь приближённое решение.
    И ещё раз повторю: невозможность получения точного решения - доказана и неоспорима.
    Ответ написан
    6 комментариев
  • Как решить данную проблему в Maxima?

    hint000
    @hint000
    у админа три руки
    Попытка написать нечто подобное plot3d( x=0, y=0, [x, -10, 10], [y, -10, 10] ) оканчивается неудачей.
    Лучше бы без туманных формулировок. "оканчивается неудачей" - это сообщение об ошибке? или ничего не рисует? или рисует не то, что надо?

    https://maxima.sourceforge.io/ru/maxima-tarnavsky-...
    График параметрически заданной функции строится так: plot3d([выражение1, выражение2, выражение3], [переменная1, начало, конец], [переменная2, начало, конец]), где выражения отвечают, по порядку, x(u, v), y(u, v), z(u, v).


    это отрезок на оси z (не уверен, что он будет визуально заметен на графике):
    plot3d( x=0, y=0, [x, -10, 10], [y, -10, 10] )
    plot3d( 0, 0, u, [u, -10, 10], [v, 0, 0] )
    Наподобие y=0, 2x=3y
    это тоже отрезок на оси z. (Ну, математически - это прямая, но нам приходится рисовать ограниченные фигуры, поэтому отрезок вместо прямой.)

    если y=0, то z - любое число и x - любое число. По сути это плоскость oxz.
    plot3d( u, 0, v, [u, -10, 10], [v, -10, 10] )
    вот так должна получиться плоскость (квадратный кусок плоскости).

    spoiler
    Программу Maxima никогда не запускал, сайт просто сейчас нагуглил, так что рекомендация чисто теоретическая, основанная на документации. Как оно будет на практике - проверяйте.
    Ответ написан
    Комментировать
  • Где на практике применяются комплексные числа? В каких сферах IT они нужны?

    hint000
    @hint000
    у админа три руки
    Про комплексные числа уже много хорошего тут ответили. А вот про общую алгебру в программировании (моноиды, группы, полугруппы, кольца, полукольца) были две неплохие статьи на Хабре:
    "Абстрактная алгебра в действии" https://habr.com/ru/post/655059/
    "Властелин структур" https://habr.com/ru/post/656919/
    Да, это не о сферах применения, а о методах программирования.
    Ответ написан
    Комментировать
  • Как работает умножение вероятностей?

    hint000
    @hint000
    у админа три руки
    Возможно, элементарный пример поможет понять.
    Вы подбрасываете монету (обычную, дающую вероятности 0.5 и 0.5).
    И ваш друг подбрасывает другую монету (тоже обычную).
    Какова вероятность, что обе монеты упадут орлом вверх?
    Всего вариантов 4: (решка и решка), (решка и орёл), (орёл и решка), (орёл и орёл).
    Ответ написан
    Комментировать
  • Как получить остаток огромного числа?

    hint000
    @hint000
    у админа три руки
    Не нужно тут вообще никаких циклов, ответ сразу известен: (N*(N-1)/2)%N.
    Потому что остаток от деления суммы равен остатку от деления суммы остатков - вполне очевидно.
    А сумма остатков как раз и равна (N*(N-1)/2).
    Ответ написан
    Комментировать
  • Как рассчитать заработанную разницу?

    hint000
    @hint000
    у админа три руки
    Выручка 0.00069917 (BTC) * 60000 (USD/BTC) = 41.9502 (USD)
    Прибыль = выручка - расходы = 41.9502 (USD) - 13.75 (USD) = 28.2002 (USD)
    spoiler
    Если в начале мы купили BTC на $13.75 при условии, что он стоил 19.666 USD за 1 штуку.
    Вы одну и ту же точку используете и для отделения дробной части, и для отделения разрядов. Сами не путаетесь с этим? Не надо так.
    Ответ написан
  • Как рассчитать тариф на веб сайте?

    hint000
    @hint000
    у админа три руки
    Надо было поиском воспользоваться:
    https://qna.habr.com/q/988705
    https://qna.habr.com/q/1127844
    https://qna.habr.com/q/837055
    Ответ написан
    Комментировать
  • Актуальность исследования логики предикатов?

    hint000
    @hint000
    у админа три руки
    Прежде всего, актуальность для вас в том, что это довольно хорошее упражнение, которое научит программировать не самые тривиальные штуки.
    В реальной жизни, конечно, никакой новизны в этом нет. Существет софт, умеющий всё это и гораздо больше, на гораздо более продвинутом уровне, чем учащийся способен реализовать в выпускной работе.
    гугл и иные поисковики меня не спасли
    Ну вот это я нагуглил за несколько секунд, может быть вам это не попадалось, тут есть и про реальное применение.
    https://ru.wikipedia.org/wiki/Автоматическое_доказ...
    английская версия wiki описывает подробнее: https://en.wikipedia.org/wiki/Automated_theorem_proving
    и автоматический перевод с английской версии: https://translated.turbopages.org/proxy_u/en-ru.ru...

    https://habr.com/ru/post/519368/
    и дальше уже описывают терминологию и кучу формул
    Да, вот и они:
    https://qudata.com/ds/ru/theory/theorem_proving.html
    Кстати, с языком Prolog знакомы?
    https://habr.com/ru/post/124636/
    Ответ написан
    Комментировать