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

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Не очень понятно задание, что там за матрицы даны, но в общем случае делается так: найдите матрицу перехода из старых координат в новые. Это будет S^(-1). Чтобы получить преобразование в новом базисе, надо взять координаты, перейти в старый базис, применить перобразование (А) и перейти назад в новый базис. Т.е. ответ - произведение трех матриц: S*A*S^(-1)
    Ответ написан
    Комментировать
  • Как вычислить сумму бесконечного ряда, используя смешанный способ и общую формулу для вычисления члена ряда. Как найти рекуррентную формулу?

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

    Пусть f(x) - ваш ряд. Тогда f'(x) = sum (-1)^n x^(2n-2) / (2n+1)

    Чтобы совсем избавиться от знаменателя надо бы, чтобы степень была 2n+1. Можно этого добиться, домножив все на x^3. Потом можно опять взять производную.

    (x^3 f'(x))' = sum (-1)^n x^2n = sum (-x^2)^n = 1/(1+x^2)

    Теперь назад проинтегрировав это можно получить:
    x^3 f'(x) = arctg(x)+C

    При x=0 слева 0 - значит C=0.

    f'(x) = arctg(x) / x^3

    Отсюда можно найти f'(x): Зайдите на wolframalpha и введите integrate arctg(x)/x^3 dx (не могу дать прямую ссылку с запросом на wolfram, потому что мат-фильтр почему-то срабатывает на ссылку и не дает отправить ответ).

    Чтобы найти константу, придется подставить, например, x=1 и найти сумму ряда a_n = (-1)^n/(4N^2-1). Это какой-то известный сходящийся рад, похоже. Опять, посмотрите на wolframalpha, введите там sum (-1)^n/(4*n^2-1), n=0 to infinity. В итоге получится, что там константа тоже 0.

    Вот и получится, что f(x) =- (x^2 * arctan(x) + arctan(x) + x) / (2x^2)
    Ответ написан
    Комментировать
  • Как найти неизвестные параметры функции, зная ее значения?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Поскльку у вас уже жестко задан вид функции, то это задача на минимизацию функции ошибки (от n и k). Обычно мнимизируют сумму квадратов ошибок по всем примерам.

    Аналитически, как в методе наименьших квадратов, приравнять производные по n и k к 0 похоже не очень получается. Придется использовать какой-то численный метод минимизации функции. Например, градиентный спуск или метод ньютона. Если похоже, что функция имеет множество локальных минимумов, то будет работать что-то более хитрое, как например, метод отжига.
    Ответ написан
    Комментировать
  • Как разложить поворот вокруг произвольной оси на повороты вокруг ортов СК объекта?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    180-градусов вдоль оси вдоль зеленой детальки (вправо), а потом 90 градусов вдоль оси перендикулярной деталькам (ось к нам). Ну или в обратном порядке - сначала 90 градусов вдоль перпендикулярной оси, потом 180 вдоль продольной оси (вверх).
    Ответ написан
  • Как решить задачу по математике с помощью python?

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

    Сначала решите уравнение, при какой величине вклада X доход от бумаги и от банковского вклада будет одинаков?

    1.1X+2000 = 1.12X

    До этой суммы выгоднее брать бумагу - после - вклад.
    Далее надо 4 раза взять одно из двух, сравнивая текущую сумму с пороговым значением выше.

    От питона вам надо уметь выполнять действие 4 раза:
    for i in range(0, 4):

    Сравнивать 2 значения и делать в зависимости от этого разные действия.
    if a < b:
      foo
    else:
      bar


    Ну, вряд ли вы не знаете, еще надо уметь присваивать переменные и выполнять арифметику - умножение и сложение.
    Ответ написан
    Комментировать
  • Как распределить документы среди людей по ключевым словам?

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

    Если документы можно распределять ненормированно, то просто давайте каждый документ ближайшему человеку.

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

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

    Итак, дано только A и k, так?

    Чтобы как-то угол связать со сторонами надо воспользоваться теоремой косинусов:

    c^2 = a^2+b^2-2*a*b*cosA.
    подставив суда b=ck, получим
    с^2 = a^2+k^2c^2-2*k*a*c*cosA

    Это квадратное уравнение, связывающее C и A. Можно решить его относительно a (c - параметр) и вы получите а, выраженное через с.

    Ну и в конце надо проверить, что a+b > c, a+c > b, b+c > a, подставив туда найденные формулы для b и a через c. В этих неравенствах будут известные cosA, sinA, k и неизвестная с. Поскольку тругольник по углу и соотношению сторон можно масшабировать, то неравнество должно выполнятся для всех c. Но на самом деле в этих неравенствах все c можно будет тупо сократить. Какие-то из них можно сразу же выкинуть, если рассмотреть 2 случая k>1 и k<=1. Ну а как их дальше решать - думайте сами.
    Ответ написан
    3 комментария
  • Как раскидать элементы максимально рандомно согласно условию?

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

    Если возможны перекосы, то есть простой алгоритм.
    Сначала за один проход подсчитайте частичные суммы s1=y1, s2=y1+y2, s3=y1+y2+y3...

    Потом идем с конца. В последнюю стопку можно положить от max(0, z-s(n-1)) до yn блоков. Все оставшиеся блоки гарантированно влезают в предыдущие стопки. Уменьшайте z на сгенерированное случайное число блоков и повторяйте дальше.

    Если надо все равновернятно, то все сложно. Надо динамическим программированем уметь считать, сколько вариантов разместить k блоков на первых i стопках. Потом сгенерировать случайный номер среди всевозможного количества размещений и считать, а сколько бывает вариантов при последней стопке с 0, 1, ... yn блоках и так можно понять, сколько блоков надо поставить в последнюю стопку, чтобы накрыть нужный вариант в лексикографическом порядке. Для этого используйте подсчитанные динмическим программированием значения.
    Ответ написан
    Комментировать
  • Какой оптимальный алгоритм для однозначного определения слагаемых в сумме?

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

    Сначала полным перебором найдите суммы всех подмножеств. Если есть совпадения, возьмите минимальную сумму, которую можно набрать больше 1 раза. Вычтите из случайного заказа 1 копейку. Повторяйте процесс. Если цены правдоподобны, сильно больше 100 копеек и цены различаются, то даже для 20 заказов вам придется лишь несколько копеек вычесть.

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

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

    Форомула будет (x0 - xr)(y1-yr) - (x1-xr)(y0-yr), где xr, yr - центр окружности.
    Ответ написан
    Комментировать
  • Почему sum(sum(xy)/sum(x))/n приближенно равен sum(sum(xy))/sum(sum(x))?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Должны быть какие-то определенные свойства матрицы даны. Иначе оно нифига приблеженно не равно. Например,

    X= {{1, 5}, { 1, 5}}, Y={{5, 1/5}, {5, 1/5}}

    слева даст: 1/2 (10/2 + 2/10) = 1/2 (5 + 0.2) = 2.7

    а справа: (5+5+1+1)/(1+5+1+5)= 1

    Вообще даже близко не равно. Меняя 5 в матрице выше на сколь угодно большое число, вы получите сколь угодно большую разницу.
    Ответ написан
    4 комментария
  • Верно ли я поставил знаки в формуле?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Нет.
    Ответ написан
    Комментировать
  • Как минимизировать логическое уравнение?

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

    А дальше там будет 2 соседних слагаемых A !B !C !D+A C !D. Тут можно A !D вынести за скобки и останется (!B !C+C). Это можно сократить просто до !B + C. Было такое правило, вроде бы, но это можно доказать. Если C истинно, то исходное уже истинно. Если !B истинно, то либо !С истинно и истинно первое слагаемое, либо С истинно, и истинно второе слагаемое.

    Вот уже третье слагаемое сократилось то A !B !D

    Потом повторите фокус, вынеся за скобки из первого и второго слагаемого !B. Там останется !A+A !D = !A + !D
    Ответ написан
    3 комментария
  • Как доказать это или где можно почитать доказательство этого факта?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Как и всегда со счетными множествами, надо все элементы (подмножества) перенумеровать. Например, тут подойдет двоичная система счисления. Занумеруйте все элементы множества. Потом для каждого подмножества выписываете 1 в разрядах, соответствующих элеменам в подмножестве и 0 для элементов не в нем. Получаете двоичное число. Переводите в десятичную систему и получаете номер подмножества.

    Так можно по номеру получить уникальное подмножество и любое подмножество имеет какой-то номер. Все. Вот мы и занумеровали множество всех подмножеств натуральными числами. Оно счетно.
    Ответ написан
    2 комментария
  • Следствие из свойств скалярного произведения. Из чего это следует?

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Найдите остаток от деления искомой штуки на 4 и на 25. Далее примените китайскую теорему об остатках.

    Так проще, потому что остаток от деления a^(b^c) на степень простого числа можно найти по малой теореме Эйлера:

    a^(b^c) = a ^ (b^c % (p-1)p^(n-1)) mod p^k.

    Т.е. 7^9^9 = 7^((9^9) % 20) mod 25

    9^9 % 20 уже можно вычеслить через логарифмическое возведение в степень.

    Аналогично для 4.

    Правда, тут можно и без теоремы об остатках. Надо просто сразу применить теорему ейлера. фи(100) надо только аккуратно вычислить. И числа будут чуть больше, но все-равно подъемные.
    Ответ написан
    Комментировать
  • Как доказать что последовательные производные также имеют вещественные корни?

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

    Если нет кратных корней - то все просто. У вас n-1 последовательный промежуток между двумя корнями. На каждом должен быть ноль производной.

    Теперь, допустим есть какой-то корень степени k > 1.

    Тогда P(x) = (x-a)^k Q(x).

    Если взять производную, то видно, что она делится на (x-a) в степени k-1, т.е имеет k-1 корней:

    P'(x) = k*(x-a)^(k-1)*Q(x)+(x-a)^k*Q'(x)

    Т.е, если у вас m различных корней (суммарной кратностью n), то производная, как и в первом случае имеет m-1 корней между корнями P(x) и еще n-m раз повторяет корни полинома как во втором случае. Суммарно - n-1 вещественных корней, значит все корни - вещественные.
    Ответ написан
    Комментировать
  • Как посчитать значение счетчика со сбросом?

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

    Один вариант решения - прибавлять к текущему числу 65536, пока оно меньше предыдущего. Можно обойтись арифметикой:

    a[i] += ceil((a[i-1]-a[i])/65536)*65536

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

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

    Сначала надо триангулировать четырехугольник. Потом, центр масс каждого треугольника - среднее арифметическое координат. Далее, остается найти центр масс двух точек - центров масс треугольников, где в каждой точке лежит масса равная площади треугольника.

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

    Итоговая фромула (в векторах):
    C = ((p1+p2+p3)/3*(p1p2*p1p3)+(p3+p4+p1)/3*(p1p3*p1p4))/((p1p2*p1p3)+(p1p3*p1p4))


    Тут pi - i-ая вершина четырехугольника, pipj - вектор между точками i и j. pipj*pkpl - векторное произведение двух векторов.
    Ответ написан
    Комментировать