Отчёт по лабораторной работе по Паскалю
..docФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
СПбГЭТУ «ЛЭТИ»
Центр Информационных Технологий
Кафедра МОЭВМ
Отчет по лабораторной работе:
«Программирование циклических вычислительных процессов с заранее неизвестным числом повторений в среде Pascal 7»
Преподаватель: Чередниченко А.И.
Студенты гр.8102: Никифоров Д.Ж.
Соловей А.А.
2008
Задача
Разработать на языке Паскаль программу вычисления суммы первых N членов бесконечного степенного ряда для N=min(100, Ni), где Ni – номер очередного слагаемого, значение которого по модулю меньше Е (0<E<<1).
, где 0 < x 2
Вид функции: ln(x).
Исходные данные: x (аргумент функции),
E (эпсилон)
N=100 (ограничение на количество суммируемых слагаемых)
Итог: S (сумма всех слагаемых степенного ряда),
n ( количество слагаемых степенного ряда)
f (точное значение функции ln(x)),
(погрешность вычисления приближенного значения функции)
Формализованная постановка задачи
Исходными данными являются вид степенного ряда и область допустимых значений аргумента, выбираемые в соответствии с номером индивидуального задания, а также значение аргумента Х и значение Е. В последней графе таблицы приведены функции, к которым сходятся соответствующие степенные ряды.
Дан вид степенного ряда
относящийся к функции f(x)=ln(x), причем вводимый аргумент x должен принадлежать промежутку 0 < x 2.
- геометрическая прогрессия =>=>
, y1=x-1, , где:
yn-1 – коэффициент приращения,
yn – очередное слагаемое,
n – количество слагаемых, задействованных при расчете приближенного значения функции, ограниченное величиной N=100,
S – сумма задействованных членов ряда,
f(x)=ln(х) – точное значение функции,
Δ=|S-f(x)| - погрешность результата,
Члены данного ряда складываются до тех пор, пока очередное слагаемое не станет меньше введенного значения E (эпсилона), которое в свою очередь принадлежит промежутку (0;1).
Макет ввода/вывода данных:
<значение E> - ввод значения E
<проверка E на принадлежность промежутку (0;1) >
<значение x> - ввод значения x
<проверка x на принадлежность промежутку (0;2] >
<вычисление суммы ряда и количества слагаемых>
<вычисление значения функции>
<вычисление погрешности>
Вывод результата.
Алгоритмизация
Примеры:
№1
eps=0.1
x=1.2
S=0.18
n=1
ln(x)=0.182321557
Δ=0.002322
№2
eps=0.1e-5
x=0.1
S=-2.3025773372
n=88
ln(x)=-2.3025850930
Δ=7.756*10-6
№3
eps=0.1e-10
x=0.1
S=-2.3025831423
n=100
ln(x)=-2.3025850930
Δ=1.95*10-6
Программный код:
program cbrl;
{программа для вычисления суммы бесконечного степенного ряда}
{Автор - Никифоров Д.Ж., группа 8102}
{Дата создания - 23.12.2008}
{Исходные данные: x,eps}
{Результат:n,f,s,delta}
var
s: real; {сумма ряда}
y: real; {текущее слагаемое}
x:real; {аргумент}
f: real; {значение функции}
delta:real; {погрешность результата}
eps: real; {эпсилон}
n: integer; {счетчик слагаемых}
begin
repeat {цикл для выбора эпсилон <1}
repeat {цикл для выбора положительного эпсилон}
write ('eps=');
readln (eps);
until eps<1;
until eps>0;
repeat {цикл для выбора x>0}
repeat {цикл для выбора x<=2}
write ( x=');
readln (x);
until x>0;
until x<2;
n:=0; {обнуление счетчика шагов}
y:=x-1;
s:=y;
repeat {цикл для вычисления суммы}
n:=n+1;
y:=y*(1-x)*n/(n+1);
s:=s+y; {вычисление суммы}
until abs(y)<=eps;
n:=n+1; {вычисление слагаемых}
f:=ln(x); {вычисления значения функции}
delta:=abs(s-f); {вычисления погрешности}
writeln ('n=', n);
writeln ('s=', s); вывод результата
writeln ('f(x)=', f);
writeln ('delta=', delta);
readkey{просмотр результата}
end.