Факториал — формула, свойства и примеры решений
Факториал числа n – это произведение чисел от 1 до n. Определён только для целых неотрицательных чисел.
Математическая формула представлена восклицательным знаком «!». Термин был введен в 1800 году, а обозначение появилось только в 1808. В формуле нужно умножить все целые числа от 1 до значения самого числа, стоящего под знаком факториала.
Это очень просто, вот пример:
Факторизация — разложение функции на множители.
Таблица факториалов
Свойства факториалов
Рекуррентная формула
Комбинаторная интерпретация
Функция n может интерпретироваться как количество перестановок. К примеру, для 3-х элементов есть 3! = 6 перестановки.
Формула Стирлинга
Позволяет не перемножать большие числа. Обычно необходим только главный член:
Можно ли вычислить 0,5 или -3,217? Нет, нельзя. Но можно использовать нечто под названием «Гамма-функция», что намного сложнее.
Расчет по предыдущему значению
Функцию легко вычислить из предыдущего значения:
А как вычислить факториал нуля? Если вернуться к определению, то видно, что применять его в случае «0» нет смысла. Положительных чисел до 0 нет, поэтому 0 x 0 = 0.
Однако было решено, что в случае 0 результат будет равен 1.
Некоторые очень большие значения
Онлайн калькулятор поможет сделать вычисление – всего лишь надо найти знак, похожий на «x!» или «n!». Нужно обратить внимание, что браузеры могут испытывать затруднения при попытке отобразить более крупные числа и может произойти сбой.
Некоторые браузеры могут не позволять копировать, поэтому необходимо будет загрузить большие результаты в виде текстового файла.
Примеры вычисления факториалов больших чисел:
70! приблизительно 1 19785716669969869891796072783721 x 10100, что немного больше, чем «гуголь» (1 и 100 нулей);
100! это примерно 9 33262154444944152681699238856 x 101576 x 10157;
200! это примерно 7 88657867867364479050355236321393 x 103743.
Как найти функцию в Паскаль? Вычисление легко реализуется на разных языках программирования. Можно выбрать два метода: итеративный, то есть он создает цикл, в котором временная переменная умножается на каждое натуральное число от 1 до n, или рекурсивный, в котором функция вызывает себя до достижения базового варианта 0! = 1.
Программа на языке Паскаль:
На языке Си вычисления делаются с помощью рекурсивной функции. Следует заметить, что если начать вычислять факториал отрицательного числа в неаккуратно написанной функции, то это приведет к зацикливанию.
Факториал дроби (½) — это половина квадратного корня pi = (½)√π.
Источник статьи: http://nauka.club/matematika/algebra/faktorial.html
Калькулятор факториалов онлайн
Пользоваться нашим калькулятором факториалов предельно просто. Нужно нажать на клавиатуре !
Добро пожаловать на сайт Pocket Teacher
Наш искусственный интеллект решает сложные математические задания за секунды
Мы решим вам контрольные, домашние задания, олимпиадные задачи с подробными шагами. Останется только переписать в тетрадь!
начать
Факториалы
Что такое факториалы и как их решать
Факториал числа n, который в математике обозначают буквой латиницы n, после которой следует восклицательный знак !. Произносится голосом это выражение как “н факториал”. Факториал – это результат последовательного умножения между собой последовательности натуральных чисел с 1 и до искомого числа n. Например, 5! = 1 х 2 х 3 х 4 х 5=720Факториал числа n обозначается латинской буквой n! и произносится как эн факториал. Представляет собой последовательное перемножение (произведение) всех натуральных чисел начиная с 1 до числа n. Например: 6! = 1 х 2 х 3 х 4 х 5=720
Факториал имеет математический смысл, только тогда, когда если это число целое и положительное (натуральное). Этот смысл следует из самого определения факториала, т.к. все натуральные числа неотрицательные и целые. Значения факториалов, а именно результат умножения последовательности от единицы до числа n можно посмотреть в таблице факториалов. Такая таблица возможна, по причине того, что значение факториала любого целого числа известно заранее и является, так сказать, табличным значением.
По определению 0! = 1. То есть если имеется ноль факториал, то мы ничего не перемножаем и результат будет первым натуральным существующим числом, то есть один.
Рост функции факториала можно отобразить на графике. Это будет дуга, похожая на функцию икса в квадрате, которая будет стремиться быстро вверх.
Факториал – является быстрорастущей функцией. Она растет по графику быстрее, чем функция многочлена любой степени и даже экспоненциальная функция. Факториал растет быстрее многочлена любой степени и экспоненциальной функции (но при этом медленнее двойной экспоненциальной функции). Именно поэтому, чтобы посчитать факториал вручную могут быть сложности, так как результатом может получиться очень большое число. Чтобы не считать факториал вручную, можно воспользоваться калькулятором подсчёта факториалов, с помощью которого вы можете быстро получить ответ. Факториал применяется в функциональном анализе, теории чисел и комбинаторике, в которой имеет большой математический смысл, связанный с числом всевозможных неупорядоченных комбинаций объектов (чисел).
Чтобы быстро рассчитать число комбинаций n чисел, нужно всего лишь посчитать n!. После подсчёта значения факториала калькулятором, искомое значение можно использовать в решении более сложных задач. Вы можете посмотреть необходимый факториал в таблице: «Таблица факториалов»
Бесплатный онлайн калькулятор факториалов
Наш бесплатный решатель позволяет расчитать факториалы онлайн любой сложности за считанные секунды. Все, что вам необходимо сделать — это просто ввести свои данные в калькуляторе. Так же вы можете посмотреть видео инструкцию и узнать, как решить уравнение на нашем сайте. А если у вас остались вопросы, то вы можете задать их в нашей группе Вконтакте: pocketteacher. Вступайте в нашу группу, мы всегда рады помочь вам.
Наш искусственный интеллект решает сложные математические задания за секунды.
Мы решим вам контрольные, домашние задания, олимпиадные задачи с подробными шагами. Останется только переписать в тетрадь!
Источник статьи: http://www.pocketteacher.ru/calculator-factorialov-ru
Алгоритмы быстрого вычисления факториала
Понятие факториала известно всем. Это функция, вычисляющая произведение последовательных натуральных чисел от 1 до N включительно: N! = 1 * 2 * 3 *… * N. Факториал — быстрорастущая функция, уже для небольших значений N значение N! имеет много значащих цифр.
Попробуем реализовать эту функцию на языке программирования. Очевидно, нам понадобиться язык, поддерживающий длинную арифметику. Я воспользуюсь C#, но с таким же успехом можно взять Java или Python.
Итак, простейшая реализация (назовем ее наивной) получается прямо из определения факториала:
На моей машине эта реализация работает примерно 1,6 секунд для N=50 000.
Далее рассмотрим алгоритмы, которые работают намного быстрее наивной реализации.
Алгоритм вычисления деревом
Первый алгоритм основан на том соображении, что длинные числа примерно одинаковой длины умножать эффективнее, чем длинное число умножать на короткое (как в наивной реализации). То есть нам нужно добиться, чтобы при вычислении факториала множители постоянно были примерно одинаковой длины.
Пусть нам нужно найти произведение последовательных чисел от L до R, обозначим его как P(L, R). Разделим интервал от L до R пополам и посчитаем P(L, R) как P(L, M) * P(M + 1, R), где M находится посередине между L и R, M = (L + R) / 2. Заметим, что множители будут примерно одинаковой длины. Аналогично разобьем P(L, M) и P(M + 1, R). Будем производить эту операцию, пока в каждом интервале останется не более двух множителей. Очевидно, что P(L, R) = L, если L и R равны, и P(L, R) = L * R, если L и R отличаются на единицу. Чтобы найти N! нужно посчитать P(2, N).
Посмотрим, как будет работать наш алгоритм для N=10, найдем P(2, 10):
P(2, 10)
P(2, 6) * P(7, 10)
( P(2, 4) * P(5, 6) ) * ( P(7, 8) * P(9, 10) )
( (P(2, 3) * P(4) ) * P(5, 6) ) * ( P(7, 8) * P(9, 10) )
( ( (2 * 3) * (4) ) * (5 * 6) ) * ( (7 * 8) * (9 * 10) )
( ( 6 * 4 ) * 30 ) * ( 56 * 90 )
( 24 * 30 ) * ( 5 040 )
720 * 5 040
3 628 800
Получается своеобразное дерево, где множители находятся в узлах, а результат получается в корне
Реализуем описанный алгоритм:
Для N=50 000 факториал вычисляется за 0,9 секунд, что почти вдвое быстрее, чем в наивной реализации.
Алгоритм вычисления факторизацией
Второй алгоритм быстрого вычисления использует разложение факториала на простые множители (факторизацию). Очевидно, что в разложении N! участвуют только простые множители от 2 до N. Попробуем посчитать, сколько раз простой множитель K содержится в N!, то есть узнаем степень множителя K в разложении. Каждый K-ый член произведения 1 * 2 * 3 *… * N увеличивает показатель на единицу, то есть показатель степени будет равен N / K. Но каждый K 2 -ый член увеличивает степень еще на единицу, то есть показатель становится N / K + N / K 2 . Аналогично для K 3 , K 4 и так далее. В итоге получим, что показатель степени при простом множителе K будет равен N / K + N / K 2 + N / K 3 + N / K 4 +…
Для наглядности посчитаем, сколько раз двойка содержится в 10! Двойку дает каждый второй множитель (2, 4, 6, 8 и 10), всего таких множителей 10 / 2 = 5. Каждый четвертый дает четверку (2 2 ), всего таких множителей 10 / 4 = 2 (4 и 8). Каждый восьмой дает восьмерку (2 3 ), такой множитель всего один 10 / 8 = 1 (8). Шестнадцать (2 4 ) и более уже не дает ни один множитель, значит, подсчет можно завершать. Суммируя, получим, что показатель степени при двойке в разложении 10! на простые множители будет равен 10 / 2 + 10 / 4 + 10 / 8 = 5 + 2 + 1 = 8.
Если действовать таким же образом, можно найти показатели при 3, 5 и 7 в разложении 10!, после чего остается только вычислить значение произведения:
10! = 2 8 * 3 4 * 5 2 * 7 1 = 3 628 800
Осталось найти простые числа от 2 до N, для этого можно использовать решето Эратосфена:
Эта реализация также тратит примерно 0,9 секунд на вычисление 50 000!
Как справедливо отметил pomme скорость вычисления факториала на 98% зависит от скорости умножения. Попробуем протестировать наши алгоритмы, реализовав их на C++ с использованием библиотеки GMP. Результаты тестирования приведены ниже, по ним получается что алгоритм умножения в C# имеет довольно странную асимптотику, поэтому оптимизация дает относительно небольшой выигрыш в C# и огромный в C++ с GMP. Однако этому вопросу вероятно стоит посвятить отдельную статью.
Все алгоритмы тестировались для N равном 1 000, 2 000, 5 000, 10 000, 20 000, 50 000 и 100 000 десятью итерациями. В таблице указано среднее значение времени работы в миллисекундах.
График с линейной шкалой
График с логарифмической шкалой
Идеи и алгоритмы из комментариев
Хабражители предложили немало интересных идей и алгоритмов в ответ на мою статью, здесь я оставлю ссылки на лучшие из них
Исходные коды реализованных алгоритмов приведены под спойлерами
Источник статьи: http://habr.com/ru/post/255761/
Математический калькулятор с расширенными возможностями.
Удобный и простой инженерный калькулятор с богатым арсеналом возможностей для математических расчетов и между тем с приятным и понятным интерфейсом, способен выполнять практически любые арифметические действия и сложные математические вычисления.
Инженерный калькулятор позволяет использовать много разных математических функций:
• решение гиперболических, тригонометрических и обратных тригонометрических функций:
• возведение в степень и извлечение корней:
• решение матриц и уравнений:
• построение графиков и конвертертация величин:
• вычисление логарифмов и экспоненты:
• дифференцирование и интегрирование функций:
• нахождение факториала, абсолютной величины числа, значения аргумента функции, биноминального коэффициента, наибольшего общего делителя, наименьшего общего кратного:
• Использование мнимой единицы при расчётах комплексных чисел:
• Выделение целой действительной части и исключение действительной части:
• Разложение числа на простые множители.
Инженерный калькулятор позволяет конвертировать физические величины разных систем измерений (масса, расстояние, время, компьютерные информационные единицы измерения и др. С возможностями нашего калькулятора вы сможете моментально перевести фунты в килограммы, мили в километры, секунды в часы и т.д.
Для выполнения математических расчетов, просто введите последовательность математических выражений в соответствующее поле и для получения результата нажмите на кнопку со знаком равенства.
Для построения графиков достаточно в поле ввода с помощью панели инструментов записать функцию и нажать на кнопку с изображением графика. Кнопка с надписью Unit предназначена для перехода в конвертер величин, для вычисления матриц нажмите на кнопку Matrix. В таблице указаны все клавиши (со значком * вызывается через дополнительную клавишу II) калькулятора и выполняемые ими операции.
Клавиша | Символ | Операция |
pi | pi | Постоянная pi |
е | е | Число Эйлера |
% | % | Процент |
( ) | ( ) | Открыть/Закрыть скобки |
, | , | Запятая |
sin | sin(α) | Синус угла |
cos | cos(β) | Косинус |
tan | tan(y) | Тангенс |
sinh | sinh() | Гиперболический синус |
cosh | cosh() | Гиперболический косинус |
tanh | tanh() | Гиперболический тангенс |
sin -1 | asin() | Обратный синус |
cos -1 | acos() | Обратный косинус |
tan -1 | atan() | Обратный тангенс |
sinh -1 | asinh() | Обратный гиперболический синус |
cosh -1 | acosh() | Обратный гиперболический косинус |
tanh -1 | atanh() | Обратный гиперболический тангенс |
x 2 | ^2 | Возведение в квадрат |
х 3 | ^3 | Возведение в куб |
x y | ^ | Возведение в степень |
10 x | 10^() | Возведение в степень по основанию 10 |
e x | exp() | Возведение в степень числа Эйлера |
√x | sqrt(x) | Квадратный корень |
3 √x | sqrt3(x) | Корень 3-ей степени |
y √x | sqrt(x,y) | Извлечение корня |
log2x | log2(x) | Двоичный логарифм |
log | log(x) | Десятичный логарифм |
ln | ln(x) | Натуральный логарифм |
logyx | log(x,y) | Логарифм |
I / II | Сворачивание/Вызов дополнительных функций | |
Unit | Конвертер величин | |
Matrix | Матрицы | |
Solve | Уравнения и системы уравнений | |
изображение графика | Построение графиков | |
* mod | mod | Деление с остатком |
* ! | ! | Факториал |
* i / j | i / j | Мнимая единица |
* Re | Re() | Выделение целой действительной части |
* Im | Im() | Исключение действительной части |
* |x| | abs() | Модуль числа |
* Arg | arg() | Аргумент функции |
* nCr | ncr() | Биноминальный коэффициент |
* gcd | gcd() | НОД |
* lcm | lcm() | НОК |
* sum | sum() | Суммарное значение всех решений |
* fac | factorize() | Разложение на простые множители |
* diff | diff() | Дифференцирование |
* Deg | Градусы | |
* Rad | Радианы |
Теперь, когда вам понадобится калькулятор, приходите на сайт и используйте бесплатный научный калькулятор.
Источник статьи: http://ncor.ru/help/33