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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 19:51   #1
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию Вычисление функции заданной в виде разложения в ряд

Здравствуйте, господа программисты. Прошу Вашей помощи в решении следующей задачи:Разработать алгоритм и составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью Eps>0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше Eps:|ак|<Eps.
Вот наработки:
Код:
procedure InputData(var Eps,h:extended; var x0,x1:longint);
begin
  repeat
    writeln('Введите точность вычислений (Eps>0) Eps=');
    readln(Eps);
  until (Eps>0);
  writeln('Введите начальное значение x=');
  readln(x0);

  repeat
    writeln('Введите конечное значение x(конечное значение больше начального)=');
    readln(x1);
  until (x1>x0);

  repeat
    writeln('Введите шаг вычислений (h>0) h=');
    readln(h);
  until (h>0);
end;

procedure CalculationMemberOfSome(Eps,h,x:extended; var k:longint; var a:extended);
begin
  if k=0 then
    a:=1
  else
    a:=a*sqr(x)/(2*k*(2*k+1));
    inc(k);
end;

function F(x0,x1:longint; h,a,Eps:extended; var k:longint; var x:extended):extended;
var res:extended;
begin
  x0:=x1;

  repeat

    k:=0;
    res:=0;

    repeat
      CalculationMemberOfSome(Eps,h,x,k,a);
      res:=res+a;
    until (abs(a)<Eps);
    writeln('|',1+x-x0:10:0,'|':6,x:10:3,'|':5,'',res:16:10,'|':2,k:6,'|':9);
    x:=x+h;
  until (x>x1);
  writeln('|---------------|--------------|-----------------|--------------|')
  F:=res;
end;

procedure OutputData(x0,x1,k:longint; x,h,a,Eps:extended);
begin
  writeln('|---------------|--------------|-----------------|--------------|');
  writeln('|       №       |       x      |     f(x)        | N члена ряда |');
  writeln('|---------------|--------------|-----------------|--------------|');
end;

var Eps,h,a,x:extended;
    x0,x1,k:longint;
begin
  clrscr;
  InputData(Eps,h,x0,x1);
  OutputData(x0,x1,k,x,h,a,Eps);
  F(x0,x1,h,a,Eps,k,x);
  readln;
end.
Ошибка заключается в том, что программа вычисляет не все значения. Например если задать х начальное =-10, а х конечное - 10, и шаг h=1, то выведет 10 чисел, а не 20 как должно быть. Помогите пожалуйста. Заранее огромное спасибо!!!
StudeHt вне форума Ответить с цитированием
Старый 02.05.2009, 20:01   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В функции F точку с запятой забыли:
Код:
  writeln('|---------------|--------------|-----------------|--------------|');
В функции F вы пишете:
Код:
 x0:=x1;
а надо:
Код:
x:=x0;
И еще, зачем передавать столько переменных в OutputData, если вы их там не используете? )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 02.05.2009 в 20:03.
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 20:08   #3
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию

Спасибо огромное Sazary. Про функцию OutputData: я ее хотел сделать по другому, но программа не работала совсем, а когда изменил, то про параметры совсем забыл. Спасибо Вам еще раз!
StudeHt вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление cos разложением в ряд bondik Общие вопросы C/C++ 4 08.01.2014 23:40
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся.... EVIL Помощь студентам 3 22.11.2009 02:37
Вычисление значений тригонометрических функций на основе разложения в ряд Маклорена Gangzta Помощь студентам 3 10.01.2009 15:47
Вычисление функции с заданной точностью. Absent Помощь студентам 1 21.11.2008 13:30