Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2008, 18:29   #1
die_hard
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 16
По умолчанию Задача на вычисление суммы ряда, Pascal

Здравствуйте.
Вообщем не получается разобраться с условием задачи на вычисление значения суммы ряда с определённой точностью. В смысле, не могу понять чего от меня хотят в этой задаче... Вот она:
"Вычислить сумму ряда s(x) с точностью e=10^-3:
s(x)=-(1+x)^2+(1+x)^4/2-(1+x)^6/3+(-1)^n*(1+x)^2n/n"
В каком смысле надо понимать здесь значение слов "с точностью e"?)
Вот мои размышления по задаче=):
program _;
var s,x,n,e,y,z,t:real;
begin
writeln ('vvedite x:');
readln(x);
n:=1;
e:=0.001;
s:=0;
y:=(1+x);z:=y*y;t:=-1;
while s<e do begin
s:=t*(y*y/n)+s;y:=y*z;n:=n+1;t:=t*t;
end;
writeln('summa = ', s:1:3);
end.
Но в итоге получаются подозрительные ответы...
die_hard вне форума Ответить с цитированием
Старый 06.12.2008, 19:31   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Тосность в данном случае это когда разность между очередной вычисленной суммой и предыдущей будет меньше заданной величины.
while abs(si-s)>=e do
begin
s:=si;
........
si:=si+......
end;
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 21:43   #3
die_hard
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 16
По умолчанию

не могли бы вы скинуть кусок правильного кода?! А то чего-то у меня начали получаться одни нули...
program _;
var s,x,n,e,y,z,t,o,si:real;
begin
writeln ('vvedite x:');
readln(x);
n:=1;
e:=0.001;
si:=0;
y:=(1+x); z:=y*y; t:=-1; o:=y*y;
while abs(si-s)>=e do begin
s:=si;
si:=t*(z/n)+si;
z:=z*o;
n:=n+1;
t:=t*t;
end;
writeln('summa = ', s:1:3);
end.
die_hard вне форума Ответить с цитированием
Старый 06.12.2008, 22:08   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В условии задачи не хватает сведений об х. Дело в том, что при положительных х функция расходится, т.е. значения поочередно полозительные и отрицательные, стремящиеся в разные стороны. Вероятно Вы что-то упустили в условии, типа х<0.
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 22:19   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот написал, но работает при x=[-2,0].
Код:
uses crt;
var x,s,si,p,t:double;
    i:integer;
begin
clrscr;
write('x=');readln(x);
i:=1;p:=-(x+1)*(x+1); t:=p/i; s:=t;//начальные значения при i=1.
while abs(s-si)>=0.001 do
    begin
      si:=s;//присваиваем предыдущее значение
      inc(i);
      p:=p*(-(x+1)*(x+1));
      t:=p/i;
      s:=s+t;//вычисляем новое
    end;
writeln('s=',s:8:4,'   si=',si:8:4);//выводим оба для сравнения и проверки
readln
end.
puporev вне форума Ответить с цитированием
Старый 06.12.2008, 22:21   #6
die_hard
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 16
По умолчанию

Ну не знаю... В условии задачи ничего не говорится о том каким должно быть значение х. Хотя запуская программу из поста #3, ноль постянно получается в результате, независимо от положительного или отрицательного х...((
die_hard вне форума Ответить с цитированием
Старый 06.12.2008, 22:23   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А Вы ее в Экселе прогоните при х=-3 и при х=1 и сами посмотрите, чего зря сомневаться.
puporev вне форума Ответить с цитированием
Старый 07.12.2008, 16:13   #8
die_hard
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 16
По умолчанию

честно говоря, в экселе не силен...(( можете в двух словах объяснить как этот "прогон" можно реализовать?
die_hard вне форума Ответить с цитированием
Старый 07.12.2008, 17:58   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Сделай на бумаге с калькулятором, раз такой отсталый. Возьми например х=2 и считай при n=1,2,3,4,5... и увидишь что ряд расходится в разные стороны и условие никогда не будет выполнено.
puporev вне форума Ответить с цитированием
Старый 07.12.2008, 19:05   #10
die_hard
Пользователь
 
Регистрация: 24.10.2008
Сообщений: 16
По умолчанию

Ну ладно... спасибо!)
die_hard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табулирование функции и суммы функционального ряда forumu Помощь студентам 20 10.12.2010 18:18
Расчитывание суммы бесконечного ряда до определённого значения SLec Помощь студентам 3 17.11.2008 22:18
вычисления суммы ряда kJlaCuk Паскаль, Turbo Pascal, PascalABC.NET 3 17.09.2008 23:24