Прежде всего, извиняюсь, если есть лучший способ форматировать математические уравнения, я ничего не мог найти, но, увы, выражения довольно короткие.Попытка упростить выражение с факториалами
Как часть заданной задачи, я должен создать код в C, который будет оценивать x^n/n! для произвольного x и n = {1-10, 50, 100}
Я всегда могу перетащить его с помощью библиотеки большого числа, но мне интересно, сможет ли кто-то с лучшими математическими навыками предложить лучший алгоритм чем что-то с O (n!) ...
Я понимаю, что я могу разбить числитель на x^(n/2) x^(n/2) для четных значений n и x x^(n-1/2) * x^(n-1/2) для нечетных значений n. И что я могу дополнительно изменить это на логарифмическую базу x of n/2.
Но я застрял по нескольким причинам:
1 - я не думаю, что в вычислительном отношении какой-либо из этих изменений фактически делают большой разницы, так как они на самом деле не помогает мне уменьшить большое количество умножений, которые я должен выполнить , или их общее число.
2 - Даже если я думаю о n! как 1 * 2 * 3 * ... * (n-1) * n, я до сих пор не могу рационализировать хороший способ упростить общее уравнение.
3 - Я рассмотрел алгоритм Карацубы для умножения, и, хотя это возможно, это кажется немного сложным для введения проблемы программирования.
Так что мне интересно, можете ли вы, ребята, подумать о какой-либо средней земле. Я предпочитаю объяснения прямых ответов, если у вас есть время :)
Приветствия,
http://en.wikipedia.org/wiki/Gamma_function – Barmar
ehh, мой плохой. Я должен был заметить это раньше. Общая цель решения состоит в том, чтобы аппроксимировать значение e^x, суммируя x^n/n !. Таким образом, использование функции, которая требует, чтобы e^x в качестве фактора не помогло бы ... приятное предложение. –
Зачем вам это нужно? Есть ли язык программирования, который не имеет функции для вычисления 'e^x'? – Barmar