Составим программу вычисления функции
В зависимости от значения переменной x реализуется вычисление суммы или произведения. В теле цикла необходимо вычислить значение очередного слагаемого u:=u*x/n при текущем n и осуществить накопление суммы по формуле S:=S+u. Перед выполнением цикла значение переменной S должно быть нулевым (S:=0).
Вычисление произведения организуется с помощью аналогичной циклической структуры с параметром. В данном случае необходимо вычислить сомножитель u:=1+x/(n+2) и произведение по формуле P:=P*u. Перед выполнением цикла переменной P должно быть присвоено значение 1 (P:=1).
Для обеспечения универсальности алгоритма обозначим предел суммирования через KS, а предел произведения через KP и обеспечим их ввод в программе в качестве исходных данных. На рис. 1.1 приведена блок-схема алгоритма решения задачи.
Начало |
X<=2 |
s=0 u=1 |
n =1, KS |
u=u*X/n s=s+u |
x, KS, KP |
z=s*(x+1)/2 |
да |
p=1 |
n =0, KP |
p=p*(1+x/(n+2)) |
z=(sin(X)+cos(X))/(2+sin(X))*P |
нет |
X, Z |
Конец |
|
|
Рис. 1.1. Схема алгоритма вычисления суммы и произведения.
Текст программы имеет следующий вид:
{Цель: вычисление сложной функции (конечная сумма и произведение}
{Переменные:z-значение функции;X-аргумент функции,S-сумма }
{ P-произведение;u-слагаемое(сомножитель) }
{ n-параметр цикла для суммы и произведения }
{ KS –число слагаемых,KP-число сомножителей }
program Sum_Mul;
var
P,S,T,u,x,z: real;
n,KS,Kp:integer;
Begin {Sum_Mul}
{ввод исходных данных}
Wrileln('введите X,KS,KP');
Read(X,KS,KP);
if X<=2 {выбор формулы}
then
begin {вычисление суммы}
S:=0;
u:=1;
for n:=1 to KS do
begin
u:=u*X/n;
S:=S+u;
end;
z:=S*(X+1)/2;
end
else
begin {вычисление произведения}
P:=1;
for n:=0 to KP do
P:=P*(1+X/(n+2));
z:=(sin(X)+cos(X))/(2+sin(X))*P;
end;
Writeln('X=',X:7:2,'z=',z:7:2);
End.{Sum_Mul}
ИТЕРАЦИОННЫЕ ЦИКЛЫ. ВЫЧИСЛЕНИЕ СУММЫ БЕСКОНЕЧНОГО РЯДА
Подготовка к работе
По указанной литературе и методическим указаниям к данной работе изучить порядок работы. Ответить на контрольные вопросы.
Контрольные вопросы
1. Что такое итерационный цикл? С помощью каких операторов организуется?
2. Какие ограничения налагаются на использование управляющей переменной (параметра цикла) в цикле for?
3. В каких случаях предпочтительнее использовать для организации циклов оператор for? Что записывается в заголовке этого оператора?
4. Что представляет собой составной оператор? Как ограничиваются операторы, объединённые в составной оператор?
5. Что такое рекуррентная формула? Правило записи рекуррентной формулы.
6. Что такое вложенные циклы? Какие дополнительные условия необходимо соблюдать при организации вложенных циклов?
7. В чём отличия операторов повтора while и repeat?
|
|