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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 05:56   #1
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию pascal ряды

Здраствуйсте друзья аки форумчанины. Возникла проблема. Задали написать программу, которая вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью e>0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше e. Вот исходный текст программы:
Код:
program sum(input, output);


uses math;
procedure InputOfIntervalsOfCalculation (var a,b:double);
begin
    writeln ('Программа для вычисления таблицы значений функции, заданной в виде разложения в ряд');
    writeln ('Для продолжения нажмите клавишу Enter');
    readln;
    writeln('Введите нижнюю границу интервала исчисления');
    readln(a);
    writeln('Введите верхнюю границу интервала исчисления');
    readln(b);

    if a >= b then
    begin
        writeln('Верхняя граница должна быть больше нижней. Остановка');
        readln;
        halt
    end;
end;

procedure InputTabulation(var step:double);
begin
    writeln('Введите шаг табуляции');
    readln(step);
end;

procedure InputEpsilon(var eps:double);
begin
    writeln('Введите требуюмую точность');
    readln(eps);
    if eps < 1e-6 then
    begin
        writeln('Заданная точность не достижима, задайте число меньше 1e-6');
        halt
    end;
end;

procedure ConclusionOfEntranceParametrs(a,b:double; step:double;eps:double);
begin
    writeln('Табулирую от ', a:4:2, ' до ', b:4:2, ' с шагом ', step:4:2, ' с точностью ', eps:4:2);
    writeln('   No    X                       f(X)                   Num_members');
end;


procedure NumberCalculation(var a,b,step,eps:double;var line_no:integer;var res,x,s:double);
var
    elem: double;
    fraction_sq: double;
    power: integer;
    num_lines:integer;
begin
    num_lines := floor((b - a) / step) + 1;
    for line_no := 1 to num_lines do
    begin
        x := a + step * (line_no - 1);

        elem := (x - 1) / (x + 1);
        fraction_sq := elem * elem;
        elem := 2 * elem;
        res := elem;

        power := 1;
        repeat
            power := power + 2;
            elem := elem * fraction_sq / power;
            res := res + elem;
        until abs(elem) < eps;
        s:= (power - 1) div 2;
         writeln(line_no:4, '   ', x:4:0, '                     ', res:8:6, '                    ', s:4:0);

       end;
end;

var
a, b: double;
    eps: double;
    step: double;
    line_no:integer;
    res,x,s:double;
begin

InputOfIntervalsOfCalculation (a,b);
InputTabulation(step);
InputEpsilon(eps);
ConclusionOfEntranceParametrs(a,b,step,eps);
NumberCalculation(a,b,step,eps,line_no,res,x,s);

writeln ('Для выхода из программы нажмите клавишу Enter');
 readln;
end.
А проблема заключается в следующем...
Программа считает не верно и выводит только последнее значение.
Помогите исправить задачку.
Во вложении сам ряд.Заранее спасибо.
Изображения
Тип файла: png 1.PNG (2.5 Кб, 131 просмотров)
world12_tk вне форума Ответить с цитированием
Старый 03.05.2009, 11:48   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Переставь 1 строчку.
Код:
power := 1;
        repeat
            power := power + 2;
            elem := elem * fraction_sq / power;
            res := res + elem;
              writeln(line_no:4, '   ', x:4:0, '                     ', res:8:6, '                    ', s:4:0);

        until abs(elem) < eps;
        s:= (power - 1) div 2;
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37
Работа по Паскалю, Ряды Тэйлора. Dexterello Помощь студентам 4 28.11.2008 05:53
Задача на ряды Till Паскаль, Turbo Pascal, PascalABC.NET 6 24.06.2008 09:21
Pascal Vedma Помощь студентам 2 22.12.2007 15:25