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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 17:45   #1
RavenGuitarist
Новичок
Джуниор
 
Регистрация: 21.08.2011
Сообщений: 4
По умолчанию Pascal ошибка при вычислении суммы ряда с заданной точностью

Ну,вобщем я разобрался,но вот тут возник такой ступор.Пишет непонятную ошибку,и не пойму почему.Вроде ж должно работать.
Посмотрите кто шарит,плиз.
Задание и код программі вместе с ошибкой- в документе.
Ну и тут кину:
Код:
Program A4;
const eps=0.0001;
var a,S: real; n: longint;
begin
     S:=0; n:=1; a:=1;
     while abs(a)>=eps do
     begin
          if odd(n) then S:=S-a else S:=S+a;
          n:=n+1;
          a:=exp(ln(-1)*n)*(sqrt(n+1))/(sqrt((n*n*n)+1));
     end;
     writeln('Ñóìà=',S:6:10);
     writeln('ê³ëüê³ñòü ÷ëåí³â - ',n:3);
     writeln('a=',a:6:10);
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Вложения
Тип файла: doc Ошибка.doc (21.5 Кб, 20 просмотров)

Последний раз редактировалось Serge_Bliznykov; 22.08.2011 в 19:18.
RavenGuitarist вне форума Ответить с цитированием
Старый 22.08.2011, 19:11   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

даже не заглядывая внутрь.

объясните, каким образом Вы собираетесь вычислить
ln(-1) ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.08.2011, 19:15   #3
RavenGuitarist
Новичок
Джуниор
 
Регистрация: 21.08.2011
Сообщений: 4
По умолчанию

А как мне в таком случае записать степень,если не через ln?
RavenGuitarist вне форума Ответить с цитированием
Старый 22.08.2011, 19:22   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

-1 в степени n ?
дык элементарно.

Вариант первый (плохой!!), "в лоб" n раз умножить -1
Вариант второй (хороший): заметить, что
(-1)^n = -1 (для всех нечётных n)
(-1)^n = 1 (для всех чётных n)

пойдёт?..


Цитата:
Код:
if odd(n) then S:=S-a else S:=S+a;
Это, так Вы уже это почти воплотили!...


ДОБАВЛЕНО

я бы такой вариант предложил:
Код:
program A4;
const eps = 0.0001;
var a, aprev, S: real; n: longint;
begin
  S := 0; n := 0;
  a := 0;
  repeat
    n := n + 1;
    aprev := a;
    a := sqrt(n + 1) / sqrt((n * n * n) + 1);
    if odd(n) then S := S - a else S := S + a;
    {    writeln('Отладка: n = ', n: 3, ' a= ', a); }
  until abs(a-aprev) < eps;
  writeln('Сумма=', S: 6: 10);
  writeln('Количество итераций n = ', n: 3);
  writeln('Последний вычисленный a = ', a: 6: 10);
  readln;
end.

Последний раз редактировалось Serge_Bliznykov; 22.08.2011 в 19:36.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.08.2011, 16:11   #5
RavenGuitarist
Новичок
Джуниор
 
Регистрация: 21.08.2011
Сообщений: 4
По умолчанию

О!Так и правда лучше!Сказали что ваш вариант подходит!
Большое спасибо за помощь!Можно тему закрывать.
RavenGuitarist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC. Вычислить сумму ряда с заданной точностью. 0kcanka Помощь студентам 0 16.05.2011 13:22
Составить графический алгоритм и программу для нахождения суммы ряда с заданной точностью ginfix Помощь студентам 1 30.03.2011 23:39
Сумма ряда с заданной точностью MarchZM Общие вопросы C/C++ 0 09.10.2010 16:10
нахождения суммы ряда с заданной точностью E pinch000 Общие вопросы C/C++ 1 06.11.2009 13:03