Помощь - Поиск - Пользователи - Календарь
Полная версия: Вычисление факториала методом Стирлинга
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость_Andrew
Собсно сабж.
Гость_Andrew
Формула стерлинга выглядит так

n!=квадратный корень_из_2*Пи*n*n^n*e^n


у меня получилось так (сразу предупрежу что я корявый и с паскалём лет 5 не сталкивался smile.gif

Цитата
program vova;
var n,o:real;
begin
Writeln('Enter the N number');
Readln(n);
o:=sqrt(2)*3.14*n*exp(n*ln(n))*exp(n*ln(2.718));
Writeln('factorial n!=',o);
Readln;
end.


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

Ткните где что поправить можно.
Atos
По-моему эта формула должна выглядеть так:
Квадратный корень(2*pi*n) *((n/e)^n)
Amro
А по моему так, без всяких тама корней, хотя может я и ошибаюсь
n!= (n/e)^n*sqrt(2*pi*n)
или лучше так n! := Exp(n*Ln(n/Exp(1))) * Sqrt(2*Pi*n);
Ну это ладно!!!
Andrew А чтоб ошибка не возникала, напиши начало так
Код
{$N+} {для подклучения всех вещественных типов}
type Real = Extended; {берём более большой вещест тип}
var n,o:Real;
......................
Atos
Amro Sqrt - это и есть квадратный корень smile.gif
Amro
Цитата
Квадратный корень(2*pi*n) *((n/e)^n)

Atos В смысле не всё выражение под корнем!!!!
Atos
А, понятно... Я так и имел в виду - под корнем всё, что в первых скобках
Amro
ИМХО Значит я не доглядел
smile.gif Пардон
Altair
так, вы с формулой не ошиблись?
или мне разобраться? smile.gif ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.