Страница 1 из 1

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

Добавлено: 01 апр 2008, 21:45
повстанец
почему возникают расхождения при высчитывании факториала в Маткаде и Паскале?
Необходимо вычислить сумму

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.

Прога считает сумму, но ответ не сходится с Маткадом до десятых. Может, ошибка в коде?

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

Добавлено: 01 апр 2008, 21:54
C_O_D_E
1) Чем закрывается последовательность?
2)не совсем верное вычисление факториала. проще посмотреть в разделе "Алгоритмы"

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

Добавлено: 01 апр 2008, 22:04
MOTOCoder
Последовательность как я понял закрывается членом
+(-)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]

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

Добавлено: 01 апр 2008, 22:16
somewhere
Вы о чем? здесь вообще не нужно считать факториал, если присмотрется. На это и ориентирвано задание - не решать задачу "в лоб"

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

Добавлено: 01 апр 2008, 22:19
MOTOCoder
somewhere писал(а): здесь вообще не нужно считать факториал, если присмотрется.
А как же без него?
Даже интересно стало.

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

Добавлено: 01 апр 2008, 22:29
повстанец
Да! здесь нельзя использовать F:=Factor(N-1);
Factor:=F*N;

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

Добавлено: 01 апр 2008, 22:38
somewhere
Ну вы, блин, даете - очень просто:

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

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.

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

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