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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это же несложно. Логарифмическая шкала, значит первое преобразование - взятие логарифма:
    x' = log10x
    Получили преобразование диапазона [1.14E-23, 2.428272E+35] в [-22.94309515, 35.38529733]. Теперь надо уложить полученный диапазон в [10, 60000] линейным преобразованием:
    x'' = (x' - (-22.94309515)) / (35.38529733 - (-22.94309515)) * (60000 - 10) + 10
    Сводя преобразования вместе получаем
    x'' = (log10x + 22.94309515) * 1028.487113 + 10
    Ответ написан
    1 комментарий
  • Есть формула расчёта рабочего времени?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для идеального случая - работы каждый день строго по 8 часов - решение простейшее.
    fullTime = workTime + [(workTime - 1) / 8] * 16
    Но для реальных расчётов это, естественно, не годится, хотя бы из-за выходных, праздников и переносов праздничных дней.
    Ответ написан
  • Как оптимизировать сумму ряда?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Аналитически.
    59fe144ebe173368222815.gif
    Я нашёл этому поистине чудесное доказательство, но поле ввода слишком узко для него. (C) Ферма.
    Решение
    Рассмотрим дроби - слагаемые данной суммы. Очевидно, что знаменатели могут меняться от 2 до 2k.
    Попробуем определить, какие числители будут в дробях со знаменателем n. Для этого нам надо разложить n на пары x и y всеми возможными способами, учитывая ограничения 1 ≤ x ≤ k, 1 ≤ y ≤ k и взять допустимые значения x.
    Если 2 ≤ n ≤ k, то допустимыми значениями x будут 1 ... n-1. Для k+1 ≤ n ≤ 2k допустимыми значениями x будут n-k ... k. Таким образом, мы можем записать сумму числителей для каждого знаменателя:
    59fef5831ed62261528289.png
    Теперь, с учётом полученной системы запишем, как будет выглядеть полная сумма всех дробей:
    59fef5c331774953483286.png
    Заметим, что если в первой сумме начать суммирование не с 2, а с 1, то сумма не изменится, поскольку добавленное слагаемое равняется нулю. Во второй сумме перенесём k из пределов суммирования в слагаемое. Получим две суммы с одинаковыми пределами, а значит их можно объединить в одну:
    59fef699cef72869621752.png
    Ответ написан
    2 комментария
  • Как написать код для определения суммарного объема вложенных друг в друга шаров?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const
      PI = 3.1415926;
    var
      D, V: real;
      k: integer;
    begin
    D := 10;
    V := 0;
    for k := 1 to 12 do begin
      V := V + PI * D * D * D / 6;
      D := D + 1;
    end
    V := V / 1000;
    Ответ написан
  • Изучение математики через программирование, глупое решение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Сначала аналитическое решение, затем уже написание программы, причём с учётом точности вычислений на компьютере. Попробуйте запрограммировать в лоб, например, следующую формулу:
    59dd2513d1baa803609526.gif
    Ответ написан
    2 комментария
  • Как оптимизировать алгоритм для выполнения 5 задачи с проекта Эйлера?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Задачу можно решить и без перебора.
    Для начала, берёте все числа от 2 до 20 и раскладываете на простые множители.
    Как-то так:
    2 = 21
    3 = 31
    4 = 22
    5 = 51
    6 = 21·31
    7 = 71
    8 = 23
    9 = 32
    10 = 21·51
    11 = 111
    12 = 22·31
    13 = 131
    14 = 21·71
    15 = 31·51
    16 = 24
    17 = 171
    18 = 21·32
    19 = 191
    20 = 22·51
    Затем берёте максимальные степени из всех разложений и перемножаете их:
    24·32·51·71·111·131·171·191 = 232792560
    Ответ написан
    Комментировать
  • Как расчитать контрольную сумму?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Код Хэмминга, исправляет одиночные ошибки, обнаруживает двойные.
    Ответ написан
    Комментировать
  • Задача линейного программирования. Как добавить ограничение в модель?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Решением системы C·X = B является вектор X = C-1·B.
    В вашем случае B = 0, значит при ΔC ≠ 0 получаем X = 0 (правило Крамера), а при ΔC = 0 система имеет бесконечное множество решений и надо сначала преобразовать её методом Гаусса, выделив зависимые переменные.
    Покажу на примере:
    2·x + 3·y - z = 0
    4·x + 6·y -2·z = 0
    3·x - y + 2·z = 0

    Определитель равен нулю. Приводим методом Гаусса.
    x + 3/2·y - 1/2·z = 0
    0 = 0
    - 11/2·y + 7/2·z = 0

    Упрощаем
    y = 7/11·z
    x = -5/11·z

    Преобразуем ваши условия
    x + y + z = -5/11·z + 7/11·z + z  = 13/11·z <= 1
    x + y + z = 13/11·z -> max

    Очевидно, что максимум будет при z = 11/13. При этом x = -5/13, y = 7/13.
    Ответ написан
    Комментировать
  • Как высчитать площадь по точкам (Map) в пространстве?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Просто одна диагональ (две точки) даёт бесконечное множество прямоугольников, самым большим по площади из которых будет квадрат со второй диагональю перпендикулярной имеющейся. Площадь будет равна половине квадрата диагонали или, через координаты точек:
    S = ((x2 - x1)2 + (y2 - y1)2) / 2

    Если добавить ограничение на то, что стороны прямоугольника должны быть параллельны осям координат, то получается один прямоугольник с площадью
    S = |x2 - x1| * |y2 - y1|
    Ответ написан
    2 комментария
  • Как здесь разобраться?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    УНИВЕРСУМ – философский термин, обозначающий всю объективную реальность во времени и пространстве.

    Булеан — множество всех подмножеств данного множества.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В определении матрицы сказано, что количество строк и столбцов - натуральные числа, то есть целые числа, большие нуля.
    Ответ написан
    Комментировать
  • Как решить |x+3| > 6 - |x + 1|?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Методом интервалов - первый интервал будет (-∞; -3], второй [-3; -1], третий [-1; ∞).
    Ответ написан
    Комментировать
  • Как найти положение точки относительно плоскости?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если "выше-ниже" - позиция по оси Y, то необходимо найти точку плоскости K', с координатами x и z, равными соответствующим координатам проверяемой точки K и сравнивать координаты K' и K
    Для вашего случая надо решать уравнение
    2*0+3*y+4*0+5 = 0, yK' = -1.25, yK' < yK, точка лежит выше плоскости.
    -2*0-3*y-4*0-5 = 0, yK' = -1.25, yK' < yK, точка лежит выше плоскости.
    Ответ написан
  • Как расчитать вес основания торшера?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для расчёта можно взять только одну ось, по второй торшер зеркально-симметричен и устойчив. За 0 примем центр основания.
    1. Основание - радиус Rосн, масса Mосн
    2. Вертикальная труба - расстояние от центра основания Xвт, масса Mвт
    3. Дуга, самая сложная часть, примем за сектор в 90°, радиус Rд, масса Mд
    4. Вынос - длина Lв, масса Mв
    5. Светильник - масса Mсвacbb3f86d8c64ba1ae8c2edd104d77be.png

    Для начала посчитаем расположение всех центров масс.
    Rцмд = Rд*sin(π/4)/(π/4) = 0.9*Rд
    Xцмд = Rд - Rцмд*cos(π/4) - Xвт
    Xцмв = Rд - Xвт + Lв / 2
    Xсв = Rд - Xвт + Lв

    Теперь возьмём формулу центра масс сложного объекта
    Xцм = SUM(Xi * Mi) / SUM(Mi)
    Наложим ограничение Xцм < Rосн
    (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / (Mосн + Mвт + Mд + Mв + Mсв) < Rосн
    (Mосн + Mвт + Mд + Mв + Mсв) > (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / Rосн
    Mосн > (-Xвт*Mвт + Xцмд*Mд + Xцмв*Mв + Xсв*Mсв) / Rосн - Mвт - Mд - Mв - Mсв
    Ответ написан
    1 комментарий
  • Как проверить, пересекаются ли треугольники?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Варианты: не пересекаются, касаются снаружи, пересекаются, один касается другого изнутри, один полностью вложен во второй.

    Пересекаются - какая-либо сторона одного треугольника пересекается с какой-нибудь стороной второго и стороны не параллельны, для каждой стороны первого треугольника проверяем каждую сторону второго.

    Один полностью внутри другого - все вершины треугольника A расположены по одну сторону от сторон второго треугольника B, обходимого по контуру, то есть от отрезков B1B2, B2B3, B3B1.

    Касание - вершина одного из треугольников лежит на стороне другого треугольника или сторона одного треугольника параллельна стороне второго и пересекается с ней.
    Ответ написан
    6 комментариев
  • Какую связь имеет эта формула с функциональным программированием?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Композиция функций f и g
    Ответ написан
    Комментировать
  • Сгенерировать M уникальных случайных чисел в диапазоне от 1..N. Быстрый алгоритм есть?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Создать массив X[1..N]
    Заполнить его X[i] = i
    Сделать много (например, N) перестановок случайных элементов X[rand(1..N)] <=> X[rand(1..N)]
    Взять M первых элементов
    Ответ написан
    Комментировать
  • Как округлить число только в большую сторону?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    21749 до скольки знаков должно округляться? Можно получить 21750, 21800, 22000, 30000, 100000, 1000000, ... Как программа должна определить где остановиться?
    Ответ написан
    1 комментарий
  • Точность рекуррентной формулы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы вывели формулу получения k+1 элемента из k-го, а в программе используете её для получения k-го элемента из k-1. Это разные формулы.
    Ответ написан
    Комментировать
  • Как найти дубликаты в массиве 64-битных чисел по (битовому) расстоянию Хэмминга?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Расстояние Хэмминга на MySQL посчитать несложно.
    BIT_COUNT(HEX(:value1) ^ HEX(:value2))
    Но надо определиться с понятием "группы таких чисел". Возьмём три двоичных числа (001, 011, 111) и определим расстояния между ними.
    d(001, 011) = 1
    d(001, 111) = 2
    d(011, 111) = 1
    Таким образом, первое и третье числа находятся на расстоянии 1 до второго, но между собой они находятся на расстоянии 2. Если границей расстояния выбрать 1, то как должны сформироваться группы?
    Ответ написан
    8 комментариев