Текст программы на языке Паскаль
Program Example_9;
Var k, n, znak : integer; S, sl, E : real;
Begin
writeln;
write(‘Введите количество слагаемых суммы N = ‘);
read(n);
write(‘Введите точность вычисления суммы Е = ‘);
read(Е);
S := 1;
znak :=-1;
For k := 2 to n do begin
S := S + znak*k / sqr(k + 14);
znak := - znak
end;
writeln(‘Вариант а) S = ’, S:6:4);
S := 0;
znak := 1;
k := 1;
sl :=1
while abs(sl) >= E do begin
S := S + znak * sl;
k := k + 1;
znak := - znak;
sl := k / sqr(k + 1)
end;
S := S + znak * sl;
writeln(‘Вариант б) S = ’, S:6:4);
readln
end.
Данные для тестирования
1) Для n = 3, Е = 0,2
2) Для n = 4, Е = 0,17
Пример 4.1. Вычислить сумму ряда:
Решение задачи
Выберем схему решения поставленной задачи.
Данная сумма может быть представлена в виде S=u1+u2+u3+u4+….
Начальное значение суммы S=1.
При вычислении суммы к начальному ее значению прибавляется значение первого члена последовательности, затем к полученному значению прибавляется значение второго члена последовательности и так далее. То есть при вычислении суммы циклически проводится операция сложения.
При расчете абсолютного значения дроби надо отметить закономерность:
· Числитель очередного слагаемого равен порядковому номеру члена суммы (обозначим его переменной k).
· Знаменатель очередной дроби (обозначим его zn) можно получить путём умножения знаменателя предыдущей дроби на выражение 2*k*(2*k+1). При этом необходимо задать начальное значение zn = 1.
В варианте а) число членов суммы заранее известно (равно N), и для решения задачи удобно использовать цикл с параметром.
|
|
В варианте б) значение очередного слагаемого следует запомнить в некоторой переменной (sl), чтобы использовать его при проверке условия прекращения вычислений – модуль последнего слагаемого должен быть меньше заданной величины e.
Вычисление суммы в варианте б) организуем с помощью цикла repeat: до тех пор пока очередное слагаемое по модулю не станет меньше e (в алгоритме обозначим её Е), будем выполнять действия в цикле.После завершения цикла искомая сумма будет вычислена.
Блок-схема алгоритма
Текст программы на языке Паскаль
Program Example_10;
Var k, n, zn : word; S, sl, E : real;
Begin
writeln;
write(‘Введите количество слагаемых суммы N = ‘);
read(n);
write(‘Введите точность вычисления суммы Е = ‘);
read(Е);
S := 0;
zn := 1;
For k := 1 to n do begin
zn := zn*2*k*(2*k+1);
S := S + k / zn
end;
writeln(‘Вариант а) S = ’, S:6:4);
S := 0;
zn := 1;
k := 1;
repeat
zn := zn*2*k*(2*k+1);
sl := k / zn
S := S + sl;
k := k + 1;
until abs(sl) < E;
writeln(‘Вариант б) S = ’, S:6:4);
readln
end.
Данные для тестирования
1) Для n = 3, Е = 0,0002
2) Для n = 2, Е = 0,01
ФУНКЦИОНАЛЬНЫЕ РЯДЫ
В задачах этой темы для заданного действительного x необходимо вычислить значение суммы S(x).
Каждая задача должна решаться в двух вариантах:
а) задано число членов суммы N;
б) вычисление производить до тех пор, пока очередной член вычисляемой суммы не станет по модулю меньше заданного значения e. Все последующие слагаемые в S входить не должны.
|
|
При решении задач данной темы для реализации варианта а) должен использоваться оператор цикла с параметром (for), а для реализации варианта б) – оператор цикла с постусловием (repeat) или оператор цикла с предусловием (while) – это (как и для задач предыдущей темы) определяет конкретный преподаватель.
Принципы решения задач из этой темы такие же, как и для вычисления числовых рядов. Отличие их состоит лишь в том, что в качестве исходных данных появляется ещё действительная переменная х, значение которой следует подбирать таким, чтобы при проверке расчеты оказались не слишком сложными, и каждое следующее слагаемое ряда было по модулю меньше предыдущего.
Пример 5.1. Вычислить сумму ряда:
Решение задачи
Выберем схему решения поставленной задачи.
Данная сумма может быть представлена в виде S=u1-u2+u3-u4+….
Начальное значение суммы равно 0.
При вычислении суммы к начальному ее значению прибавляется значение первого члена последовательности, затем из полученного значения вычитается значение второго члена последовательности, затем прибавляется значение третьего члена, затем вычитается значение четвертого члена суммы и так далее. То есть при вычислении суммы необходимо учитывать чередование знака слагаемых.
|
|
Для учета такого чередования введём дополнительную переменную Znak, которая будет принимать значения либо 1, либо –1. Начальное значение знака
Znak=1. Чередование значений переменной будем получать циклическим умножением переменной на –1, то есть проводить вычисления по формуле .
При вычислении значения суммы надо к предыдущему значению суммы прибавить значение модуля очередного слагаемого, умноженного на знак.
При расчете абсолютного значения дроби надо отметить закономерность:
· Числитель очередного слагаемого представляет собой стандартную функцию cos, аргументом которой является произведение порядкового номера члена суммы (обозначим его переменной k) на переменную х, то есть cos(k*x).
· Знаменатель очередной дроби можно представить в виде произведения двух сомножителей: квадрата выражения (2*k-1) и очередной степени переменной х (обозначим эту часть переменной st), которую можно получить путём умножения значения st предыдущей дроби на x. Зададим начальное значение st = 1.
В варианте а) число членов суммы заранее известно (равно N), и для решения задачи удобно использовать цикл с параметром.
|
|
В варианте б) значение очередного слагаемого следует запомнить в некоторой переменной (sl), чтобы использовать его при проверке условия прекращения вычислений – модуль последнего слагаемого должен быть меньше заданной величины e.
Вычисление суммы в варианте б) организуем с помощью цикла repeat: до тех пор пока очередное слагаемое по модулю не станет меньше e (в алгоритме обозначим её Е), будем выполнять действия в цикле.После завершения цикла искомая сумма будет вычислена.
Блок-схема алгоритма
Дата добавления: 2018-04-04; просмотров: 461; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!