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

    «вычесть 6.51%» на первом шаге оставит (100% - 6.51%) = 93.49%; операция равносильна умножению на 0.9349

    «вычесть из получившегося 6%» оставит от него 94%, что равносильно умножению «получившегося» на 0.94

    Обе операции: x * 0.9349 * 0.94 = x * 0,878806 без погрешностей, точно.

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

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    f(1, 1) = 100
    f(1, 95) = 1.05
    f = ?

    Это две точки. Через них можно провести прямую и бесконечное число кривых.

    Уравнение прямой через две точки
    Для прямой через две заданные точки формула
    x - x1      y - y1
    -------  =  -------
    x2 - x1     y2 - y1

    Две точки шанс-выигрыш: (1, 100) и (95, 1.05) дают такое уравнение прямой:98.95 * x + 94 * y = 9498.95
    График
    5db0876180897208100664.png
    Ответ написан
  • Существует ли такая зависимость от 2-х аргументов?

    Конструктор:
    • 0 для отрицательных, 1 для положительных: (|x| + x) / 2
    • 1 для отрицательных, 0 для положительных: (|x| - x) / 2


    Итоговая формула это сумма двух частей, одна для z > 0, вторая для z < 0. Параметр z тут только переключает части и более никак не участвует в результате. Если идея понятна, сможете модицифировать как вам удобнее.
    f(x,z) = ((|z| + z) / 2) * |x|  + (|z| - z) / 2) * x
    Ответ написан
    Комментировать
  • Как рассчитать среднее значение на замкнутой шкале?

    Сложить векторы.

    Каждый азимут перевести в пару координат (x, y), полагая длину равной 1.
    Ответ написан
  • Как получить каноническое уравнение эллипса по N его точкам?

    Параметрическое уравнение эллипса:
    x = a * cos(t)
    y = b * sin(t)
    0 ≤ t ≤ 2π
    где a, b − полуоси эллипса, t − параметр.

    позволяет убрать из уравнения тригонометрию от t: (sin^2 + cos^2) = 1
    и выразить a как функцию b при известных (x, y).
    x2 = a2 * cos2(t)
    y2 = b2 * sin2(t)
    и изолировать sin,cos:
    x2 / a2 = cos2(t)
    y2 / b2 = sin2(t)
    осталось сложить и вывести a = f(b)

    x2 / a2 + y2 / b2 = 1

    Upd. не учёл третье неизвестное: угол поворота осей.
    В повернутой коорд. системе:
    x' = x cos ß + y sin ß
    y' = -x sin ß + y cos ß

    Заменить этими выражениями простые x2 и y2
    И как-то решить систему уравнений, подставив известные x, y точек.
    Ответ написан
  • Как написать формулу скидки в зависимости от количества товара?

    Первый вариант: скидка растёт линейно от 0% до максимальной скидки, скажем 50%, которая наступает, если взять 70 единиц товара, и дальше не растёт. Гуглите уравнение прямой, проходящей через две точки.
    график
    5d3083611188d540332498.png


    Второй вариант: использовать сигмоиду (S-образный график) y = 1 / (e^x + 1)
    график

    y = 50 / (ℯ^(5 - x / 8) + 1)
    5d30899121998751229032.png
    Ответ написан
    Комментировать
  • Как умножить переменную на 100% в php?

    Умножить на 100%, видимо, от упомятого аргумента $ipsa3 так:

    $result = $ipsa3 * ((100 / 100) * $ipsa3);
    // или просто
    $result = $ipsa3 * $ipsa3;

    С переменной процентов
    $percent = 100; // сколько процентов
    $result = $ipsa3 * (($percent / 100) * $ipsa3);

    Про проценты

    Проценты это доля от чего-то. Число 1/100 (сотых долей чего-то). Целое что-то это всегда 100% этого чего-то.
    50% это 50/100 или половина чего-то, что-то * 0.5
    Задача «умножить на 100%» хоть и звучит несколько странно, но выполнима, если понять, на 100% от чего просят умножить. Т.е. на целое что? Тут предполагаю, что на целую эту же переменную $ipsa3
    Ответ написан
    2 комментария
  • Какую сферу математики нужно освоить, что бы понимать глубокое обучение на глубоком уровне?

    Очень рекомендую Стэнфордский вводный курс Machine Learning на Coursera от Andrew Ng – классика! Там с самого начала, подробно. На англ.
    Как почувствуете что он упоминает что-то не вполне понятное, гуглите тему и освежите знания. Матрицы, дифференцирование.
    Ответ написан
    Комментировать
  • Как найти исходное число?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    только нейронными сетями надо решать!

    X = 0.7 * Y Что здесь сложного? Найдо найти все пары (X, Y), где оба целые ?

    То ли лыжи не едут..
    function search_start_value($price, $sale) {
      return $price * 100 / (100 - $sale);
    }
    echo search_statr_value(1499, 30); // 2141,4285714286
    Ответ написан
    3 комментария
  • Как разбить отрезок на неравные доли?

    Если проверять простоту числа будете последовательным перебором до sqrt(n), то «сложность» можно считать пропорциональной квадратному корню из N. И нужно найти участки с одинаковой площадью под повёрнутой на 90° параболой над каждым из участков.
    5d03a1fbcd84e308697188.png
    Интегралы, производные – вспоминайте )

    Поскольку задача дискретная, только целые числа рассматриваются, решение всегда будет не точным – как-то будут отличаться «нагрузки» соседних отрезков. И возможны крайние случаи без решения. Например, когда отрезок от 5 до 6 нужно разбить на 1000 частей )

    При проверке числа перебирать достаточно только нечетные (в начале проверив чётность N) и не превышать квадратный корень N.

    Интеграл от квадратного корня это 2/3 * sqrt(x^3)
    Считаете площадь под графиком от Min до Max.
    Бьете эту площадь на N равных кусков. И отсчитываете соответствующие такому делению значения x.
    Ответ написан
    Комментировать
  • Какой может быть алгоритм заполнения матрицы?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    У вас же простой тетрис! ) Только вверх-ногами.

    Берёте случайную фигуру и пытаетесь её поставить так, чтобы она заняла клетки в самом верхнем ряду-с-дырками. Если это невозможно, случайно выбираете ещё раз из фигур шириной 1 (1x1, 1x2).

    Всё.
    Ответ написан
  • Существуют ли сайты, где возможно решать задачи по математике и получать деньги?

    Чтобы проверять правильность решения, это решение должно быть заранее известно. Так что вряд ли кто-то будет платить за известные решения.

    Есть конкурсы по машинному обучению. Там предоставляются не все имеющиеся данные, а большая часть, напр. 95%. Участники конкурса тренируют модели, которые затем проверяются на «секретных» оставшихся данных. Выигрывает та, что лучше других показала себя на закрытых данных. Но это не чисто математика, хотя и очень близко.

    Ещё можно работать репетитором и кого-нибудь натаскивать по математике (дистанционно).

    Впрочем, есть же конкурсы с призами. Вот вопрос 2014-го года.
    Ответ написан
    Комментировать
  • Выбрать числа из множеств, чтобы они не пересекались?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    1. Выбираете 1-е число из полного диапазона.
    2. Выкидываете множество выпавшего числа.
    3. Выбираете 2-е число из оставшегося диапазона.


    Например:
    1. случайное из [0, 2346] оказалось 105 из диапазона "B"
    2. выкидываем диапазон B, остаётся [0, 1902], т.к. длина "B" 544-101+1 = 444, 2346 - 444 = 1902
    3. случайное из [0,1902] оказалось, например, 404. Для чисел выше 100 добавляем 444 и получаем 848 из диапазона "C" по старому стилю )
    Ответ написан
    Комментировать
  • Как генерировать числа с линейно заданной вероятностью?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Для начала простой случай, где вероятность линейна на всём диапазоне, один сегмент.
    Генератор случайных чисел даёт дробное от 0 до 1 с постоянной вероятностью.

    Теперь вспомните график параболы y = x^2 Там на шаге x от 0 до 1, y растет от 0 до 1, на шаге от 3 до 4 y растёт уже от 9 до 16, на 7. Взяв равномерно-случайную величину от 0 до 16, квадратный корень из неё неравномерно попадёт на диапазон от 0 до 4. Вероятнее на диапазон 3-4, чем на 0-1. И вероятность попадания в точку x будет прямо пропорциональна x.

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

    Число перестановок N элементов = N! (N-факториал)
    Ответ написан
    Комментировать
  • Сгенерировать M уникальных случайных чисел в диапазоне от 1..N. Быстрый алгоритм есть?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Нужна функция биективной (1:1) проекции упорядоченных чисел от 1 до N на такой же диапазон.

    Самый простой пример, чтобы понятно представить идею, это зеркалирование порядка битов в числе:
    0 000 -> 000 0
    1 001 -> 100 4
    2 010 -> 010 2
    3 011 -> 110 6
    4 100 -> 001 1
    5 101 -> 101 5
    6 110 -> 011 3
    7 111 -> 111 7

    Теперь, чтобы получить очередное случайное, просто берите подряд следующее.

    В варианте с битовыми операциями диапазон должен бысть степенью двойки, если у вас он иной, нужна другая функция. Лишь бы она однозначно ставила в соответсвие любому целому из исходного диапазона, единственное ответное из другого, и наоборот.

    Так не придётся хранить, перемешивать, генерировать случайные. Для "псевдослучайности" можно варьировать функцию. Например, не зеркалить порядок битов, а перемешивать биты как-то иначе. Каждый вариант перемешки битов создаёт новый «перемешанный массив» всех возможных значений.

    Главное, это быстро вычисляется и требует минимальных ресурсов.
    Ответ написан
    Комментировать
  • Как определить координаты ячейки, зная ее номер?

    Номер строки – целая часть от деления номера ячейки на число элементов в строке.
    Номер столбца – остаток от деления номера на то же число.

    Math.ceil( 18 / 5 ) === 3; // строка с индексом 3, считая от 0
    18 % 5 === 3; // колонка с индексом 3, считая, опять же, от 0
    Ответ написан
    1 комментарий
  • Алгоритм поиска пустых прямоугольников?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Вроде бы, всё просто. Никакой NP-полноты.
    1. Разбить, как вы и описали, по гайдам на мелкие. Это максимальное число полигонов.
    2. Взять любой, и начать присоединять к нему смежные, насколько возможно.
    3. Взять следующий пустой не затронутый.
    4. Процесс останавливается, когда больше ни к одному 4-угольнику нельзя присоединить еще один.

    Поверхностно кажется, что так получится наименьшее возможное число. Хотя не гарантируется максимизация площадей. Хотя, пожалуй, такой подход может не найти оптимальный вариант, когда границы нескольких исходных блоков легли точно на одной линии. Тогда выиграет вариант, захватывающий обе пустоты. Представьте силуэт буквы «Т». Его можно замостить всего двумя прямоугольниками. Но алгоритм может прозевать такую возможность и предложить 3 блока.

    Представьте себе Г-образный набор блоков. Как ни крути, там не менее 2 в итоге получится. Заметьте, что в обоих вариантах у вас получилось по 9 прямоугольников.

    П.2 подробнее. Тут возможны разные стратегии. В частности:
    • Можно от блока «пойти» в одну сторону, присоединяя соседей, пока не упрётся в непустую область. Затем попытаться расшириться во вторую сторону всеим набранными блоками, до упора. Затем в третью и четвертую.
    • Можно идти спиралью. 1 шаг наверх, 1 шаг вправо, 1 шаг вниз, 1 шаг влево и т.д. пока подряд 4 шага ни один не даст прироста.
    Ответ написан
  • Как применяется импликация в программировании?

    wiki смотрели?

    В языках программирования импликация используется, как правило, неявно. Например, конструкция, предполагающая истинность условия B в данном участке программы:

    if ( выражение A ) {
        if ( выражение B ) {
           сделать_что-то_полезное
        }
           else {
           <font color=Red>сбой</font>
        };
     }

    будет успешно выполняться тогда и только тогда, когда верна импликация A→B. В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

    if ( выражение A ) and ( выражение B ) {
        сделать_что-то_полезное
     }


    При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

    //выражение A - ложно
     if ( выражение A ) {
        //Дальше проверка не идет
        ... if ( выражение B ) {
           сделать_что-то_полезное
        } ...
     }


    В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.
    Ответ написан
    8 комментариев
  • Как рассчитать полет снаряда в двумерном пространстве под наклоном?

    Две подзадачи:
    1. траектория полёта
    2. проекция на матрицу камеры
     

    1. Траектория
    • Вертикальная составляющая скорости снаряда линейно падает. Снаряд вернется на плоскую Землю, когда верхний зуб скорость станет равна начальной со знаком минус:
      график скорости и траектория
      5bbbaf41abc02901256019.png

    • Горизонтальная составляющая скорости снаряда остаётся неизменной, считаем, что пальба в вакууме.

    Разложили начальный вектор пальбы на верт. и гор. составляющие и получаете положение снаряда в любой момент времени в виде координат (x, y, z).

    2. Проекция
    Теперь надо любую точку в этом вашем мире спроецировать на экран, который под 45° к горизонтали. Не считаем, что объекты становятся меньше с удалением, что параллельные прямые сходятся в одной точке и т.п. Просто бросаем любую точку на экран, чтобы упала под прямым углом к плоскости экрана.

    Центр экрана будем считать, имеет координаты (0, 0) и смотрит точно на (0, 0, 0) трехмерного мирка. У экрана ось X вправо, ось Y вверх. В мирке ось x влево, ось y вверх, ось z вдаль.

    Смещение в мирке по x точно так же добавит X'у экранному.
    Смещение в 3D по y добавит экранном Y чуть меньше из-за угла в 45°. Т.е. y домножим на корень-из-2 пополам.
    То же со смещением по z.

    X = x;
    Y = (y + z) * 0.7071;


    Предлагаю вам самостоятельно объединить эти два откровения в работающий код.
    Ответ написан
    1 комментарий