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

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

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

 
 Ответить  Открыть новую тему 
> Задачка на факториал, Помогите разобраться
Warn
сообщение 22.11.2005 15:30
Сообщение #1


Гость






Здравствуйте! Помогите, пожалуйста, решить задачу.
Код

        n   2n-1
∞   (-1)   x                            -5
∑   −−−−−−−−−−−−    , E (эпсилон)=0,2*10    , |x|≤1
n=1   (2n)!

Извините за плохое оформление, так получилось.

Я пробовал решить:

Код

Program Factor;
Const e=1E-5;
Var n,x:Integer; Ai,S,Fact:Real; Minus:Boolean;
Begin
WriteLn('BBeDuTe 4ucLo');
 ReadLn(x);
 n:=1;
 Minus:=True;
 Fact:=1;
 S:=0;
 Ai:=0;
Repeat
 Fact:=Fact*2*n;
 Ai:=Exp((2*n-1)*Ln(x))/Fact;
 If Minus Then Ai:=Ai*(-1);
 S:=S+Ai;
 Minus:=Not Minus;
 n:=n+1;
Until
 Abs(Ai)<e;
Writeln('S = ',s);
Readln;
End.


Не пойму, где применить E (эпсилон)=0,2*10^(-5) , |x|≤1.
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2005 16:07
Сообщение #2


Гость






Цитата
Не пойму, где применить E (эпсилон)

Ну так ты же применил его в Until (...) wink.gif

А вообще-то сумма ряда по-другому должна считаться:
const E = 1E-5;
var
s, next: double;
x: double;
n: integer;

begin
x := 0.975; { Ну, или запрашивать у пользователя... }
next := x / 2; s := - next;
n := 2;
Repeat
next := next * (sqr(x) / (pred(2*n)*(2*n)));
s := s + (1 - 2*Byte(Odd(n))) * next;
inc(n);
Until next < E;
writeln('s = ', s:10:6);

end.

Почитай еще вот это, там рассмотрено несколько разложений в ряды...
FAQ: Общие вопросы по математике -> Разложение функции в ряд
 К началу страницы 
+ Ответить 
Warn
сообщение 22.11.2005 22:26
Сообщение #3


Гость






Спасибо, что не оставили без внимания! Только можно попроще? Мы еще не проходили такие строки как например
Цитата
s := s + (1 - 2*Byte(Odd(n))) * next;

Вот.. unsure.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2005 22:35
Сообщение #4


Гость






Строка
s := s + (1 - 2*Byte(Odd(n))) * next;
полностью аналогична вот этому:
if n mod 2 = 0 then s := s + next
else s := s - next;
Можешь заменить, и все будет так же работать...
 К началу страницы 
+ Ответить 
Warn
сообщение 23.11.2005 7:15
Сообщение #5


Гость






Тогда получается, что эта строчка неверная
Цитата
next := next * (sqr(x) / (pred(2*n)*(2*n)));


Нужно ведь не просто квадратный корень вычислить, а x^(2n-1). Значит её нужно заменить на


next := next * (Exp((2*n-1)*Ln(x)) / (pred(2*n)*(2*n)));


Я правильно понял?
 К началу страницы 
+ Ответить 
Atos
сообщение 23.11.2005 7:57
Сообщение #6


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

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

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


Это не квадратный корень, а квадрат. Что бы получить следующее слагаемое, мы должны умножить предыдущее на x в квадрате и ещё что-то там. Обрати внимание
Цитата
next := next * (sqr(x) / (pred(2*n)*(2*n)));
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Warn
сообщение 23.11.2005 9:37
Сообщение #7


Гость






Да, простите за утренний тупняк-я имел ввиду не корень, а квадрат. Но проблема-то остатся: в числителе x в степени 2n-1. А я смотрю там для вычисления используется только Sqr(x). Даже если вместо -1 можно ислользовать Pred (хотя можно было разделить на х, т.к. х^-1=1/x), то в степени остается 2n! Или я чего-то не понимаю?
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2005 9:43
Сообщение #8


Гость






Warn, просыпайся окончательно, я вижу, ты еще не совсем проснулся wink.gif

Смотри, как изменяется числитель в зависимости от N (знак брать не будем, он учитывается отдельно)

n = 1: числитель = x
n = 2: числитель = x^3
n = 3: числитель = x^5
n = 4: числитель = x^7
n = 5: числитель = x^9
...

Чувствуешь закономерность? Просто домножаем предыдущий на x^2, и делим на (2n-1)*2n
 К началу страницы 
+ Ответить 
Warn
сообщение 25.11.2005 6:43
Сообщение #9


Гость






Спасибо всем, буду разбираться! smile.gif
 К началу страницы 
+ Ответить 

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

 



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