расхождения в вычислениях факториала

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
повстанец
Сообщения: 18
Зарегистрирован: 13 мар 2008, 19:50

почему возникают расхождения при высчитывании факториала в Маткаде и Паскале?
Необходимо вычислить сумму

1-x^2/3!+x^4/5!-x^6/7!+...

написал код:

program labfivetwo;
var a,x, b,f:real;
n,i:integer;
s:extended;
begin
write('введите x=');
read(x);
write('введите n>=1. n=');
read(n);
f:=1;
for i:=1 to n do
begin
if odd(i) then a:=-1
else a:=1;
b:=exp(-1*ln(i))*exp((2*i)*ln(x))/(2*i+1);
s:=f+a*b;
end;
writeln('summa',s:8:5);
end.

Прога считает сумму, но ответ не сходится с Маткадом до десятых. Может, ошибка в коде?
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

1) Чем закрывается последовательность?
2)не совсем верное вычисление факториала. проще посмотреть в разделе "Алгоритмы"
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Последовательность как я понял закрывается членом
+(-)x^(2+2n)/(3+2n)!
+- в зависимости от четности n, хотя здесь это не принципиально.
А вот метод вычисления факториала действительно какой-то странный.

Я, например, считаю факториалы так:
[syntax='Delphi']
function Factor(N:integer):Integer;
var
F:integer;
begin
while N>0 do
begin
F:=Factor(N-1);
Factor:=F*N;
end;
end;
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Вы о чем? здесь вообще не нужно считать факториал, если присмотрется. На это и ориентирвано задание - не решать задачу "в лоб"
It's a long way to the top if you wanna rock'n'roll
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

somewhere писал(а): здесь вообще не нужно считать факториал, если присмотрется.
А как же без него?
Даже интересно стало.
Ни что так не ограничивает фантазию программиста, как компилятор...
повстанец
Сообщения: 18
Зарегистрирован: 13 мар 2008, 19:50

Да! здесь нельзя использовать F:=Factor(N-1);
Factor:=F*N;
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Ну вы, блин, даете - очень просто:

Код: Выделить всё

var
s, x, xn : real;
t : integer;

begin
s := 1; x := 3; xn := 1; 
For t := 1 to 10 do
    begin
    xn := -xn*x*x / (t*2) / (t*2+1);
    s := s + xn;
    end;
Writeln(s:5:9);
end.
It's a long way to the top if you wanna rock'n'roll
sasha3050
Сообщения: 26
Зарегистрирован: 04 окт 2008, 23:13

Пожалуйста помогите очень нужно!!!!!!!!!Написать программу на Paskal, которая вычисляет среднюю длину слов в файле, который содержит текст.В данном случае будет считатьтся любая строка символов, которая начинается и заканчивается одним с следующих елеметов: пробел, запятая, точка, начало строки и конец строки.В программе должна быть обозначена функция, которая получает в качестве аргумента поток ввода с файла.
Ответить