Ответы пользователя по тегу Математика
  • Как вычислить члены геометрической прогрессии?

    @Mercury13
    Программист на «си с крестами» и не только
    Есть два варианта. 1) Какие попало целые члены; 2) Последовательные целые члены. На вопрос «какие попало члены» (без решения) ответил longclaps, отвечу на второй.
    589952 = a0 (2n−1).
    А теперь разбиваем наше число на множители: 589952 = 27 ∙ 11 ∙ 419.
    Двойки могут идти только в первый член a0. А с 419 и 11 — ни каждое из них, ни их произведение не похожи на 2n−1.
    Так что единственный ответ — единственный член, равный 589952.

    Вы точно переписали цифру 589952?

    Если члены последовательные, но не целые, возможно ∞ ответов — например, 10 членов, первый из которых — 589952/1023.
    Ответ написан
  • Как решить хитрую задачку про этажи?

    @Mercury13
    Программист на «си с крестами» и не только
    Пусть турнир назначен на этаже X.
    На этажах 1…X живут L’ людей, на этажах X+1…N — H′ людей.
    Вопрос 1. Стоит ли переносить турнир на этаж X+1?
    Тогда для L′ людей добавляется лишний этаж, для H′ — исчезает лишний этаж, и выигрыш будет H′−L′.
    Стоит, если H′ > L′. Не стоит, если H′ < L′. Безразлично, если H′ = L′.

    Вопрос 2. Возможно ли такое: вверх на 1 перенести не удаётся (будет хуже или безразлично), но этаж Y > X оптимальнее (строго)?
    Раз вверх на 1 перенести нельзя, то H’ <= L’.
    Если этаж Y − 1 безразличен с Y, перенесём турнир туда. Если Y − 2 тже безразличен, то туда, и т.д. Остановимся на этаже Z. Видно, что Z > X + 1: если мы в результате этих движений добрались до X+1, то он лучше X, противоречие.
    Раз Z — оптимальный этаж, то у этажа Z−1 > X есть свои L″ и H″, и поскольку с Z−1 на этаж вверх перенести всё же можно, то H″ > L″.
    С другой стороны, при повышении этажа увеличивается L и уменьшается H, и L″ >= L′ >= H‘ >= H″, то есть H″ <= L″. Противоречие.

    Следствие 3. Если турнир выгодно перенести на несколько этажей выше/ниже, то его выгодно перенести и на этаж выше/ниже.

    Задача 4. Пусть на этажах 1…X−1 живут L людей, на этаже X — M людей, на этажах X+1…N — H людей.
    Для простоты считаем, что сверху и снизу есть по фиктивному пустому этажу — то есть теоретически можно (на практически неоптимально) проводить турнир в подвале и на чердаке.
    Задачу с переносом турнира вверх мы уже решали, и условие того, что турнир нельзя (или безразлично) перенести на этаж вверх: H <= L + M.
    Условие того, что турнир можно (или безразлично) перенести с этажа X−1: H + M >= L.
    Поскольку H + M + L = N (кол-во людей), то эти условия можно записать в виде: L + M >= N/2, L <= N/2
    (всё, получили чеканное условие, и ключи от чердака и подвала можно отдать техслужбам гостиницы.)

    Решение: Идём по этажам, считаем людей. Где накопится N/2, там проводим турнир.

    // считаем полное кол-во
    N = 0
    для i = [0..nFloors)
      N += a[i]
    // ищем, где половинка N
    sum = 0;
    для i = [0..nFloors)
      sum += a[i]
      если sum * 2 >= N
        вывести: i
        СТОП

    Расширенное решение: Если накопилось ровно N/2, безразличны данный этаж, все нулевые над ним, и ещё один ненулевой. (Можно без кода?)
    Ответ написан
    Комментировать
  • Почему выражение делится на 6?

    @Mercury13
    Программист на «си с крестами» и не только
    Разложим на множители, получается mn(m−n)(m+n)(m²+n²). А теперь думаем.

    Делимость на 2. Или m делится, или n, или m+n.
    Делимость на 3. Хоть у одного остаток 0 — делимость налицо. У обоих 1 или 2 — делится m−n. У одного 1, у другого 2 — делится m+n.

    Значит, делится на НОК(2,3) = 6.
    Ответ написан
    2 комментария
  • Как вывести уравнение прямой в R3 пространстве через точку и направляющий вектор через определитель?

    @Mercury13
    Программист на «си с крестами» и не только
    Через векторы: M = M0 + td, t — параметр.
    (мы различаем точку M0 и вектор td, но точка + вектор = точка)
    По координатам: x = x0 + pt, и т.д.
    Выпишем, чему равняется t, и получаем наше уравнение.
    Ответ написан
    Комментировать
  • Как применяется закон Бенфорда для второй цифры?

    @Mercury13
    Программист на «си с крестами» и не только
    Распределение второй цифры неравномерное, но малозаметное на практике. Например, для нуля будет.
    p0 = (lg 11 − lg 10) + (lg 21 − lg 20) + … + (lg 91 − lg 90)
    Ответ написан
    Комментировать
  • Существует ли одноричная система счисления?

    @Mercury13
    Программист на «си с крестами» и не только
    Двоичная система счисления — это т.н. позиционная система счисления с постоянным основанием.

    Существуют и другие, как-то унарная, фибоначчиева, римские цифры…
    Ответ написан
    Комментировать
  • Как вычислить корень n-ой степени?

    @Mercury13
    Программист на «си с крестами» и не только
    Итак, надо решить такую задачу.
    xb = a, a > 0, или xb — a = 0

    Метод Ньютона говорит:
    xn+1 = xn − f(x) / f′(x)
    xn+1 = xn − (xnb — a) / (b·xnb−1) = (xn − a/(xnb−1))/b
    Поскольку функция возрастает и выпукла вниз, x1 лучше брать завышенный. Идеал — хаки с дробными числами (например, заполучить порядок и взять начальным приближением 2[ord/b] для отрицательного порядка и 2[ord/b] + 1 для неотрицательного.

    [x] — усечение дробного числа, при целом b [ord/b] = ord div b. Чтобы заполучить порядок, похимичить с ним и снова собрать в машинное дробное, можно воспользоваться функциями Delphi Frexp и Ldexp, они очень быстры.

    Заканчивать когда |xn+1 − xn| меньше e. Поскольку у метода сходимость квадратичная, почти гарантированно получим нужную нам точность.

    Поскольку для проверки точности нам нужны два приближения, n и n+1, их и храним.

    И последнее. Поверь мне, прекрасная леди, никто не будет решать тебе учебную задачу до конца.
    Ответ написан
    Комментировать
  • Какие есть книги про связь высшей математики и программирования?

    @Mercury13
    Программист на «си с крестами» и не только
    Дональд Кнут. «Конкретная математика»
    Теория графов, алгебра логики — любая книга
    Ответ написан
  • Почему косинус иногда изменяется на синус?

    @Mercury13
    Программист на «си с крестами» и не только
    Что такое синус и косинус? У нас есть отрезок (0, 0) — (1, 0). Повернём его вокруг первого конца, и координаты второго конца — это cos и sin.

    А теперь нарисуем на плоскости вторую систему координат: у неё ось x' смотрит вниз, а ось y' вправо. Эти две системы координат совпадают началом координат, масштабом (т.е единица в одной будет единицей в другой) и ориентацией (ось y против часовой стрелки от оси x).

    У нас есть отрезок (0,0) — (x, y) длины 1. В системе (x, y) это единичный, повёрнутый на угол α, в системе (x', y') — на угол β=90°+α.

    Поскольку x = y' (мы так нарисовали вторую сетку), то cos α = x = y' = sin β = sin(90° + α).

    P.S. Я попробовал доказать всё это относительно строго, не ссылаясь ни на графики, ни на более сложные утверждения вроде синуса суммы.
    Ответ написан
    Комментировать
  • Можете объяснить логику Python умножения чисел?

    @Mercury13
    Программист на «си с крестами» и не только
    Так устроены float и double: они двоичные, и в них точно представляются только числа вида k·2−n. 0,4 не таково, у него в знаменателе пятёрка.
    Для большинства инженерных расчётов и игр это нормально. А вот если надо так, как подсчитал бы бухгалтер на бумаге (например, пишете калькулятор) — работайте с десятичным длинным.

    UPD. Наконец нашёл ту статью, какую хотел.
    www.delphikingdom.com/asp/viewitem.asp?catalogid=1217
    www.delphikingdom.com/asp/viewitem.asp?catalogid=374
    Ответ написан
    Комментировать
  • Изучение линейной алгебры поможет в школьном курсе алгебры?

    @Mercury13
    Программист на «си с крестами» и не только
    Скорее всего, нет, однако стоит посмотреть, какое отношение эта самая линейная алгебра имеет к векторам, прямым и плоскостям в 2D и 3D. Это будет важно в вашей дальнейшей прогерской жизни.
    Ответ написан
    Комментировать
  • Доказывают ли изначально аксиомы, чтобы потом принимать их на веру?

    @Mercury13
    Программист на «си с крестами» и не только
    Аксиомы доказать невозможно. Но можно сделать одну классную вещь. А именно — построить модель теории. Другими словами: найти в соседней теории, которой вы «доверяете» (например, теории действительных чисел или евклидовой геометрии) такие «точки» и «прямые», чтобы они отвечали всем аксиомам. И эти аксиомы нужно доказывать, чтобы показать, что, например, R² с «точками» (x,y) и «прямыми» ax+by+c=0 — действительно модель евклидовой геометрии.

    Да, и математики часто, но некорректно говорят: «Векторное пространство — это совокупность из основного множества X, числового поля K, операций x+y и x·k такая, что отвечает аксиомам…» Вообще-то, требованиям, а не аксиомам, и эти «аксиомы» нужно доказывать, чтобы доказать, что, например, R² — векторное пространство над полем R.

    Да, а что же Евклид? А Евклид, вероятно, сам не догадывался, какую классную штуку он придумал. К тому же исчерпывающую аксиоматику евклидовой геометрии придумали ≈1900. Страшна, как чёрт, шесть базовых понятий… Но это зачастую и не требуется, чтобы решать задачи — надо как-то определить объект изучения и начать доказывать теорему за теоремой. Большинство из нас, даже выпускники вуза, не знают ни теорию действительного числа, ни аксиоматику Пеано для арифметики, ни аксиоматику для теории множеств…
    Ответ написан
    Комментировать
  • Как сделать численно равные выборки из нормального и любого иного распределения?

    @Mercury13
    Программист на «си с крестами» и не только
    UPD. Раз у нас нормальное распределение — надо построить нормальное распределение, оцененное по методу наивысшего правдоподобия.
    А затем вычислить F−1(0,05), F−1(0,1), …, F−1(0,95).
    Ответ написан
    Комментировать
  • Как найти наиболее вероятные пути прохождения ориентированного графа?

    @Mercury13
    Программист на «си с крестами» и не только
    Замкнуть выход на вход. Каждой вершине придумать вероятности (да хоть 1/n).
    Получаем цепь Маркова, остаётся найти её эргодическое распределение.
    Надо только придумать разглючку на случай, если ЦМ будет периодической — но, возможно, стандартные методы регуляризации СЛАУ с этим справятся.
    Ответ написан
    Комментировать
  • Могли бы объяснить что такое квартиль и медианна?

    @Mercury13
    Программист на «си с крестами» и не только
    Это значит:
    Нижние 25% работ — в диапазоне 50…130.
    Следующие 25% — в диапазоне 130…150
    Ещё 25% — в диапазоне 150…170
    И верхние 25% работ — в диапазоне 170…500

    То, что среднее выше медианы, обычно свидетельствует о том, что сверху у распределения «длинный хвост». Что и видно — целых 25% работ попадают в диапазон 170…500.
    Ответ написан
    2 комментария
  • Какие есть проблемы при работе генетических алгоритмов?

    @Mercury13
    Программист на «си с крестами» и не только
    3 = Сходимость к произвольной точке.
    4. Плохая сходимость.
    5. Не получается придумать качественную процедуру кроссинговера (её задача — поддерживать разнообразие популяции).
    Ответ написан
    Комментировать
  • Как посчитать вероятность выпадения K раз числа на отрезке N?

    @Mercury13
    Программист на «си с крестами» и не только
    C104·(5−1)10−4
    Расставляем единички (C104) способов, затем ставим всё остальное ((5−1)10−4).

    Чтобы подсчитать вероятность, надо ещё разделить на 510
    Ответ написан
    Комментировать
  • Даны 4 последовательные точки, как узнать что образуют они параллелограмм?

    @Mercury13
    Программист на «си с крестами» и не только
    Ну разумеется, по критерию параллелограмма: диагонали пересекаются и точкой пересечения делятся пополам! На языке математики:
    x1 + x3 ≈ x2 + x4
    y1 + y3 ≈ y2 + y4
    Почему «приблизительно равно». Float в принципе неточный, совпадение приходится проверять с точностью в какой-то эпсилон. Какой эпсилон — это уже зависит от задачи.
    Ответ написан
    Комментировать
  • Какие бывают абсолютные геометрии?

    @Mercury13
    Программист на «си с крестами» и не только
    Возможен и такой изврат: в одном месте будут свойства Лобачевского (через точку можно провести кучу прямых, параллельных данной), в другой — Евклида (ровно одну).

    Понятие «расстояние» — |AB| — там есть. Нет понятия «движение», и потому круг нарисовать можно, а нарисовать рядом равный ему, чтобы он имел аналогичные свойства, например, такую же площадь — нет.
    Ответ написан
  • Возможно ли решить данную задачу?

    @Mercury13
    Программист на «си с крестами» и не только
    1018 — это обычное 64-битное целое. long long в Си, long в Java, int64 в Delphi.

    Очевидно, задача переводная, спичка не только match (это слово у них очень многозначное), но и matchstick. Причём переводил то ли автомат, то ли редкий надмозг, пример неговорящий, и откровенно непонятно: то ли где находится число 11, то ли что на 11-й позиции. Будем решать 2-ю задачу: что на 11-й позиции.

    1. Определить количество разрядов (для этого хватает несложного цикла) и какой номер у данного числа среди N-значных чисел.
    2. А теперь находим, сколько есть N-значных чисел из M спичек. Рекуррентное соотношение:

    Q[N, M] = sum{k = 1..9} (Q[N−1, M−q(k)]), если N — найденная нами значность, но не 1-ца,
    Для остальных N формула та же, но суммирование 0…9.
    q(0) = 6, q(1) = 2, q(2) = 5, и т.д. — кол-во спичек в цифре.
    Граничное условие: Q[0, 0] = 1, Q[0, M] = 0 для остальных M.
    «Методом выкручивания рук» также примем, что для отрицательных M все Q равняются 0.

    Решаем рекуррентное соотношение динамическим программированием.
    3. А теперь самое интересное: воспользовавшись таблицей динамического программирования, находить цифру за цифрой, начиная со старшей.

    Например, у нас 15-е число. Первый шаг опустим, поверьте мне: это 4-е двузначное, начиная с нуля.
    2-й шаг.
    Q[1,2] = 1
    Q[1,3] = 1
    Q[1,4] = 1
    Q[1,5] = 3
    Q[1,6] = 3
    Q[1,7] = 1
    Q[2,4] = 1
    Q[2,5] = 2
    Q[2,6] не вычислял, главное — запредельно большое.

    Q[2,0]…Q[2,3] равняются нулю.
    Вычитаем Q[2,4] — получается 3.
    Вычитаем Q[2,5] — получается 1.
    Вычитаем Q[2,6] — не получается. Итого у нас шесть спичек, остаётся 1.

    3-й шаг, работаем по цифре.
    Ноль, Q[1, 6−6] = 0. Остаётся 1.
    Единица, Q[1, 6−2] = 1. Остаётся 0.
    Двойка, Q[1, 6−5] = 0. Остаётся 0.
    Тройка, Q[1, 6−5] = 0. Остаётся 0.
    Четвёрка, Q[1, 6−4] = 1. Не вычитается, остаётся 2 спички, 1 знак и номер 0. Записываем цифру 4.
    Ноль, Q[0, 2−5] = 0. Остаётся 0.
    Единица, Q[0, 2−2] = 1. Не вычитается, остаётся 0 спичек, 0 знаков и номер 0. Записываем цифру 1.

    Итого получили 41.
    Ответ написан
    3 комментария