Доставка цветов в Севастополе: SevCvety.ru
Главная -> Справочник по алгоритмам

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

le PRINTНЕЛИНЕЙНОЕ СГЛЙН!ИВЙНИЕ ПО 7 ТОЧКАМ

£0 INPUTЗАДАЙТЕ НОМЕР ПОСЛЕДНЕГО ОТСЧЕТА N=N

30 INPUTЕеЕДИТЕ ОТСТЫ V0,Vl..,,V6A,B/C7DfEF?G

40 PRINTSV 0=<:39*А+8жВ-4!1!С-4жЕ+Е+4!1!Р-г*0)-42

50 PRINTSV i=С8жА+19жВ+1бжС+6жВ-4жЕ~7жГ+4ж0)4£

6й PRINTSV £=<:-:4жА+16*В+1ЭжС+12жЕ+гжЕ-4жГ+0)/42

70 PPINTSV 3=«:-гжА+ЗжВ+бжС+7жЕ+бжЕ+ЗжР-£ж0>/£1

80 FCR 1=4 TO N-3!LETA=B5LETB=C!LETC=D:LETD=E

90 LETE=F!LETF=&!PRINT!3-0!BBEflHTE V1+3=:INPUT G

100 LETS=-£-*A+3*B+6*C+7wD+6*E

110 PRINT!3.0!SVI=!1.9KS+3*F-£»;G>-2l!NEXT I

120 LETS=A-4*B+2»;C+12*D+19*E+16*F~4*G

130 PRINT!3.e!S.VN-£=!Fi.9! £/-42

140 ЬЕТЗ=4жА~7жВ-4жС+6ж11+1бжЕ+19жГ+8ж6

150 PRINT!3.0!SVN-1=IF1.9! S/42

160 ЬЕТЗ=-£жА+4жВ+С-4*Е-4жЕ+8жР+ЗЭж6

170 PRlNT!3.e!SVN=4.F1.9< S/42:ENE

Контрольный пример см. в табл. 5.3, где представлены данные сглаживания

грубо заданной й=1п («+2).

нелинейной функции

Результаты нелинейного сглаживания по семи точкам (Nf=e)

Таблица 5.3

Точное значение -j/, = ln.<i+2)

Точное значение у,==1п (1+2)

0,70114285714

0,6931471806

1,99

1,950952381

1,945910149

1,08

1,08714286

1,098612289

2,04

2,073333333

2,079441542

1,39

1,385

1,386294361

2,22

2,191428571

2,197224577

1,64

1.624285714

1,609437912

2,28

2,302857143

2,302585093

1,76

1,79952381

1,791759469

2,42

2,412619048

2,397895273



ГЛАВА 6

ВЫЧИСЛЕНИЕ СПЕЦИАЛЬНЫХ ФУНКЦИЙ

§ 6.1. Методы вычисления специальных функций

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

Решение порсхждающих дифференциальных уравнений позволяет найти ряд значений специальных функций при заданных начальных условиях. Для этого могут исполь зоваться программы, описанные в § 4.10. При описании специальных функций далее приводятся порождающие их дифференциальные уравнения. Однако. этот метод (особенно при вычислениях с заданной точностью) сопряжен с применением сложных лрограмм. Если требуется вычисление значений специальных функций при произвольных или часто сменяемых значениях аргумента, этот метод может привести к недопустимо большим затратам машинного времени.

Вычисление специальных функций численным интегрированием является универсальным и достаточно эффективным методом. Для его реализации могут использоваться программы численного интегрирования, описанные в § 4.9,. 4.10. Следует учитывать, что в них аргумент подынтегральной функции обозначен через X, тогда как у специальных функций возможно иное обозначение, например t. Следовательно, в этом случае t = X. Подынтегральные выражения должны вычисляться по соответствующим подпрограммам (ввиду простоты тексты подпрограмм не приводятся). В целом программы вычислений специальных функций численным интегрированием достаточно громоздки и вычисления требуют значительных затрат машинного времени (в сравнении с изложенными ниже методами).

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

ние значений ортогональных многочленов в § 3.4. Однако этот метод применим при следующих условиях: имеются исходные значения функций или простые формулы для их вычисления, рекуррентный процесс является устойчивым (т. е. не ведет к накоплению ошибок), число циклов вычислений ограничено разумными пределами.

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

Вычисление специальных функций по их аппроксимациям является, как правило, методом, обеспечивающим получение результата за минимальное время. В большинстве случаев аппроксимация получается путем разложения функции в ряд (например, Тейлора) с удержанием конечного числа членов, достаточного для вычисления значений функции с заданной точностью. Сокращение времени вычислений обусловлено предварительным вычислением входящих в члены ряда выражений, например факториалов, значений тригонометрических функций и т. д. Однако достаточно простые аппроксимации получаются, как правило, при погрешности вычислений, заметно превосходящей предельную для ПЭВМ. Кроме того, вид аппроксимации обычно не имеет ничего общего с видом функции и для описания аппроксимации приходится использовать большое число численных констант с большим числом цифр. Поэтому вычисления по аппроксимациям следует рассматривать как дополнение к другим методам вычислений.

§ 6.2. Интегральные показательные функции

Интегральная показательная функция £„(x)=EN (X) = f-?(-)



вычисляется с помощью рекуррентного соот-нощения

£„+, (х)=-[е--х£„ (х)], /г=1,2.3.....

при £о (х)=ехр ( -х)/х.и с помощью функции £ (х), вычисляемой разложением в ряд:

где v = 0,57721156647 -постоянная Эйлера. Программа 6.1.

05 PRINTВЫЧИСЛЕНИЕ ФУНКЦИИ EN<X)

10 INPUT ВВЕДИТЕ Н=Н

£0 INPUT ВВЕДИТЕ N=N

30 IHPUT ВВЕДИТЕ Х=Х

40 LETK=EXP«:-X>!LETE=K/X

50 IF N>0 THEN 70

60 PRINT E0(X>=-E!GOTO 30

70 LETP=l:LETR=i:LETS=0:LETI=0

80 LETI=I+l!LETP=<-X)!i!p:LETR=I*R

85 LETC=P/<I«R): LETS=S+C

90 IF ABS<C>>H THEN 80

100 LETE=-S-.5772156647-L0G«:X>

110 FOR 1=1 TO N-l!LETV=<K-E»;X>/I

120 LETE=V! NEXT I

130 PRINT EN«:X>=E!60T0 30s END

Пример. Для x=0,5 имеем £o (0,5) = = 1,213061319, £i (0,5) =0,5597736065,

£j (0,5) =0,3266438565, £,o (0,5) =

= 0,0634583004.

Интегральная показательная функция

Ei (х)=Е1 (X) = -vp { dt, х>0.

вычисляется разложением в ряд

£/(x)=v + lnx+J-.

i= 1

Программа 6.2.

05 PRINTВЫЧИСЛЕНИЕ ФУНКЦИИ ЕКХ)

10 INPUT ВВЕДИТЕ Н=Н

20 INPUT ВВЕДИТЕ Х=Х

30 LETP=lsLETR=i:LETS=0sLETN=0

40 LETN=N+l!LETP=P»;XsLETR=R*N

50 LETC=P/«:N*R>sLETS=S+C

60 IF ОН THEN 40

70 LETV=S+.5772156649+L0G<X>

80 PRINT EI«:X>=V

90 GOTO 20S END

Пример. Для x=0,5 получим Ei (0,5) = = 0,4542199049.

Функция

a„ (x) =AN (X) = \ fe-" dt, /г = 0, 1-, 2..... 1

вычисляется по рекуррентной формуле

an (х) = [e-+nan-t (х)] /х , при «о (х) =е~/х.

Интегральный синус

" sin/

Si (x)=Sl (Х) =

вычисляется разложением в ряд

Si(x)= Z (-1)х"+7(2/г+1) (2я+1)!

Ряд прерывается, если абсолютная величина последнего члена становится меньше е = = 1.10-«.

Программа 6.5.

05 PRINTВЫЧИСЛЕНИЕ ФУНКЦИИ SKX)

10 INPUT ВВЕДИТЕ Х=Х

£0 LETB=X:LETC=X

30 LETD=-<X2>/2:LETI=0

40 LETI=I+1!LETE=.«:2*I+1)"2

50 LETB=<«:£«I-l>»;D»;B>a*E>

60 LETC=C+Bs IF ABSCBX 1Е-Э THEN 88

78 GOTO 48

88 PRINT SI«:N>=C:&0T0 lO-END

Пример. Для x=0,l получим Si (0,1) = = 0,0999444611, a для x = 10 получим Si (10)= = 1,658347594.

05 PRINTВЫЧИСЛЕНИЕ ФУНКЦИИ ftH<X>

18 INPUTВВЕДИТЕ N=N

20 1НРиТВВЕДИТЕ Х=Х

30 LETK=EXP<-X>sLETft=KX

40 IF N>0 THEN 56

45 PRINTAN<X>=ft:GOTO 28

50 FOR 1=1 TO NsLETft=i:K+I*ft>/X

60 NEXT isPRINT ftN<X>=A

70 GOTO 20SEND

Пример. Для x=2 получим oo (2) = = 0,0676676416 и «6 (2) =5.99497344. Функция

p„ (x)=BN (X) = 5 t"e-" dt, /г = 0, 1,2,...,

вычисляется по рекуррентной формуле р„(х) = [(-1)"е-е+„р„ , (х)]/х

при ро(х) = (е-е")/х. Программа 6.4.

05 PRINTВЫЧИСЛЕНИЕ ФУНКЦИИ BN<X>

10 INPUT ВВЕДИТЕ N=N

20 INPUT ВВЕДИТЕ Х=Х

30 LET K=EXP<X>!LFTB=«:K-1-K>/X

40 IF N>0 THEN 50

45 PRINT BN<X>=BsGOTO 20

50 LETR=lsFOR il=l TO N!L£TR=-R

60 LETB=<R*K-«:i/K>+B!i!l>/X

70 NEXT IS PRINTBH<X>=B

80 GOTO 20SEND

Пример. Для x = 4 получим Po (4) = = 13,6449586, p, (4) = -10,24287677, Рз (4) = = -7,261476257.

§ 6.3. Интегральные синус и косинус



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78



0.0888
Яндекс.Метрика