Ответы пользователя по тегу Математика
  • Как решить задачу с комплексными числами (не просьба решить, а подсказать)?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    1,2 - сначала умножаете числитель и знаменатель первой дроби на 1-i, а второй дроби - на 5i+2. Получатся две дроби, у которых в знаменателе вещественное число (у первой дроби 2, у другой -29). Теперь умножаете обе дроби на 58 (для этого числитель первой дроби умножается на 29, а второй - на -2). Получается число 29*(1-i)+2*5*(5*i+2). Раскрываете скобки и получаете ответ.
    3 - просто берёте формулу корней квадратного уравнения. Там всё видно.
    Ответ написан
    Комментировать
  • Каким алгоритмом или формулой можно выяснить, находится ли точка между паралельными прямыми?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Вычисляете (a1*x + b1*y + c1)*(a2*x + b2*y + c2). Если у него знак такой же, как у a1*a2+b1*b2, то точка принадлежит тупому углу между прямыми, если другой - то острому. В случае параллельных или почти параллельных прямых второй случай соответствует ситуации "лежит между", а первый - "нет".
    Ответ написан
    1 комментарий
  • Как в хабрастатьи вставляют математические формулы?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Часто используют сервис latex.codecogs.com . Какое-то время назад он испортился - разрешил показывать только небольшое количество формул на странице, но сегодня, вроде бы, работает, как раньше.
    Ответ написан
    Комментировать
  • Как распределить деньги по графикам?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Придумываете условную единицу "сантик".
    Считаете, что выигрыш каждого (в сантиках) равен произведению его ставки на процент выигрыша (неважно, считать выигрыш от 0 до 1 или от 0 до 100).
    Вычисляете общий выигрыш в сантиках.
    Вычисляете курс сантика исходя из того, что суммарный выигрыш 10000.
    Пересчитываете выигрыш каждого.
    Если сумма ставки - S(X), а процент выигрыша - V(X), то
    C=10000/sum(S(X)*V(X)) - курс сантика
    W(X)=S(X)*V(X)*C - окончательный выигрыш.
    Ответ написан
    Комментировать
  • Как спроецировать фигуру на плоскость?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Чтобы найти точку "в плоскости", вам нужно задать в ней систему координат. То есть, выбрать точку начала координат O(x0,y0,z0) и два базисных вектора X=(x1,y1,z1) и Y=(x2,y2,z2). Судя по тому, что вы говорите про "декартову систему координат", векторы должны быть единичной длины и перпендикулярны друг другу.
    Добавляете к системе вектор Z, параллельно которому идёт проектирование. Из условия непонятно, рассматриваете вы только ортогональную проекцию, или общий случай параллельной проекции.
    В случае ортогональной всё просто - не нужно даже возиться с матрицами:
    вектор Z вычисляется как векторное произведение X и Y, но он нам не нужен вообще: если проектируемая точка P имеет координаты (x,y,z), то её проекция Q будет иметь координаты (в системе координат плоскости)
    x'=(P-O,X)=(x-x0)*x1+(y-y0)*y1+(z-z0)*z1
    y'=(P-O,Y)=(x-x0)*x2+(y-y0)*y2+(z-z0)*z2.
    В случае косоугольной проекции вычисления сложнее - надо умножать вектор (P-O) на матрицу, обратную к матрице, составленной из X,Y,Z. И там главное не запутаться, где строки, а где столбцы.
    Ответ написан
  • Как запрограммировать нахождение стационарного распределения методом Гаусса?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Переписываете первые 3 строчки в виде
    p1*(0.1967-1) + p2*0.4561 + p3*0.3321 + p4*0.2982 = 0
    p1*0.0750 + p2*(0.0553-1) + p3*0.1986 + p4*0.0325 = 0
    p1*0.2239 + p2*0.4863 + p3*(0.0291-1) + p4*0.3382 = 0

    Четвёртая не нужна - она является их линейной комбинацией.
    Добавляете к ним строчку
    p1*1+p2*1+p3*1+p4*1=1
    Получаете квадратную систему линейных уравнений. Решаете её методом Гаусса на любом известном вам языке - и всё.
    Ответ написан
    1 комментарий
  • Как проверить чётность числа с плавающей запятой?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    double y=x/2;
      bool isEven=(fabs(y-round(y)) < EPS);
    Ответ написан
    Комментировать
  • Как аппроксимировать синусоиду по трем параметрам?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Если X идёт с равномерным шагом, то МНК не нужен.
    Сначала сводите задачу к Y=a+d*sin(X)+f*cos(X).
    Довольно очевидно, что a=sum(Y)/n (поскольку sum(sin(X))=sum(cos(X))=0).
    Далее, умножаете обе части исходной формулы на sin(X):
    sum(Y*sin(x))=a*sum(sin(X))+d*sum(sin(X)^2)+f*sum(sin(X)*cos(X))
    Выполняются условия sum(sin(X))=sum(sin(X)*cos(X))=0, sum(sin(X)^2)=n/2 (если n > 2). Отсюда d=sum(Y*sin(X))*2/n. Аналогично, f=sum(Y*cos(X))*2/n.
    Ответ написан
    6 комментариев
  • Какой добавить коэффициент для поворота формулы?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    r=sin(2*(phi+phi0)), где phi0 - угол поворота. Но она повернёт только кривую, а оси оставит на месте.
    Ответ написан
    1 комментарий
  • Как найти вероятность того, что точка находится от центра на расстоянии меньшем r?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    1. Найти площадь области, содержащей все точки, находящиеся от центра на расстоянии, меньшем r
    2. Понять, чему равна вероятность того, что точка попадёт в круг радиуса R
    3. Найти площадь круга радиуса R
    4. Воспользоваться тем, что вероятности пропорциональны площадям.

    Просто интересно, какой из этих пунктов вообще может вызвать затруднения.
    Ответ написан
    Комментировать
  • Как понимать ответ WolframAlpha(пределы)?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Решение Wolfram я не смотрел, но (-8)^2 это не 16, а 64. Возможно, есть ещё ошибки.

    UPD. Посмотрел. Они в качестве (-8)^(1/3) берут не -2, а 2*exp(i*pi/3)=1+i*sqrt(3). Теоретически, имеют право, хотя это не то, что нужно в задаче по матану.
    Ответ написан
    8 комментариев
  • Что такое "аналитическая функция"?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    В Википедии всё подробно расписано:
    Аналитическая функция
    В комплексной плоскости - функция, дифференцируемая в каждой точке области (примеры: многочлены, exp, sin, cos являются аналитическими на всей плоскости, а sqrt и ln - за пределами луча x <= 0).
    На действительной прямой - бесконечно дифференцируемая функция, в каждой точке совпадающая со своим рядом Тейлора. Годятся почти любые бесконечно дифференцируемые функции, но, например, exp(-1/x^2) не будет аналитической в нуле - там все её производные, а значит, и ряд Тейлора равны нулю.
    Ответ написан
  • Признаки переодичности дроби в произвольной системе счисления?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Когда вы строите дробь a/b, у вас есть последовательность остатков:
    a_0=a%b, a_1=(a_0*p)%b, a_2=(a_1*p)%b,... где p - основание системы счисления. Как только два остатка a_x и a_y совпали - все цифры между ними ((a_x*p)/b, (a_{x+1}*p)/b,...,(a_{y-1}*p)/b) образуют период. Как эффективно найти период такой последовательности - ищите. При небольших b достаточно взять массив M с индексами от 0 до b-1, и для каждого вычисленного остатка проверять ячейку M[a_y]. Если в неё ещё ничего не записали, записать M[a_y]=y. Если там лежит какой-то x, то период найден.
    Есть и другие способы, без использования массивов.
    Ответ написан
    Комментировать
  • В каких числах n деление происходит без остатка?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Получается n=6*m+1 и 6*m+5. Надо воспользоваться тем, что (x+1)^2 mod (x^2+x+1) = x, рассмотреть отдельно случаи n=2*k и n=2*k+1, в каждом умножить обе части на (x-1) и искать P*(x-1) mod (x^3-1). Там x^(3*a+b) mod (x^3-1) = x^b, а в многочлене P после применения первого тождества останется 3 или 4 слагаемых, так что считать несложно.
    Ответ написан
    Комментировать
  • Как обработать все случаи при решении системы линейных уравнений с двумя неизвестными?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    if (a != 0) {
                        x = e / a;
                    }
                    else {
                        x = f / a;
                    }

    Если a==0, будет деление на 0. Но, возможно, ошибки есть где-то ещё.
    Ответ написан
  • Как сравнить бесконечность?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Это смотря что понимать под словом "сравнить". Если хотите узнать, где больше элементов - в A или A-1, при этом A это действительно "ряд" (бесконечная последовательность), то их всегда одинаково. Если хотите узнать, в каком ряду элементы больше, то надо сравнить соответствующие коробки и посмотреть, в какой значение больше - в A или в A-1. Каких элементов больше, те и победят.
    Например, если A=1,2,3,4,..., то A-1=2,3,4,5,... и A-1 > A во всех индексах. Если A=1/1,1/2,1/3,..., то A-1 < A. Если же ряд более хитрый, например, 1,-2,3,-4,..., то для определения каких индексов больше, надо воспользоваться таким объектом, как неглавный ультрафильтр - отличная штука, но, к сожалению, некоструктивная. В результате появляется объект, являющийся простейшим вариантом гипердействительных чисел, открывающих путь к нестандартному анализу.
    Ответ написан
    Комментировать
  • Для чего программисту математика?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Если не будете изучать математику - она и не пригодится. Если будете - пригодится много где, от анализа ДНК и расчёта газовых турбин до компьютерного зрения и игры на бирже. В любом случае будете брать задачи по своим силам.
    И если с математикой в вузе проблем не было, то повторять её специально, "чтоб было", незачем. Вы её уже знаете. И когда решите, что какая-то тема нужна для конкретной задачи, спокойно повторите именно её. Если эта тема встретится несколько раз, то и повторять её будет не надо - она уже будет в голове.
    Ответ написан
    Комментировать
  • Как найти угол поворота объекта (компьютерная графика)?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    1) строите границы Г1, Г2.
    2) для каждой считаете:
    - центр масс (x0,y0)
    - три интеграла: a11=int((x-x0)^2), a12=a21=int((x-x0)*(y-y0)), a22=int((y-y0)^2)
    - собственные значения m1,m2 (m1 < m2) и собственные вектора v1,v2 матрицы ((a11 a12) (a21 a22)).
    Пусть это было вычислено для Г1, а для Г2 получается m1', m2', v1', v2'.
    Если искажений при повороте нет, то m1=m1', m2=m2'. Угол поворота определяется углом z между v1 и v1' (но надо сообразить, в какую сторону). К сожалению, он определён с точностью до 180 гр - так что надо будет как-нибудь сравнить варианты поворота на z и на z+180, и выбрать лучший. Допустим, что это z.
    Осталось найти точку, при повороте вокруг которой на угол z точка (x0,y0) переходит в (x0',y0'). Проще всего записать это в комплексных числах: p0=x0+i*y0, p1=x0'+i*y0', f=exp(i*z). Если искомый центр c, то f*(p0-c)=p1-c, откуда c=(p1-f*p0)/(1-f).
    И всё. Ничего сложного, первый курс ангема...
    Ответ написан
    Комментировать
  • Каков физический смысл модуля при модульном возведении в степень?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Ну, например. Проводите вы какие-нибудь сложные вычисления, например, считаете определитель большой матрицы методом Гаусса. Получилось какое-то маленькое значение, но ошибка при вычислениях могла накопиться большая, и вы не уверены, 0 это или, скажем, 1 (у исходной матрицы коэффициенты целые). Что делать? Посчитать по какому-нибудь модулю. Если повезло и в процессе не пришлось делить на 0, то результат по этому модулю окажется правильным, и если получился не 0 - то значит, и вещественное число было ненулевым. Если же по нескольким разным модулям получились нули, то с большой вероятностью определитель действительно нулевой.
    Модулярная арифметика может пригодиться для перемножения многочленов или больших чисел с помощью быстрого преобразования Фурье. Или для каких-нибудь расчётов, когда вообще неважно, чему равны числа, лишь бы они были ненулевыми и независимыми. В общем, случаи редкие, но когда они встречаются, неплохо бы об этом приёме знать.
    А, да, ещё была "многомодульная геометрия" - когда с помощью модулярной арифметики проверяли, равны ли радиусы двух сфер. Хотя это олимпиадное программирование...
    Ответ написан
    Комментировать
  • Как найти расстояние от центра до стороны повернутого прямоугольника?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Если его повернули на угол a, то
    A1=min(A/abs(cos(a)),B/abs(sin(a))),
    B1=min(B/abs(cos(a)),A/abs(sin(a))).
    Если приходится делить на 0, то результат деления считается равным бесконечности, а значение минимума - второму числу.
    Ответ написан
    1 комментарий