Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум. Информатика.doc
Скачиваний:
11
Добавлен:
06.11.2018
Размер:
2.13 Mб
Скачать

Алгоритм

Должен содержать следующие шаги:

1. Задание исходных данных в разделе констант (для A и B);

2. Ввод исходных данных (Dx и EPS);

3. Определение длины внешнего (по X) цикла;

4. Печать заголовка таблицы;

5. Внешний цикл (for) по X;

1) вычисление X;

2) задание начальных значений J, С и S;

3) внутренний цикл вычисления S;

a) расчет С;

б) расчет S;

в) расчет J;

г) проверка условия окончания цикла;

4) печать строки таблицы с результатами;

6. Завершение программы (печать нижней рамки таблицы, задержка).

Текст программы.

program Tabl_Of_Fx;

{

Программа Лабораторной работы N 6 Вариант N 31.

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

А.Я.Умненькая, ст. гр. Я-007

}

CONST {при описании переменным зададим исходные значения }

A : real = -0.05;

B : real = 0.04;

VAR

X,Dx,S,C,EPS : real;

Nx,J,K,i : integer; {I – для счетчика цикла по X }

fout : text; { для выходного файла }

LABEL

Vvod_Dx, Vvod_EPS;

BEGIN

assign(fout,'Umnik6.res');

rewrite(fout);

{ Ввод исходных данных (Dx и EPS) }

Vvod_Dx:

writeln ('Для X на отрезке[-0.05, 0.04]введите шаг счета');

readln(Dx);

if (Dx <0.002) or (Dx > 0.04) then

begin

writeln('Недопустимое значение!');

goto Vvod_Dx;

end;

Vvod_eps:writeln('введите минимальный размер слагаемого);

readln(EPS);

if (EPS < 1e-9) or (EPS > 1e-2) then

begin

writeln('Недопустимое значение!');

goto Vvod_EPS;

end;

{ Определение длины внешнего (по X) цикла }

Nx := Trunc((B-A)/Dx) + 1;

{ печать исходных данных }

writeln(fout,' Исходные данные');

writeln(fout,' Интервал X: [',A:5:2,B:5:2,']);

writeln(fout, Шаг X:',Dx:5:3, ', шагов:',Nx:3,',

точность:',EPS:1);

{ Печать заголовка таблицы }

writeln(fout,' Результаты расчетов':30);

writeln(fout,'| X | F(x) | S ',

' |Слагаемых|');

writeln(fout,'|-------|-----------|-----------|',

'---------|');

{ Внешний цикл (for) по X }

for i:=1 to Nx do

begin

{ вычисление X }

X := A + Dx*(i-1);

if X > B then X := B; { уточнение на конце интервала}

{ задание начальных значений J, C, S и числа слагаемых K}

J := 1;

C := 1;

S := C;

K := 1;

Repeat { внутренний цикл вычисления S }

C := -C * X*J/(J+1);

S := S + C;

K := K + 1;

J := J + 2;

until (abs(C) < EPS) or (K >100);

{ печать строки таблицы с результатами }

write(fout,'| ',X:5:2,' |', 1.0/Sqr(1.0+X):10:7,

' |');

writeln(fout,S:10:7,' |',K:6,' |');

end;

{ Завершение программы (печать нижней рамки таблицы,

закрытие файлов, задержка) }

writeln(fout,'|---------------------------------',

'--------|');

close(fout);

readln;

END.

Результаты расчета

Файл UMNIK6.RES будет в этом случае содержать:

Исходные данные

Интервал X: [-0.05 0.04],

Шаг X:0.010, шагов: 9, точность: 1.0E-0006

Результаты расчетов

| X | F(x) | S |Слагаемых|

|-------|-----------|-----------|---------|

| -0.05 | 1.1080332 | 1.0259783 | 6 |

| -0.04 | 1.0850694 | 1.0206207 | 5 |

| -0.03 | 1.0628122 | 1.0153462 | 5 |

| -0.02 | 1.0412328 | 1.0101525 | 5 |

| -0.01 | 1.0203041 | 1.0050378 | 4 |

| 0.00 | 1.0000000 | 1.0000000 | 2 |

| 0.01 | 0.9802960 | 0.9950372 | 4 |

| 0.02 | 0.9611688 | 0.9901475 | 5 |

| 0.03 | 0.9425959 | 0.9853293 | 5 |

|-----------------------------------------|