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

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

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

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

    Но вообще, комплексные числа, группы и кольца очень часто используются в криптографии, намример. Сами алгоритмы шифрования и обмена ключами (всякие там RSA, Diffie-Hellman) - это вообще часто чистая математика с этими объектами. Плюс, комлпексные числа используются в быстром преобразовании Фурье, которое позволяет быстро перемножать огромные числа, а эта операция в криптографии тоже очень важна.
    Ответ написан
    Комментировать
  • Как правильно перевести GPS координаты из одной системы в другую?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Пока похоже, что первые 3 символа - градусы * 6.
    Потом 2 символа минуты, потом '0', потом 2 символа секунды. Последние 2 символа непонятно как переводятся в десятичные доли секунд. Есть подозрение, что вы ошиблись с координатами на гуглмапсах.

    Правда не понятно, как он будет восточную от западной и северную от южной отличать. Будут ли там минусы? Или последний символ может использоваться для обозначения направления.

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Если нет пауз между буквами, то задача однозначно не решается:
    Например, "vz" и "3d" одинаково кодируются "...---.." ("...-- -.." и "...- --..").
    В худшем случае, неправильная интерпретация первых символов может сделать расшифровку в самом конце невозможной.

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

    Тогда надо разбить строку на отдельные "слова" - группы тире и точек, разделенные пробелами и каждую группу перевести в букву по таблице. Таблицу в идеале надо хранить в trie ("бор" по русски), но эта структура не реализована в стандартной библиотеке C++, поэтому можно воспользоваться просто std::map<std::string, char>

    Edit: Разумеется, таблица для обратного перевода должна быть отдельной переменной. Не получится смешать в одну кучу переводы и туда и обратно.
    Ответ написан
    Комментировать
  • Что значит описать встретившуюся геометрическую фигуру и определить положение точки в этой фигуре?

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Можно. Из второго уравнения: x=u/(1-c).
    Ответ написан
    7 комментариев
  • Как вписать прямоугольник в многоугольник?

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

    В этом случае, ваша задача это весьма сложная геометрическая задача.
    Я знаю один способ решить ее - перебрать все максимальные прямоугольники (те, что нельзя увеличить просто сдвинув).
    Такие прямоугольники будут касаться заданного многоугольника углами и/или сторонами. Надо будет перебрать все случаи - что чего там касается, построить прямоугольник и проверить, что он лежит внутри заданного многоугольника (пересечь все стороны многоугольника со сторонами квадрата и убедиться, что пересечений нигде нет и также, что центр прямоугольника лежит внутри многоугольника), и из всех таких выбрать самый большой.

    Но тут слишком много случаев. Это очень сложная задача строк этак на 1000 мозгодробящей геометрии.
    Ответ написан
    Комментировать
  • Как узнать место пересечения луча со сферой?

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

    Луч:
    x = x0 + t*vx
    y = y0 + t*vy    (1)
    z = z0 + t*zy

    Где (x0,y0,z0) - начало луча (камера?), (vx, vy, vz) - направление луча.

    Уравнение сферы:
    (x-xs)**2 + (y-ys)**2 + (z-zs)**2 = R**2 (2)

    Где (xs, ys, zs) -центр сферы, R - радиус.

    Подставьте (1) в (2) - получите квадратное уравнение на t. Решите его по школьной формуле и возьмите минимальное положительное t. Подставьте в (1) и получите координаты точки пересечения (и заодно длину луча, если вектор направления нормализован).
    Ответ написан
    7 комментариев
  • Какой длины массив чисел можно "упаковать" по 3 элемента 25 комбинациями?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Пусть делящихся на 2 - x, а делящехся на 3 - y.

    Тогда количество способов "выбрать три числа так, чтобы
    среди них было как минимум одно четное число и хотя бы одно число, делящееся на 3" - x(x-1)y/2+x*y*(y-1)/2. Или мы берем 2 четных числа и одно, делящееся на 3. или наоборот.

    Теперь надо подобрать такие x и у, чтобы вот эта формула сверху дала 25. Ответом будет x+y.

    Можно или перебрать мелкие значения x и y и посмотреть, что 2 и 5 подойдут, или вывести это логически. Формулу можно факторизовать до x*y*(x+y-2)/2. Приравняем к 25 и домножим на 2: x*y*(x+y-2) = 5*5*2. Справа произведение трех простых чисел. Слева три неизвестных целых множителя. Значит надо лишь перебрать способы распихать эти три простых числа по трем множителям. x и у не могут быть 1 вместе, ибо 1*1*0 != 50. Если x=1, а y!=1, То надо там тоже видно, что решения для y нет. x+y-2 тоже не может быть 1, ведь кто-то из x и y будет точно хотя бы 5. Ну и остается тольковариант x=5, y=2, (x+y-2) = 5.

    Итого, ответ - 7.
    Ответ написан
    Комментировать
  • Как работает этот рекурсивный алгоритм разложения на слагаемые?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Функция генерирует все разбиения числа n на слагаемые не больше maxx. Ддя этого ыункуия перебирает, а какое же максимальное число будет в разбиении (цикл по i), берет это число и рекурсивно разбивает оставшуюся часть. Обратите внимание, в качестве maxx в рекурсии передается i. Ведь именно это было максимальное число в перебираемом разбиении. Значит следующее не может его превышать.

    Вся эта сложность с максимальным числом сделана, что бы не перебирать перестановки слагаемых. Ведь 4=1+2+1 можно по идее получить тремя способами, меняя порядок. Генерируя слагаемые в не возрастающем прядке, мы избавляемся от таких дубликатов.
    Ответ написан
    Комментировать
  • Как найти площадь квадрата, имея 2 отрезка?

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

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

    В этом случае можно сначала построить обрамляющий прямоугольник вокруг обоих прямоугольников (взять максимум и минимум по каждой оси из всех углов). А потом взять его большую сторону в качестве стороны квадрата-ответа (возвести в квадрат и вывести).

    Если же это не сработает и квадрат можно вращать, то тут все сложно. Путем очень хитрых геометрических рассуждений можно доказать, что квадрат в оптимальном случае, все-таки, будет параллелен осям координат и просто написать решение выше. Ну, или, если не верите, то можно ввести угол поворота как переменную, написать функцию, котороя поворачивает все точки на данный угол, а потом ищет (по алгоритму в начале) площадь описанного параллельного осям квадрата, и потом запустить тернарный поиск минимума по этой функции.
    Ответ написан
    2 комментария
  • Почему последний множитель в формуле числа размещений = (n-k+1)?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Потому что оно есть n! / (n-k)! Вот n-k и в числителе и в знаменателе сокращается. А вот n-k+1 в числителе остается, потому что сокращатся ему не с чем.
    Ответ написан
    Комментировать
  • Формула вращающегося прямоугольника как?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Ну это же школьная геометрия. (L-W)/sqrt(2), если длинная сторона L, а короткая W.

    Там равносторонний прямоугольный треугольник с длиной (L-W)/2 (вычли пересечение из длины, осталось 2 одинаковых куска, поделили пополам - нашли искомый кусок. А дальше - теорема Пифагора.
    Ответ написан
  • Как в данной системе из линейных уравнений получился x и y?

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

    Можно из одного уравнения выразить y через x, подставить в другое, найти x, потом найти y.

    Или можно получить эти формулы в одно действие методом Крамера.
    Ответ написан
    5 комментариев
  • Доказательство простого факта. Математический анализ, равномерная непрерывность. Как?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Я так понял в условии на самом деле говрится, что для любого достаточно маленького z (0 < z < Z0) функциональный ряд равномерно сходится на (a+z, b-z)

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

    Пусть есть a<x0<b. Возьмем z = min(Z0, (x0-a)/2, (b-x0)/2). Используем данное, что ряд равномерно сходится на отрезке (a+z,b-z), а значит F на этом отрезке непрерывна. Значит F непрерывна в точке x0 (ведь мы так z подобрали, чтобы x0 в этом интервале лежала). Мы взяли любую точку x0 из (a,b), а значит F непрерывна на всем интервале.

    Edit: Если же в условии тупо дана равномерная сохдимость на каком-то интервале (c,d) (a < c < d < b), а не для сколь угодно близкого к (a,b) вложенного интервала, то, очевидно, что непрерывности там никакой и нет.
    Ответ написан
    Комментировать
  • Как задать плотность вероятностей перехода λij системы из состояния Si в Sj?

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

    Допустим, телефон, когда он сядет, где-то за пару часов в среднем втыкают в разетку. Значит плотность перехода из S4 в S2 должна быть такой, чтобы среднее время до совершения осбытия было где-то пару часов. Процесс, видимо пуассоновский, раз у вас такие формулы, значит время до перехода будет распределенно показательно, значит среднее время равно 1/лямбда. Остюда лямбда = 1/<среднее время перехода>, или 1/2.

    Заряжается телефон где-то за 3 часа - значит переход между разряжен->выключен происходят с интенсивностью 1/3.

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

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

    В примере:

    60/100 = 3/5
    30/100 = 3/10
    10/100 = 1/10

    Знаменатели 5,10 и 10. НОК(5, 10, 10) = 10.

    Поскольку задача с процентами, то все знаменатели до сокращения - 100. После сокращения может быть только число с максимум двумя двойками и двумя пятерками. Поэтому можно чуть проще руками посчитать двойки и пятерки в знаменателях.

    Пусть n2 равно 1, если есть число в процентах, не делящееся на 2, и равно 0 - иначе.
    n4 - тоже для 4, n5, n25 - тоже для 5 и 25.

    Тогда ответ 2^(n2+n4)*5^(n5+n25).

    В примере есть число не делящееся на 4 (10 и 30), поэтому n4=1. Все четные - поэтому n2=0.
    n5 = 0, потому что все делится на 5. n25=1 - все не делится на 25. Поэтому ответ 2^(0+1)*5^(0+1) = 2*5=10

    edit:

    Вы обновили вопрос - проценты у вас могут быть нецелые. Например 3.71%

    Тогда забейте на 2 и 5 - проще через НОК считать. Опять же сократите дроби и возьмите знаменатели:
    3.71% = 371/10000
    3.72% = 372/10000 = 186/5000 = 93/2500
    и т.д.
    Ответ написан
  • Как найти следующий корень уравнения, используя метод простых итераций?

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

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

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

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

    Когда подберете параметры, функция будет вычислятся кусочно. Сначала найдите к какому отрезку относится текущее время (или тупо циклом или набором if-else, или, если сделаете отрезки одинаковым количеством часов, то можно поделить время на длину отрезка и округлить вниз, чтобы получить номер отрезка). Потом вычислите значение нужного сплайна, что будет просто вычислением полинома второй или третьей степени.

    Ну, или можете просто задать нексолько ключевых значений, и проинтерполировать полиномом лагранжа. Правда тут сложно будет заставить его идти именно как вам хочется. Через точки-то он точно пройдет, но вот между ними может иметь какие-то левые пики и изгибы. Так что придется поэксперементировать. Можно поиграться, например, в wolframalpha.com (введите "interpolating polynomial calculator", потом задайте значения функции в точках и получите и график и формулу. Ссылку дать не могу, qna ссылки на wolfram банит за одно со спамерскими ссылками по ошибке).
    Ответ написан
    Комментировать
  • Как найти сумму N векторов, взятых по одному из N множеств векторов, ближайшую к заданному вектору?

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

    Поэтому симплекc метод тут никак не поможет. Это задача квадратичного программирования, в лучшем случае.

    Тут или полный перебор, или какой-нибудь метод отжига придется делать. В одномерном случае при небольших числах можно какое-нибудь динамическое программирование использовать, но это вряд ли ваш случай.
    Ответ написан
    Комментировать