Конспект лекций по программированию для начинающих. Гладков В.П. - 112 стр.

UptoLike

Составители: 

114
i:=2;
while u>eps do
begin y:=y+u;
u:=u*x/i;
i:=i+1
end;
write(y);
Пример 10.35. Вычислить сумму отрезка степенного ряда для sin x:
()
()
sin x -1
x
2i + 1
, где x и n - заданы.
i
2i+1
i=0
n
!
Решение. Обозначим
()
()
u =
-1 x
2i + 1
i
2i+1
i
!
.
Найдем отношение
() ( )
()()
()
u
u
=
-1 x 2i-1
2i + 1 -1 x
=
-x
2i 2i + 1
i
i-1
i
2i+1
i-1
2i-1
2
!
!
.
Отсюда
()
u = u
-x
i2i+1
ii-1
2
2
.
Упростим вычисление знаменателя. Обозначим его через r
i
, тогда r
i
= 2i(2i+1) =
4i
2
+2i. Выразим r
i
через r
i-1
. Рассмотрим разность d
i
= r
i
-r
i-1
= 4i
2
+2i-4(i-1)
2
-2(i-1) =
8i-2, откуда r
i
=r
i-1
+d
i
. Теперь выразим d
i
через d
i-1
: d
i
-d
i-1
= 8i-2-8(i-1)+2 = 8 или d
i
=
d
i-1
+8.
Используя полученные формулы, построим фрагмент программы для решения
поставленной задачи.
{ фрагмент 32 }
d:=-2;
r:=0;
u:=x;
s:=0;
v:=-sqr(x);
while abs(u)>eps do { слагаемое может быть отрицательным }
begin s:=s+u;
d:=d+8;
r:=r+d;
u:=u*v/r
end.
Упражнения:
1. Написать фрагмент программы для вычисления с точностью до eps>0:
y=arctg x=x-x
3
/3+x
5
/5-...+(-1)
n
x
2n+1
/(2n+1)+... (|x|<1).
2. Для больших значений |x| формула примера 10.34 малопригодна для
вычисления e
x
, так как члены ряда сначала возрастают по абсолютной величине и
                                                             114

     i:=2;
     while u>eps do
     begin     y:=y+u;
               u:=u*x/i;
               i:=i+1
     end;
     write(y);
     Пример 10.35. Вычислить сумму отрезка степенного ряда для sin x:
                  n
                       x 2i+1
     sin x ≈ ∑ ( -1)
                                 i
                                , где x и n - заданы.
             i=0     (2i + 1) !
     Решение. Обозначим
               (-1) x .
                      i   2i+1

     ui =
                (2i + 1) !
     Найдем отношение
     ui          (-1) x (2i -1) !
                          i   2i+1
                                                       - x2
           =                                      =             .
     u i-1      (2i + 1) !(-1) x     i-1   2i-1
                                                    2i( 2i + 1)
     Отсюда
                      - x2
     u i = u i-1 ⋅             .
                   2i( 2i + 1)
     Упростим вычисление знаменателя. Обозначим его через ri, тогда ri = 2i(2i+1) =
4i +2i. Выразим ri через ri-1. Рассмотрим разность di = ri-ri-1 = 4i2+2i-4(i-1)2-2(i-1) =
 2

8i-2, откуда ri=ri-1+di. Теперь выразим di через di-1: di-di-1 = 8i-2-8(i-1)+2 = 8 или di =
di-1+8.
     Используя полученные формулы, построим фрагмент программы для решения
поставленной задачи.
     { фрагмент 32 }
     d:=-2;
     r:=0;
     u:=x;
     s:=0;
     v:=-sqr(x);
     while abs(u)>eps do { слагаемое может быть отрицательным }
     begin     s:=s+u;
               d:=d+8;
               r:=r+d;
               u:=u*v/r
     end.
     Упражнения:
     1. Написать фрагмент программы для вычисления с точностью до eps>0:
y=arctg x=x-x3/3+x5/5-...+(-1)nx2n+1/(2n+1)+... (|x|<1).
     2. Для больших значений |x| формула примера 10.34 малопригодна для
вычисления ex, так как члены ряда сначала возрастают по абсолютной величине и