Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт по лабораторной работе по Паскалю

..doc
Скачиваний:
11
Добавлен:
01.05.2014
Размер:
73.22 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

СПбГЭТУ «ЛЭТИ»

Центр Информационных Технологий

Кафедра МОЭВМ

Отчет по лабораторной работе:

«Программирование циклических вычислительных процессов с заранее неизвестным числом повторений в среде Pascal

Преподаватель: Чередниченко А.И.

Студенты гр.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.