IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Вычисление факториала методом Стирлинга, решаем задачку
Гость_Andrew
сообщение 20.10.2004 14:13
Сообщение #1


Гость






Собсно сабж.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
Гость_Andrew
сообщение 20.10.2004 14:19
Сообщение #2


Гость






Формула стерлинга выглядит так

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
сообщение 20.10.2004 14:31
Сообщение #3


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


По-моему эта формула должна выглядеть так:
Квадратный корень(2*pi*n) *((n/e)^n)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amro
сообщение 20.10.2004 14:57
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


А по моему так, без всяких тама корней, хотя может я и ошибаюсь
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;
......................


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atos
сообщение 20.10.2004 15:00
Сообщение #5


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Amro Sqrt - это и есть квадратный корень smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amro
сообщение 20.10.2004 15:04
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


Цитата
Квадратный корень(2*pi*n) *((n/e)^n)

Atos В смысле не всё выражение под корнем!!!!


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atos
сообщение 20.10.2004 15:07
Сообщение #7


Прогрессор
****

Группа: Модераторы
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


А, понятно... Я так и имел в виду - под корнем всё, что в первых скобках
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Amro
сообщение 20.10.2004 15:09
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


ИМХО Значит я не доглядел
smile.gif Пардон


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 20.10.2004 18:14
Сообщение #9


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


так, вы с формулой не ошиблись?
или мне разобраться? smile.gif ;)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"