Практикум по программированию Обработка числовых данных
.pdf
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
101 |
|
|
Из сравнения общей формулы члена ряда (4.1) и рекуррентной (4.2) видно, что рекуррентная формула значительно упро-
щает вычисления. Применим ее для N = 2, 3 и 4, зная, что R1 = 12 X :
R2 |
= |
(2 × 2 - 1)X |
× |
1 X |
= 1 × 3 |
X 2; |
|
|
|
2 × 2 |
|
2 |
2 × 4 |
|
|
R = (2 × 3 - 1)X |
× 1 × 3 X 2 = 1× 3 × 5 X 3; |
|
|||||
3 |
|
2 × 3 |
|
2 × 4 |
|
2 × 4 × 6 |
|
|
|
|
|
|
|||
R4 |
= |
(2 × 4 - 1)X |
× |
1 × 3 × 5 X 3 |
= 1 × 3 × 5 × 7 |
X 4. |
|
|
|
2 × 4 |
|
2 × 4 × 6 |
2 × 4 × 6 × 8 |
|
|
Способы вычисления значения члена ряда
Для вычисления значения члена ряда, в зависимости от его вида, может оказаться предпочтительнее использование ли бо общей формулы члена ряда, либо рекуррентной формулы, либо смешанного способа вычисления значения члена ряда, когда для одной или нескольких частей члена ряда используют рекуррентны е формулы, затем их значения подставляют в общую формулу члена ряда. Например,
äëÿ ðÿäà |
|
1 + |
|
|
1 |
|
+ |
|
1 |
|
+ ... + |
|
|
|
|
1 |
|
+ ... проще вычислять |
||||||||||||
|
2 × 3 |
3 × 5 |
|
N (2N - 1) |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
значение члена ряда RN по его общей формуле RN |
= |
|
|
1 |
|
|||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||
|
N (2N - 1) |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
(сравните с R |
N |
= |
(N - 1)(2N - 3) |
R |
N |
− |
по рекуррентной формуле); |
|||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
N (2N - 1) |
|
|
|
1 |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
äëÿ ðÿäà |
1 + |
|
|
|
2 |
+ |
|
|
|
23 |
|
+ ... |
+ |
2N |
+ ... |
|
лучше воспользоваться |
|||||||||||||
1 |
× 2 |
1 |
× 2 × |
3 |
N ! |
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
рекуррентной формулой RN = |
|
2 |
RN −1; |
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
N |
|
|
|
|
|
|
|
|||||||||||||||||||||||
äëÿ ðÿäà |
X 3 ln(X 3) |
+ |
X 6 ln(X |
6) |
+ ... + |
X 3N ln(X 3N ) |
+ ... |
следу- |
||||||||||||||||||||||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
1× 2 |
|
|
|
|
N ! |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
ет применить смешанный способ, вычисляя AN = X 3N по рекур-
рентной формуле AN = X 3AN−1, N = 2, 3, ...… ïðèA1 = 1; BN = N ! — также по рекуррентной формуле BN = N BN−1, N = 2, 3, ...… ïðèB1 = 1,
а затем член ряда RN — по общей формуле, которая примет вид
RN = AN ln(AN ).
BN
102 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
4.16.Примеры выполнения задания
1.Вычислить с точностью e для 0 £ X £ 45°:
– приближенное значение функции cos X по формуле
|
X 2 |
X 4 |
+ |
X 2N |
|||
S = 1- |
|
+ |
|
- ××× + (-1)2N |
1 |
|
+ ×××, |
2! |
4! |
|
(2N )! |
||||
используя рекуррентную формулу для вычисления члена
|
|
-R |
|
− X 2 |
|
|
ðÿäà RN |
= |
|
N |
1 |
; |
|
(2N |
- |
1)(2N ) |
||||
|
|
|
–точное значение функции cos X;
–абсолютную и относительную ошибки приближенного зна- чения.
program Project1; {$APPTYPE CONSOLE} uses
SysUtils,
Math; {$DEFINE DBG} const
//Коэффициент для перевода из градусов в радианы K=Pi/180;
var
Eps: Extended =1E-8;
X: Extended =15;
R, S, Y, D: Extended; N:Word;
begin {$IFNDEF DBG}
//Операторы, не используемые при отладке Write('Введите требуемую точность: '); ReadLn(Eps);
Write('Введите значение угла в градусах: '); ReadLn(X);
{$ENDIF}
//Перевод X в радианы и возведение в квадрат D:=Sqr(K*X);
//Задание начальных значений переменным N:=0;
R:=1;
S:=0;
//Цикл для вычисления членов ряда
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
103 |
|
|
|
|
//и накопления их суммы. |
|
|
//Выполнять, |
|
|
//пока модуль очередного члена ряда больше Eps. |
|
|
while Abs(R)>Eps do |
|
|
begin |
|
|
S:=S+R; |
|
|
{$IFDEF DBG} |
|
|
if N<10 then |
//Вывод, используемый при отладке |
|
WriteLn('N=', N, ' R=', R:14:11 |
|
|
, ' |
S=', S:14:11); |
|
{$ENDIF} N:=N+2;
R:=-R*D/N/(N-1) end;
WriteLn;
//Вывод результатов вычислений: WriteLn(N:14
,' = Число шагов, за которое достигнута' ,'заданная точность');
WriteLn(S:14:11
,' = Приближенное значение функции'); WriteLn(Cos(K*X):14:11
,' = Точное значение функции'); WriteLn(Abs(Cos(K*X)-S):14:11
,' = Абсолютная ошибка'); WriteLn(Abs((Cos(K*X)-S)/Cos(K*X)):14:11, ' = Относительная ошибка');
ReadLn;
end.
2. Вычислить с точностью e для 0 £ X £ 1:
– приближенное значение функции ln (1 + X) по формуле
|
X 2 |
|
X 3 |
|
X 4 |
+ |
X N |
|
S = X - |
|
+ |
|
- |
|
+ ×× × + (-1)N 1 |
|
+ ×××, |
2 |
3 |
4 |
N |
используя смешанный способ вычисления члена ряда;
–точное значение функции ln (1 + X);
–абсолютную и относительную ошибки приближенного зна- чения.
Предусмотреть обработку исключения, возникающего при вы - числениях вследствие ошибок в исходных данных, обеспечив ающую вывод типа исключения и числа шагов вычисления суммы ряда, на котором оно возникло:
104 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
program Project1; |
|
{$APPTYPE |
CONSOLE} |
uses |
|
SysUtils, |
|
Math; var
//Объявленные ниже переменные будут представлять:
X, |
// - аргумент функции, |
|
Eps,// - требуемую точность, |
||
D, |
// - часть (-1)^(N+1)*X^N члена ряда, |
|
|
// |
вычисляемую по рекуррентной формуле, |
R, |
// - ÷ëåí ðÿäà, |
|
S, |
// - сумму ряда, |
|
Y |
// - значение функции ln(1+X), |
|
|
:Extended; |
|
N |
// - номер члена ряда. |
|
:Integer; begin
Write('Введите требуемую точность: '); ReadLn(Eps);
Write('Введите значение аргумента функции: '); ReadLn(X);
D:=1;//Начальное значение для вычисления числителя // члена ряда по рекуррентной формуле
N:=1;//Нумерация членов ряда начинается с 1 R:=X;//Первый член ряда
S:=0;//Начальное значение для накопления суммы //членов ряда
//Цикл для вычисления членов ряда //и накопления их суммы.
//Выполнять, пока модуль очередного члена ряда //больше требуемой точности.
while Abs(R)>Eps do try
S:=S+R;//Включение очередного члена ряда в сумму // (*
if N<5 then |
//Вывод, используемый при отладке |
||
WriteLn('N=', N, ' R=', R:14:11 |
|||
|
, ' |
S=', S:14:11); |
|
// *) |
|
|
|
N:=N+1; |
//Увеличение номера члена ряда |
||
D:=-D*X; |
//Рекуррентная формула вычисления |
||
|
//числителя члена |
ðÿäà |
|
R:=D/N |
//Вычисление N-го |
члена ряда |
|
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
105 |
|
|
except
on E:Exception do //Обработать любое исключение begin
WriteLn(E.Message);//Вывод типа исключения WriteLn('Исключение возникло на шаге N = ',N); ReadLn;
Halt end;
end; //while try
//Вывод результатов вычислений: //Число шагов, за которое достигнута //заданная точность
WriteLn('Число шагов, за которое достигнута' ,' заданная точность = ',N);
//Приближенное значение функции ln(1+X) WriteLn('Приближенное значение функции ln(1+X) = '
,S:14:11);
//Точное значение функции ln(1+X) WriteLn('ln(1+X) = ',Ln(1+X):14:11); //Абсолютная ошибка WriteLn('Абсолютная ошибка = '
,Abs(Ln(1+X)-S):14:11); //Относительная ошибка WriteLn('Относительная ошибка = '
,Abs((Ln(1+X)-S)/Ln(1+X)):14:11,'%');
ReadLn;
end.
4.17. Задания для самостоятельной работы
Составить программу вычисления суммы ряда с заданной точ - ностью ε. Анализируя код программы, выявить возможные при- чины возникновения исключений и провести их обработку, об еспечивающую вывод типа исключения и пояснение причины воз - никновения.
1. Вычислить с точностью ε:
– приближенное значение функции ln (1 + X)/X по формуле
|
X |
|
X 2 |
|
X 3 |
+ |
X N −1 |
|
S = 1− |
|
+ |
|
− |
|
+ ... + (−1)N 1 |
|
+ ..., |
2 |
3 |
4 |
N |
используя смешанный способ вычисления члена ряда;
–точное значение функции ln (1 + X)/X;
–абсолютную и относительную ошибки приближенного зна- чения.
106 ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ
2. Вычислить с точностью e:
– приближенное значение функции eX по формуле
S = 1 + X + |
X 2 |
+ |
X 3 |
+ |
X 4 |
+ |
X 5 |
+ ..., |
|
2! |
3! |
4! |
5! |
||||||
|
|
|
|
|
используя рекуррентную формулу для вычисления члена ряда;
–точное значение функции eX;
–абсолютную и относительную ошибки приближенного зна- чения.
3. Вычислить с точностью e:
– приближенное значение функции sin X по формуле
S = X - X 3 + X 5 - X 7 + X 9 + ..., 3! 5! 7! 9!
используя рекуррентную формулу для вычисления члена ряда;
–точное значение функции sin X;
–абсолютную и относительную ошибки приближенного зна- чения.
4. Вычислить с точностью e:
– приближенное значение функции 1 + X по формуле
S = 1+ |
X |
- |
X 2 |
+ |
3X 3 |
|
- |
3× 5X 4 |
|
+ ..., |
|
2 |
2 × 4 |
2× 4 × |
6 |
2× 4× 6× |
8 |
||||||
|
|
|
|
|
используя рекуррентную формулу для вычисления члена ряда;
– точное значение функции 1 + X ;
–абсолютную и относительную ошибки приближенного зна- чения.
5. Вычислить с точностью e:
– приближенное значение функции arcsin X по формуле
S = X |
+ |
X 3 |
- |
3X |
5 |
+ |
3 × 5X 7 |
|
- |
3 × 5 × 7X |
9 |
+ ..., |
||
2 |
×3 |
2 × 4 ×5 |
2 × 4 × 6 × |
7 |
2 × 4 × 6 × 8 × 9 |
|||||||||
|
|
|
|
|
|
|||||||||
используя рекуррентную формулу для вычисления члена ряда;
–точное значение функции arcsin X;
–абсолютную и относительную ошибки приближенного зна- чения.
6. Вычислить с точностью e:
– приближенное значение функции arctg X по формуле
S = X - X 3 + X 5 - X 7 + X 9 + ..., 3 5 7 9
используя смешанный способ вычисления члена ряда;
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
107 |
|
|
–точное значение функции arctg X;
–абсолютную и относительную ошибки приближенного зна- чения.
7. Вычислить с точностью e:
– приближенное значение функции |
e X |
- e−X |
по формуле |
||||||||
|
2 |
||||||||||
|
X 3 |
|
X 5 |
|
X 7 |
|
X 9 |
|
|
|
|
S = X + |
+ |
+ |
+ |
+ ..., |
|
|
|
||||
3! |
5! |
7! |
9! |
|
|
|
|||||
|
|
|
|
|
|
|
|
||||
используя рекуррентную формулу для вычисления члена ряда;
– точное значение функции e X - e−X ; 2
– абсолютную и относительную ошибки приближенного зна- чения.
8. Вычислить с точностью e:
– приближенное значение функции |
e X |
+ e−X |
по формуле |
||||||||
|
2 |
||||||||||
|
X 2 |
|
X 4 |
|
X 6 |
|
X 8 |
|
|
|
|
S = 1 + |
+ |
+ |
+ |
+ ..., |
|
|
|
||||
2! |
4! |
6! |
8! |
|
|
|
|||||
|
|
|
|
|
|
|
|
||||
используя рекуррентную формулу для вычисления члена ряда;
– точное значение функции e X - e−X ; 2
–абсолютную и относительную ошибки приближенного зна- чения.
9. Вычислить с точностью e:
– приближенное значение функции ln (1 - X) по формуле
S = -X - X 2 - X 3 - X 4 - X 5 + ..., 2 3 4 5
используя смешанный способ вычисления члена ряда;
–точное значение функции ln (1 - X);
–абсолютную и относительную ошибки приближенного зна- чения.
10. Вычислить с точностью e:
– приближенное значение функции ln |
1 + X |
по формуле |
||||||||||||
1 - X |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
æ |
X |
3 |
|
X |
5 |
X 7 |
|
X 9 |
|
ö |
|
|
|
|
S = 2 × ç X + |
|
|
+ |
|
+ |
|
+ |
|
+ ... |
÷ |
, |
|
|
|
3 |
|
5 |
7 |
9 |
|
|
||||||||
è |
|
|
|
|
|
ø |
|
|
|
|||||
используя смешанный способ вычисления члена ряда;
108 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
–точное значение функции ln11 +- XX ;
–абсолютную и относительную ошибки приближенного зна- чения.
11. Вычислить с точностью e:
– приближенное значение функции (1 + Х )−3 по формуле
S = 1 - |
2 |
× |
3 |
X + |
3× 4X 2 |
- |
4 × 5X 3 |
+ |
5× 6X 4 |
- |
6× 7X 5 |
+ ..., |
|
2 |
|
2 |
2 |
2 |
2 |
||||||
|
|
|
|
|
|
|
|
используя смешанный способ вычисления члена ряда;
–точное значение функции (1 + Х )−3;
–абсолютную и относительную ошибки приближенного зна- чения.
12. Вычислить с точностью e:
– приближенное значение функции ln(X + 1 + X 2 ) по формуле
S = X - |
1 |
× |
X 3 |
+ |
1 |
× |
3 |
× |
X 5 |
- |
1 |
× |
3 |
× |
5 |
× |
X 7 |
+ |
1 |
× |
3 |
× |
5 |
× |
7 |
× |
X 9 |
- ..., |
|
2 |
3 |
2 |
4 |
5 |
2 |
4 |
6 |
7 |
2 |
4 |
6 |
8 |
9 |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
используя смешанный способ вычисления члена ряда; |
|||||||||||||||||||||||||||||
– точное значение функции ln(X + |
1 + X 2 ); |
|
|
|
|
|
|
|
|||||||||||||||||||||
–абсолютную и относительную ошибки приближенного зна- чения.
13. Вычислить с точностью e:
– приближенное значение функции e−X 2 по формуле
S = 1 - |
X 2 |
+ |
X 4 |
- |
X 6 |
+ |
X 8 |
- ... + (-1) |
N |
X 2N |
+ ..., |
1! |
2! |
3! |
4! |
|
N ! |
||||||
|
|
|
|
|
|
|
используя рекуррентную формулу для вычисления члена ряда;
–точное значение функции e −X 2 ;
–абсолютную и относительную ошибки приближенного зна- чения.
14. Вычислить с точностью e:
– приближенное значение функции (1 + Х )−2 по формуле
S = 1 - 2X + 3X 2 - 4X 3 + 5X 4 - ...,
используя смешанный способ вычисления члена ряда;
–точное значение функции (1 + Х )−2;
–абсолютную и относительную ошибки приближенного зна- чения.
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
|
|
|
|
|
109 |
|||
|
|
|
|
|
|
|
|
||
15. Вычислить с точностью e: |
|
|
|
|
|
|
|
||
– приближенное значение функции |
1 |
по формуле |
|||||||
|
|
||||||||
|
1 + X |
||||||||
S = 1 - 1 X |
+ 1 × 3 X 2 - |
1 × 3 × 5 X 3 + |
1 × 3 × 5 × 7 |
X 4 |
- ..., |
||||
2 |
2 × 4 |
2 × 4 × 6 |
|
2 × 4 × 6 × 8 |
|
|
|||
используя рекуррентную формулу для вычисления члена |
|||||||||
ðÿäà; |
|
|
|
|
|
|
|
|
|
– точное значение функции |
1 |
|
; |
|
|
|
|
||
|
|
|
|
|
|
||||
1 + X |
|
|
|
|
|||||
–абсолютную и относительную ошибки приближенного зна- чения.
16. Вычислить с точностью e:
– приближенное значение p по формуле
S = 4 × é1 |
- 1 |
+ 1 |
- ... + (-1)N −1 |
1 |
|
+ ...ù |
, |
|
|
||||||
ê |
3 |
5 |
|
2N - 1 |
ú |
|
|
ë |
|
û |
|
||||
используя смешанный способ вычисления члена ряда;
–точное значение p с помощью стандартной функции Pi;
–абсолютную и относительную ошибки приближенного зна- чения.
17. Вычислить с точностью e:
– приближенное значение |
1 |
|
|
по формуле |
|
|||||||||
|
|
|
||||||||||||
1 - X 2 |
|
|||||||||||||
S = 1 + |
1 |
X 2 |
+ |
1 × 3 |
X 4 |
+ |
1 × 3 × 5 |
X 6 |
+ |
1 × 3 × 5 × 7 |
X 8 |
+ ..., |
||
|
2 |
|
|
2 × 4 |
|
|
2 × 4 × 6 |
|
|
|
2 × 4 × 6 × 8 |
|
|
|
используя рекуррентную формулу для вычисления члена ряда;
– точное значение функции |
1 |
; |
|
||
1 - X 2 |
–абсолютную и относительную ошибки приближенного зна- чения.
18. Вычислить с точностью e сумму бесконечного ряда:
∞ |
(-1)N −1 |
X |
2N +1 |
|
|
S = å |
|
, |
|||
2N + 1 |
|||||
N =0 |
|
|
|||
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
19. Вычислить с точностью e сумму бесконечного ряда:
∞ |
X |
2N −1 |
|||
S = å (-1)N |
|
|
, |
||
4N 2 |
- 1 |
||||
N =0 |
|
||||
110 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
20. Вычислить с точностью e сумму бесконечного ряда:
∞ |
X |
2N |
ln (1 |
+ 2N ) |
|
S = å (-1)N +1 |
|
, |
|||
|
|
|
|
||
N =0 |
|
|
4N 2 |
||
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
21. Вычислить с точностью e сумму бесконечного ряда:
∞ |
N +1 |
X |
2N (2N - 1) |
|
S = å (-1) |
|
|
|
, |
|
2N (2N - 1) |
|||
N =1 |
|
|
||
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
22. Вычислить с точностью e сумму бесконечного ряда:
∞ |
(2 |
2N |
- 1)X |
−2N |
|
S = å (-1)N +1 |
|
|
, |
||
|
22N 2N |
|
|||
N =1 |
|
|
|
||
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
23. Вычислить с точностью e сумму бесконечного ряда:
∞ |
N (2N - 1)X |
−N |
, |
S = å (-1) |
(N + 5)2N |
||
N =1 |
|
||
–используя смешанный способ вычисления члена ряда;
–используя общую формулу для вычисления члена ряда.
24. Вычислить с точностью e сумму бесконечного ряда:
∞ |
X |
3N |
(3N + 1) |
|
S = å |
|
, |
||
|
|
|
||
N =1 |
|
|
N ! |
|
–используя смешанный способ вычисления члена ряда;
–используя рекуррентную формулу для вычисления члена ряда.
25. Вычислить с точностью e сумму бесконечного ряда:
S = |
1 |
× |
2 |
X |
+ |
3 |
× 4X 3 |
+ |
5 |
× 6X 5 |
+ |
7 |
× 8X 7 |
+ |
|
9 |
× 10X 9 |
+ ... + |
|||
|
1 |
|
|
3 |
|
3 × 7 |
3 |
× 7 × 11 |
3 |
× |
7 × |
11× 15 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
+ |
|
9 × |
10X |
9 |
|
+ ... + |
|
(2N - 1)(2N )X 2N −1 |
|
|
+ ..., |
|
|||||||||
3 |
× 7 |
×11 ×15 |
|
1× 3 × 7 ×11× 15× ...× (4N - |
5) |
|
|||||||||||||||
|
|
|
|
|
|||||||||||||||||
–используя смешанный способ вычисления члена ряда;
–используя рекуррентную формулу для вычисления члена ряда.
