4. Степенные ряды


4.0. Введение

Степенным рядом называют конструкцию вида:

f(x)=е(i)aixi, i=0...г

где ai - коэффициенты, для которых задано правило вычисления.

Ряды используются для вычисления и анализа широкого класса функций, называемых аналитическими. В частности, ряды лежат в основе подпрограмм, реализующих встроенные функции бейсика.

Программирование рядов проводится по рекуррентной схеме: вычисляется частная сумма ряда, представляющая собой степенной многочлен

е(i)aixi, i=0...n

где n зависит, с одной стороны, от требуемой точности, с другой - от быстроты сходимости частных сумм к истинному значению ряда.

В программе переменные резервируются под новое и старое значения частной суммы, под текущий номер i и под ту часть выражения для члена ряда, которая содержит факториал и переменную степень. В цикле, организованном по возрастанию i, две рекуррентные формулы: одна мультипликативная, для нового члена ряда; другая аддитивная, для частной суммы. Условие выхода из цикла - равенство новой и старой частных сумм. Оно выполняется тогда, когда новый член на 12 порядков меньше суммы. Обычно для этого бывает достаточно просуммировать всего 6-10 членов ряда. Если сходимость плохая и алгоритм выполняет большее число итераций, вычислительная погрешность будет существенной. В этом случае для высокоточных расчетов следует применять специальные алгоритмы (см. программу 65).

Можно также предварительно вычислить значимые коэффициенты степенного ряда (пример - программа 40), сохранить их в явном виде и затем пользоваться процедурой вычисления многочлена, реализованной в программе 23.

Ортогональные многочлены - частный случай степенных рядов, когда ряд обрывается на n-м члене. Системы ортогональных многочленов используются для получения интерполяционных формул (см. программы 98, 99) и решения краевых задач.

Существуют рекуррентные формулы, которые выражают следующий по порядку ортогональный многочлен через пару предыдущих.

4.1. Вычисление систем ортогональных многочленов

Программа 33. Многочлены Чебышева. Рекуррентная формула:

Ti+1(x)=2xTi(x)-Ti-1(x), где T0(x)=1, T1(x)=x.

10 INPUT "n",A:D=1:E=0:F=1:FOR B=2 TO A:C(B+B)=0:FOR C=0 TO B
20 IF C>0;C(B+B+C)=2*B(B+C)
30 IF C<B-1;C(B+B+C)=C(B+B+C)-D(C)
40 NEXT C:FOR C=0 TO B+B:D(C)=C(C+B):NEXT C:NEXT B
50 FOR C=0 TO A:PRINT D(C+A):NEXT C:GOTO 10

Размер: 157, C(3*n)

Пример: n=4.

Ответ: ... T4(x)=1-8x2+8x4.

Программа 34. Многочлены Эрмита. Рекуррентная формула:

Hi+1(x)=2xHi(x)-2iHi-1(x), где H0(x)=1, H1(x)=2x.

10 INPUT "n",A:D=1:E=0:F=2:FOR B=2 TO A:C(B+B)=0:FOR C=0 TO B
20 IF C>0;C(B+B+C)=2*B(B+C)
30 IF C<B-1;C(B+B+C)=C(B+B+C)-2*(B-1)*D(C)
40 NEXT C:FOR C=0 TO B+B:D(C)=C(C+B):NEXT C:NEXT B
50 FOR C=0 TO A:PRINT D(C+A):NEXT C:GOTO 10

Размер: 165,C(3*n)

Пример: n=4.

Ответ: ... H4(x)=12-48x2+16x4.

Программа 35. Многочлены Лежандра. Рекуррентная формула:

Pi+1(x)=((2i+1)xPi(x) - iPi-1(x))/(i+1), где P0(x)=1, P1(x)=x.

10 INPUT "n",A:D=1:E=0:F=1:FOR B=2 TO A:C(B+B)=0:FOR C=0 TO B
20 IF C>0;C(B+B+C)=(B+B-1)*B(B+C)
30 IF C<B-1;C(B+B+C)=C(B+B+C)-(B-1)*D(C)
40 C(B+B+C)=C(B+B+C)/B:NEXT C:FOR C=0 TO B+B:D(C)=C(C+B)
50 NEXT C:NEXT B:FOR C=0 TO A:PRINT D(C+A):NEXT C:GOTO 10

Размер: 189, C(3*n)

Пример: n=4.

Ответ: ... P4(x)=0,375-3,75x2+4,375x4.

Программа 36. Многочлены Лагерра. Рекуррентная формула:

Li+1(x)=(2i+1-x)Li(x)-i2Li-1(x), где L0(x)=1, L1(x)=1-x.

10 INPUT "n",A:D=1:E=1:F=-1:FOR B=2 TO A:C(B+B)=0:FOR C=0 TO B
20 IF C>0;C(B+B+C)=-B(B+C)
30 IF C<B;C(B+B+C)=C(B+B+C)+(B+B-1)*C(B+C)
40 IF C<B-1;C(B+B+C)=C(B+B+C)-(B-1)*(B-1)*D(C)
50 NEXT C:FOR C=0 TO B+B:D(C)=C(C+B):NEXT C
60 NEXT B:FOR C=0 TO A:PRINT D(C+A):NEXT C:GOTO 10

Размер: 209, C(3*n)

Пример: n=4.

Ответ: ... L4(x)=24-96x+72x2-16x3+x4.

4.2. Вычисление значений ортогональных многочленов

Многочлены Чебышева имеют явное выражение через тригонометрические функции:

Tn(x)=cos n arccos x.

Вычисления в режиме калькулятора: A=n, B=x, C=COS A ACS B, C - Tn(x). Следует отметить, что эта формула более трудоемка и менее точна нежели рекуррентная.

Программа 37. Многочлены Лежандра.

10 INPUT "n",A,"x",B:C=1:D=B:FOR E=2 TO A
20 F=((E+E-1)*B*D-E*C+C)/E:C=D:D=F:NEXT E:PRINT F:GOTO 10

Размер: 74, F

Пример: n=3; x=0,1.

Ответ: P3(0,1)=-0,1475.

Программа 38. Многочлены Лагерра.

10 INPUT "n",A,"x",B:C=1:D=1-B:FOR E=2 TO A
20 F=(E+E-1-B)*D-(E-1)*(E-1)*C:C=D:D=F:NEXT E:PRINT F:GOTO 10

Размер: 80, F

Пример: n=3; x=0,1.

Ответ: L3(0,1)=4,289.

Программа 39. Многочлены Эрмита.

10 INPUT "n",A,"x",B:B=B+B:C=1:D=B:FOR E=1 TO A
20 F=B*D-2*E*C:C=D:D=F:NEXT E:PRINT C:GOTO 10

Размер: 68, F

Пример: n=3; x=0,1.

Ответ: H3(0,1)=-1,192.

4.3. Вычисление функций с помощью рядов

Программа 40. Интеграл вероятностей. Вычисление коэффициентов ряда

erf x = 2/Цpт0x exp(-t2)dt = 2/Цpе(n)(-1)nx2n+1/n!/(2n+1), n=0...г

Задача - получить численные значения коэффициентов ряда ai. Количество коэффициентов должно быть таким, чтобы обеспечить вычисление функции erf x в интервале [-xm; xm] с абсолютной погрешностью не выше e.

Переменные:

A

B

C

D

E

F

G

xm

a2n+1

2/Цp (-1)n/n!

n

e

x2n+1

2n+1

Вычисления прекращаются, когда выполнится |a2n+1xm2n+1| ≤ e.

10 INPUT "e",E,"xm",A:F=A:C=2/SQR p:D=0
20 G=D+D+1:B=C/G:PRINT G,B:IF ABS (F*B)≤
E;END
30 D=D+1:F=F*A*A:C=-C/D:GOTO 20

Размер: 91, E

Пример: e =10-8; xm=1/2.

Ответ:
a1=1.128379167;
a3=-0.376126389;
a5=0.1128379167;
a7=-0.0268661706;
a9=0.0052239776;
a11=-0.0008548327;
a13=0.0001205537;
a15=-0.00001492565.

Программа 41. Интеграл вероятностей. Вычисление значений

10 INPUT A:B=A:C=A:D=0
20 E=B:D=D+1:C=-C*A*A/D:B=B+C/(D+D+1):IF E¦B THEN 20
30 PRINT B*2/SQR p:GOTO 10

Размер: 76, E

Переменные:

A

B

C

D

E

x

еn

(-1)n x2n+1/n!

n

еn-1

Пример: x=2.

Ответ: erf 2=0,995322275.

Программа 42. Интегральный синус

Si(x)=т0x sin t / t dt = е(n)(-1)nx2n+1/(2n+1)!/(2n+1), n=0...г

10 INPUT A:B=A:C=A:D=1
20 E=B:D=D+2:C=-C*A*A/D/(D-1):B=B+C/D:IF E¦B THEN 20
30 PRINT B:GOTO 10

Размер: 71, E

Пример: x=0,1.

Ответ: Si(0,1)=0,0999444611.

Программа 43. Интегральный косинус

Ci(x)= g+ln x +т0x cos (t -1)/ t dt = g+ln x + е(n)(-1)nx2n/(2n)!/(2n), n=0...г

где g =0,5772156649 - постоянная Эйлера.

10 INPUT A:B=.5772156649+LN A:C=1:D=0
20 E=B:D=D+2:C=-C*A*A/D/(D-1):B=B+C/D:IF E¦B THEN 20
30 PRINT B:GOTO 10

Размер: 84, E

Пример: x=0,1.

Ответ: Ci(0,1)=-1,727868408.

Программа 44. Совместное вычисление Ci(x) и Si(x).

10 INPUT A:B=.5772156649+LN A:C=0:D=0:E=1
20 F=C:GOSUB 40:E=-E:GOSUB 40:IF F¦C THEN 20
30 PRINT "Ci";B,"Si";C:GOTO 10
40 D=D+1:E=E*A/D:G=2*FRAC (D/2):B(G)=B(G)+E/D:RETURN

Размер: 125, G

Пример: x=0,1.

Ответ: Ci(0,1)=-1,727868408; Si(0,1)=0,0999444611.

Интегралы Френеля:

C(x)=т0xcos (p/2 t2) dt, n=0...г
S(x)=т0xsin (p/2 t2) dt, n=0...г

Программа 45. Случай x≤3. Разложение в ряд:

C(x)= е(n)(-1)n(p/2)2nx4n+1/(2n)!/(4n+1), n=0...г
S(x)= е(n)(-1)n(p/2)2n+1x4n+3/(2n+1)!/(4n+3), n=0...г

10 INPUT A:B=0:C=A:D=C:E=0:G=1:IF A>3 THEN 50
20 F=D:GOSUB 40:E=E+C/G:C=-C:GOSUB 40:D=D+C/G:IF F¦D THEN 20
30 PRINT "C";D,"S";E:GOTO 10
40 B=B+1:G=G+2:C=C*p/2*A*A/B:RETURN

Размер: 125, G

Пример: x=2.

Ответ: C(2)=0,4882534075; S(2)=0,343415678364.

Программа 46. Случай x>3. Степенной ряд не сходится, и вычисления проводятся по асимптотическим формулам:

C(x)= 1/2+ cos(px2/2)/px A(x) - sin(px2/2)/px B(x)
S(x)= 1/2+ cos(px2/2)/px A(x) + sin(px2/2)/px B(x)

A(x)=е(n)(-1)n+1(4n+1)!!!!/(px2)2n+1, n=0...г
B(x)=е(n)(-1)n+1(4n-1)!!!!/(px2)2n, n=0...г

50 B=p*A*A:C=-1:D=0:E=C:F=1:G=1:I=1:MODE 5
60 H=D:GOSUB 100:F=-F*C:D=D+F/I:GOSUB 100
70 G=-G*C:E=E-G/I:IF H¦D THEN 60
80 B=B/2:C=p*A:F=COS B/C:G=SIN B/C
90 PRINT "C";.5+D*F-E*G,"S";.5+D*G+E*F:GOTO 10
100 C=C+2:I=I*B:RETURN

Размер: 175, I

Пример: x=4.

Ответ: C(4)=0,498419978; S(4)=0,420516754.

Программа 47. Функция Лапласа (интеграл нормального распределения вероятности).

P(x) = 1/Ц(2p) т-гx exp(-t2/2)dt = 1/2 + exp(-x2/2)/Ц(2p)е(n)x2n+1/(2n+1)!!, n=0...г

10 INPUT A:B=A:C=1:D=0
20 D=D+B:C=C+2:B=B*A*A/C:IF D+B¦D THEN 20
30 PRINT .5+D/EXP (A*A/2)/SQR (p+p):GOTO 10

Размер: 79, D

Пример: x=3.

Ответ: P(3)=0,998650065.

Программа 48. Дилогарифм. Разложение в ряд в интервале (0;2).

f(x) = т1x ln(t)/(1-t) dt =е(n)(-1)i(x-1)i/i2, n=0...г

10 INPUT A:B=0:C=1:D=0
20 E=B:D=D+1:C=-C*(A-1):B=B+C/D/D:IF E¦B THEN 20
30 PRINT B:GOTO 10

Размер: 67, E

Пример: x=0,1.

Ответ: f(0,1)=1,29971424.


Продолжить
К Оглавлению

Сайт управляется системой uCoz