Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Maple 9.5/10 Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Ρ„ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 68

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”ΡŒΡΠΊΠΎΠ½ΠΎΠ²

5.10.2. Аппроксимации рядом Π’Π΅ΠΉΠ»ΠΎΡ€Π°

НачнСм с аппроксимации Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстным рядом Π’Π΅ΠΉΠ»ΠΎΡ€Π° стСпСни 8 ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сСрСдины ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° (Ρ‚ΠΎΡ‡ΠΊΠΈ с Ρ…=2):

> s := map(evalf, taylor(f(x), Ρ…=2, 9));

s := 0.4065945998 - 0.1565945998(x-2) + 0.00209790791(Ρ…-2)2 + 0.01762626393(Ρ…-2)3 - 0.006207547150(x-2)4 + 0.00057335662(x-2)5 + 0.00024331163(x-2)6 - 0.00010010534(x-2)7 + 0.00001414211(Ρ…-2)8 + O((x-2)9)

> TaylorApprox := convert(s, polynom):

Π’Π°ΠΊΠΎΠΉ ряд позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вычислСний Ρ‚ΠΎΠ»ΡŒΠΊΠΎ арифмСтичСскиС дСйствия, Ρ‡Ρ‚ΠΎ само ΠΏΠΎ сСбС Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Для удобства ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° соотвСтствовала Ρ„ΠΎΡ€ΠΌΠ΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ для ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(Ρ…). Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ смоТСм ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΊΡ€ΠΈΠ²ΠΎΠΉ ошибок для аппроксимации ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠΌ Π’Π΅ΠΉΠ»ΠΎΡ€Π°:

> TaylorApprox := unapplΡƒ(TaylorApprox, Ρ…);

TaylorApprox := x→0.7197837994 - 0.1565945998x + 0.00209790791(x-2)2 + 0.01762626393(x-2)3 - 0.006207547150(x-2)4 + 0.00057335662(x-2)5 + 0.00024331162(x-2)6 - 0.00010010534(x-2)7 + 0.0000141421(x-2)8

ΠšΡ€ΠΈΠ²Π°Ρ ошибок для аппроксимации ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠΌ Π’Π΅ΠΉΠ»ΠΎΡ€Π° строится ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

> plot(f - TaylorApprox, 0..4, color=black);

ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄, прСдставлСнный Π½Π° рис. 5.25. Π­Ρ‚Π° кривая нас, прямо скаТСм, Π½Π΅ слишком Ρ€Π°Π΄ΡƒΠ΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Π² сотни Ρ€Π°Π· ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ.

Рис. 5.25. ΠšΡ€ΠΈΠ²Π°Ρ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ аппроксимации рядом Π’Π΅ΠΉΠ»ΠΎΡ€Π°


Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ свойство аппроксимации рядом Π’Π΅ΠΉΠ»ΠΎΡ€Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ошибка ΠΌΠ°Π»Π° Π²Π±Π»ΠΈΠ·ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ разлоТСния ΠΈ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΄Π°Π»ΠΈ ΠΎΡ‚ Π½Π΅Π΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, самая большая ошибка ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π² Π»Π΅Π²ΠΎΠΉ ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ошибки Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ…=0, Ρ‡Ρ‚ΠΎ Π²Π΅Π΄Π΅Ρ‚ ΠΊ дСлСнию Π½Π° Π½ΡƒΠ»ΡŒ (см. ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для f(Ρ…)), ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π΅Π»Π°:

> maxTaylorError := abs(limit(f(x), Ρ…=0) - TaylorApprox(0));

maxTaylorError := 0.0015029608

Π˜Ρ‚Π°ΠΊ, Π² самом Π½Π°Ρ‡Π°Π»Π΅ Π½Π°ΡˆΠΈΡ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΌΡ‹ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ фиаско, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ Π² сотни Ρ€Π°Π· большС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ. Но ΠΎΡ‚Ρ‡Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ стоит, ΠΈΠ±ΠΎ, ΠΊΠ°ΠΊ говорят, Β«Π΄Π°ΠΆΠ΅ Ρƒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ хозяйки ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π»ΠΈΠ½ β€” ΠΊΠΎΠΌΠΎΠΌΒ».

5.10.3. ПадС-аппроксимация

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ ПадС (Pade) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f(x) стСпСни (4,4). ΠŸΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎ этому Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π±ΡƒΠ΄ΡƒΡ‚ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ ошибки округлСния Π² вычислСниях станут Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π°Π΄Π°Π΄ΠΈΠΌ вычислСния с двумя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ точности:

> Digits := 12:

> s := map(evalf, taylor(f(x), x=2, 9)):

> PadeApprox := pade(s, x=2, [4,4]);

PadeApprox := (0.341034792604 + 0.0327799035348x - 0.00612783638188(x-2)2 + 0.00452991113636(x-2)3 - 0.000431506338862(x-2)4)/( 0.068484906786 + 0.465757546607x+ 0.159149610837(x-2)2 + 0.0266813683828(x-2)3 + 0.00346967791444(x-2)4)

> PadeApprox := unapply(PadeApprox, x):

ΠšΡ€ΠΈΠ²Π°Ρ ошибки для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° [0,4] строится ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ

> plot(f - PadeApprox, 0..4,color=black);

ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 5.26.

Рис. 5.26. ΠšΡ€ΠΈΠ²Π°Ρ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ПадС-аппроксимации стСпСни (4.4)


Как ΠΈ ΠΏΡ€ΠΈ аппроксимации рядом Π’Π΅ΠΉΠ»ΠΎΡ€Π°, ошибка здСсь ΠΌΠ°Π»Π° Π²Π±Π»ΠΈΠ·ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ разлоТСния ΠΈ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΄Π°Π»ΠΈ ΠΎΡ‚ Π½Π΅Π΅. ΠœΡ‹ снова Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, самая большая ошибка β€” Π² Π»Π΅Π²ΠΎΠΉ ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Однако, максимальная ошибка Π² ПадС-аппроксимации ΡƒΠΆΠ΅ Π½Π° порядок мСньшС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ аппроксимации ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠΌ Π’Π΅ΠΉΠ»ΠΎΡ€Π°:

> maxPadeError := abs(limit(f(x), x=0) - PadeApprox(0));

maxPadeError:=0.000353777322

Π­Ρ‚ΠΎ успСх, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π° Π²Π΅Ρ€Π½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ. Но, ΠΏΠΎΠΊΠ°, ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ остаСтся слишком большой ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.

5.10.4. Аппроксимация ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠ°ΠΌΠΈ Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°

Π—Π½Π°Ρ‚ΠΎΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ аппроксимации Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠ΅ приблиТСния Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ряд Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΡ‹ Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ измСнСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° распрСдСлСна Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ, Ρ‡Π΅ΠΌ Π² ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… случаях. Выбросы ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ Π½Π° краях ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° аппроксимации Π² этом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹

Π Π°Π·Π»ΠΎΠΆΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ f(x) Π½Π° [0,4] Π² ряд Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ 1*10-8. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Ρ‡Π»Π΅Π½Ρ‹ с коэффициСнтами мСньшС, Ρ‡Π΅ΠΌ эта Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹. Вакая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ обСспСчиваСтся ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠΌ 13 стСпСни:

> evalf(limit(f(x), Ρ…=0));

.500000000000

> fproc := proc(x) if x=0 then 0.5 else evalf(f(x)) fi end:

> ChebApprox := chebyshev(fproc, x=0..4, 1E-8);

МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ для этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ кривая ошибки ΠΏΡ€ΠΈ аппроксимации рядом Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° колСблСтся. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ряд Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° Π±Ρ‹Π» ΠΎΠ±ΠΎΡ€Π²Π°Π½ Π½Π° Ρ‡Π»Π΅Π½Π΅ стСпСни 8 (ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ ряда Π’Π΅ΠΉΠ»ΠΎΡ€Π°), Ρ‚ΠΎ максимальная ошибка оказалась всС Π΅Ρ‰Π΅ большС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.

Для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вычислСний, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для нахоТдСния числСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ f(x), которая Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС, Ρ‡Π΅ΠΌ прямоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ числСнного интСгрирования для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Ρ…. А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ числСнной ΠΎΡ†Π΅Π½ΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ряд Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° стСпСни 13, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ максимальная ошибка ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ аппроксимации мСньшС, Ρ‡Π΅ΠΌ 10-8, ΠΈ обСспСчиваСт для нашСй Ρ†Π΅Π»ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° Π’(Ρ…) ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° orthopoly, ΠΈ Π·Π°Ρ‚Π΅ΠΌ для эффСктивной ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π“ΠΎΡ€Π½Π΅Ρ€Π°:

> F := hornerform(eval(subs(T=orthopoly[T],

 ChebApprox)));

F = 0.499999998610 + (0.192405358503 + (-0.163971754264 + (-0.0083861432817 + (0.0277082269676 + (-0.00593172541573 + (-0.00132728874257 + (0.000910057654178 + (-0.000180351181100 + (0.57685696534 10-5 + ( 0.448885653549 10-5 + (-0.990274556116 10-6 + (0.925433855729 10-7 - 0.347161977631 10-8x)x)x)x)x)x)x)x)x)x)x)x)x

> F := unapply(F, x):

Π‘Ρ…Π΅ΠΌΠ° Π“ΠΎΡ€Π½Π΅Ρ€Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ число арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, замСняя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ опСрациями ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ умноТСния.

5.10.5. Аппроксимация Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°-ПадС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°-ПадС. Π­Ρ‚ΠΎ такая Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ функция r[m, n](Ρ…) с числитСлСм стСпСни m ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»Π΅ΠΌ стСпСни n Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для разлоТСния Π² ряд Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°. Ѐункция r[m, n](Ρ…) согласуСтся с разлоТСния Π² ряд ряда Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° f(x) Ρ‡Π»Π΅Π½ΠΎΠΌ стСпСни m+n. ΠœΡ‹ вычислим Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°-ПадС стСпСни (4, 4), ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ПадС-аппроксимации, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅:

> ChebPadeApprox := chebpade(F, 0..4, [4,4]);

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ ΠΊΡ€ΠΈΠ²ΡƒΡŽ ошибок:

> with(orthopoly, Π’):

> plot(F - ChebPadeApprox, 0..4,color=black);

Она прСдставлСна Π½Π° рис. 5.27.

Рис. 5.27. ΠšΡ€ΠΈΠ²Π°Ρ ошибки ΠΏΡ€ΠΈ ПадС-Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π° Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ аппроксимации


Максимальная ошибка ΠΈ Π½Π° этот Ρ€Π°Π· ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π² Π»Π΅Π²ΠΎΠΉ ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° максимальной ошибки нСсколько мСньшС, Ρ‡Π΅ΠΌ ошибка ΠΏΡ€ΠΈ аппроксимации рядом Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°. Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство прСставлСния Π² Π²ΠΈΠ΄Π΅ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” высокая ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ вычислСний, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнута ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ (Ρ†Π΅ΠΏΠ½ΡƒΡŽ) Π΄Ρ€ΠΎΠ±ΡŒ (см. Π½ΠΈΠΆΠ΅). Однако получСнная максимальная ошибка Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ большС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ:

> maxChebPadeError := abs(F(0) - ChebPadeApprox(0));

maxChebPadeError := 0.1236749 10-5

ΠœΡ‹ достигли Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰Π΅Π³ΠΎ успСха ΠΈ остаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ шаг Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ точности аппроксимации.

5.10.6. Минимаксная аппроксимация

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ аппроксимации Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ минимакс ΠΊΠ°ΠΊ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ°Ρ аппроксимация Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стСпСни (m, n) достигаСтся, ΠΊΠΎΠ³Π΄Π° кривая ошибки ΠΈΠΌΠ΅Π΅Ρ‚ m+n+2 Ρ€Π°Π²Π½Ρ‹Ρ… ΠΏΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ. ΠšΡ€ΠΈΠ²Π°Ρ ошибки аппроксимации Π§Π΅Π±Ρ‹ΡˆΠ΅Π²Π°-ПадС ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΠ΅ число ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ, Π½ΠΎ эта кривая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π° (ΠΏΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅ выбросов ΠΊΡ€ΠΈΠ²ΠΎΠΉ ошибки) с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ минимаксноС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ minimax:

> MinimaxApprox := minimax(F, 0..4, [4,4], 1, 'maxerror');

MinimaxApprox :=x→ (0.174933018974 + (0.0833009600964 + (-0.02019330447644 + (0.00368158710678 - 0.000157698045886x)x)x)x)/(0.349866448284 + (0.031945251383 + (0.0622933780130) + (-0.0011478847868 + 0.0033634353802x)x)x)x)

Максимальная ошибка Π² аппроксимации MinimaxApprox даСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ maxerror. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, достигли нашСй Ρ†Π΅Π»ΠΈ получСния аппроксимации с ошибкой мСньшСй, Ρ‡Π΅ΠΌ 1*10-6:

> maxMinimaxError := maxerror;

maxMinimaxError := 0.585028048949 10-6

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° аппроксимации:

> plot(F - MinimaxApprox,0..4,color=black);

Π“Ρ€Π°Ρ„ΠΈΠΊ ошибки, прСдставлСнный Π½Π° рис. 5.28 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅ колСбания.

Рис. 5.28. Π“Ρ€Π°Ρ„ΠΈΠΊ ошибки ΠΏΡ€ΠΈ минимаксной аппроксимации


Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ блСстящС добились успСха Π² сниТСнии ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ довольно ТСсткого уровня. Если Π±Ρ‹ ΠΌΡ‹ задались Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΈΠ»ΠΈ ΠΏΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² аппроксимации, Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ рядС случаСв Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅. Нам остаСтся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ вычислСний.