Apytikslis šaknų skaičiavimas (stygų ir liestinių metodai)

Iš testwiki.
17:55, 8 rugsėjo 2024 versija, sukurta imported>Paraboloid (Pavyzdžiai)
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
Pereiti į navigaciją Jump to search


Apytikslis šaknų skaičiavimas

Yra metodai leidžiantys atskirti realiąsias šaknis polinomo f(x) su realiaisiais koeficientais, t. y. kiekvienai šakniai nurodyti ribas, tarp kurių yra tik viena šita šaknis. Jeigu šitos ribos (intervalas) pakankamai siauros, tai bet kokį skaičių, esantį tarp jų, galima laikyti apytikslia reikšme ieškomos šaknies. Tokiu budu, po to, kai Šturmo metodu (arba kokiu nors kitu, ekonomiškesniu budu) bus nustatyta, kad tarp racionaliųjų skaičių a ir b yra tik viena šaknis polinomo f(x), lieka užduotis tiek susiaurinti šitas ribas (intervalo kraštus), kad naujos ribos (kraštai) a ir b turėtų į priekį nustatytą skaičių sutampančių pirmų dešimtainių skaitmenų; šituom ieškoma šaknis bus apskaičiuota su užduotu tikslumu.
Egzistuoja daug metodų, leidžiančių pakankamai greitai rasti apytikslią šaknies reikšmę su reikalaujamu tikslumu. Mes nurodysime du iš jų, teoriškai paprastesnius ir bendresnius, ir kuriuos naudojant kartu pakankamai greitai prieinama prie tikslo. Reikia pastebėti, kad metodai, kurie bus dabar išdėstyti, pritaikomi ne tik polinomams, bet ir platesnėms klasėms tolydžių funkcijų. Toliau laikysime, kad α yra paprasta (nekartotinė) šaknis polinomo f(x), kadangi nuo kartotinių šaknų mes visada galim išsilaisvint (jeigu šaknies α kartotinumas yra k, tai polinomas f(k1)(x) turės tik paprastą šaknį α), ir kad šaknis α jau atskirta ribom a ir b, a<α<b; iš čia seka, kad f(a) ir f(b) turi skirtingus ženklus.

Tiesinės interpoliacijos metodas (stygų metodas)

Apytikslia reikšme šaknies α būtų galima laikyti, pavyzdžiui, pusė sumos kraštų a ir b, a+b2, t. y. atkarpos vidurį, kurio galai a ir b. Natūraliau manyti, kad šaknis guli arčiau prie tos iš ribų (kraštų) a, b, kuriai atitinka mažesnė absoliučiu dydžiu polinomo reikšmė. Tiesinės (linijinės) interpoliacijos metodo esmė yra tokia, kad skaičius c laikomas apytikslia reikšme šaknies α ir dalinantis atkarpą (a, b) į dalis, proporcingas absoliučioms reikšmėms skaičių f(a) ir f(b), t. y.
cabc=f(a)f(b);
minuso ženklas dešinėje dalyje pastatytas dėl to, kad f(a) ir f(b) turi skirtingus ženklus. Iš čia
(ca)f(b)=(bc)f(a),
cf(b)af(b)=cf(a)bf(a),
cf(b)cf(a)=af(b)bf(a),
c=af(b)bf(a)f(b)f(a),
c=bf(a)af(b)f(a)f(b).(1)
10 brėž.
Geometriškai, kaip parodyta 10 brėž., linijinės interpoliacijos metodo esmė tame, kad ant atkarpos (a, b) kreivė y=f(x) pakeičiama jos styga, jungiančia taškus A(a, f(a)) ir B(b, f(b)), ir apytikslia reikšme šaknies α laikoma abscisė taško susikirtimo šitos stygos su ašimi x.

Niutono metodas (liestinių metodas)

Kadangi α — paprasta šaknis polinomo f(x), tai f(α)0. Priimsime, kad taip pat ir f(α)0, kadangi kitaip klausimas suvedamas į skaičiavimą šaknies polinomo f(x), turinčio mažesnį laipsnį, negu f(x). Toliau priimsime, kad atkarpa (a, b) ne tik neturi f(x) šaknų, skirtingų nuo α, bet ir neturi nei vienos šaknies polinomo f(x), o taipogi ir polinomo f(x)*. Tokiu budu, kaip seka iš matematinės analizės kurso, kreivė y=f(x) ant atkarpos (a, b) yra arba monotoniškai didėjanti, arba monotoniškai mažėjanti, o taip pat arba visuose taškuose šitos atkarpos yra išgaubta į viršų, arba visuose taškuose šitos atkarpos įgaubta žemyn. Kreivės išsidėstymas ant atkarpos (a, b) gali priklausyti vienam iš keturių atvejų, parodytų brėžiniuose 11—14.
Brėžiniai 11-14.
15 brėž.
Pažymėsime per a0 tą iš ribų a ir b, pas kurią ženklas f(x) sutampa su ženklu f(x). Kadangi f(a) ir f(b) turi skirtingus ženklus, o f(x) išsaugo ženklą visoje atkarpoje (a, b), tai toks a0 gali būti nurodytas (jeigu kreivė išgaubta į viršų, tai jos antra išvestinė visada neigiama toje atkarpoje (f(x)<0), o jeigu kreivė įgaubta į apačią, tai jos antra išvestinė visada teigiama (f(x)>0) toje atkarpoje). Atvejais, parodytais brėžinuose 11 ir 14, bus a0=a, kitais dviais atvejais a0=b. Kreivės taške y=f(x) su abscise a0, t. y. taške su koordinatėmis (a0,f(a0)), pravesime liestinę šitos kreivės ir pažymėsime per d abscisę taško susikirtimo šitos liestinės su ašimi x. Brėžiniai 11-14 rodo, kad skaičių d galima laikyti apytikslia reikšme šaknies α. Niutono metodas susideda iš pakeitimo kreivės y=f(x) ant atkarpos (a, b) jos liestine vienoje iš ribų šitos atkarpos. Skaičiaus a0 pasirinkimo sąlyga yra svarbi: brėž. 15 parodo, kad be šitos sąlygos paisymo, liestinės susikirtimo taškas su ašimi x gali visai neduoti priartėjimo prie ieškomos šaknies.

_________________________

* Ribų (kraštų) siaurinimas, privedantis prie to, kad šita sąlyga bus tenkinama, pasiekiamas įprastai be didesniu sunkumu, kadangi metodai, aptarti anksčiau, leidžia nustatyti šaknų skaičių polinomo f(x) ir f(x) bet kokioje atkarpoje.
16 brėžinys.
Išvesime formulę, pagal kurią ieškomas skaičius d. Kaip žinoma, liestinės lygtis kreivės y=f(x) taške (a0,f(a0)) gali būti užrašyta pavidale
yf(a0)=f(a0)(xa0).
Įstatydami čia koordinates (d, 0) susikirtimo taško liestinės su ašimi x, gausime:
f(a0)=f(a0)(da0),
iš kur
d=a0f(a0)f(a0).(2)
Jeigu skaitytojas sujungs ant brėž. 11-14 taškus A ir B stygom, tai pastebės, kad metodu linijinės interpoliacijos ir Niutono visais atvejais duoda priartėjimą prie tikros reikšmės šaknies α iš skirtingų pusių. Tikslinga todėl, jeigu atkarpa (a, b) jau tokia, kaip to reikalaujama Niutono metode, kombinuoti šituos du metodus. Mes gausime šituo budu daug labiau siauras ribas c ir d šakniai α. Jeigu jie dar neduoda reikalaujamo tikslumo, tai šitoms riboms reikia dar kartą pritaikyti nurodytus abu metodus (žr. 16 brėž.) ir t. t., be to galima įrodyti, kad šitas procesas tikrai leidžia apskaičiuoti šaknį α su bet kokiu tikslumu.

Niutono metodo įrodymas

Mes iki šiol neparodėme, kad išdėstyti aukščiau metodai iš tikro leidžia apskaičiuoti šaknį su bet kokiu tikslumu, t. y. neįrodėme konvergavmo šitų metodų. Įrodysime tai Niutono metodui.
Tegu, kaip ir aukščiau, paprasta šaknis α polinomo f(x) yra atkarpoje (a, b), išrinktoje taip, kaip tai būtina Niutono metodo naudojime. Iš čia seka egzistavimas tokių teigiamų skaičių A ir B, kad visur ant atkarpos (a, b)
|f(x)|>A,|f(x)|<B.(3)
Įvesime žymėjimą
C=B2A
ir laikysime, kad
C(ba)<1.(4)
Šios nelygybės išpildymui galimai prireiks pakeisti ribas (a, b) šaknies α siauresnėm ribom; tai nepakeis nelygybių (3) teisingumo. Tegu a0 bus ta iš ribų a, b, kuriai taikomas Niutono metodas. Pagal formulę (2) mes nuosekliai gausime apytikslias šaknies α reikšmes a1,a2,...,ak,..., gulinčias atkarpoje (a, b) ir surištas tarpusavyje lygybėmis
ak=ak1f(ak1)f(ak1),k=1,2,...(5)
Tegu
α=ak+hk,k=0,1,2,...(6)
Tada (pagal Teiloro formulę)
0=f(α)=f(ak)+hkf(ak)+hk22f(ak+θhk),(6.5)
kur 0<θ<1. Kadangi f(ak)0 dėl sąlygos atkarpai (a, b), tai, atsižvelgdami į (5) ir (6), gausime:
hk22f(ak+θhk)=f(ak)+hkf(ak),
hk22f(ak+θhk)f(ak)=hk+f(ak)f(ak)=αak+f(ak)f(ak)=α(akf(ak)f(ak))=αak+1=hk+1.
Iš čia
|hk+1|=hk2|f(ak+θhk)2f(ak)|<hk2B2A=Chk2,k=0,1,2,...
Tokiu budu,
|hk+1|<Chk2<C3hk14<C7hk28<...<C2k+11h02k+1
[ |hk+1|=Chk2;Chk2=C[Chk12]2=C3hk14,C3hk14=C3[Chk22]4=C7hk28,... ]
arba, kadangi |h0|=|αa0|<ba,
|hk+1|<C1[C(ba)]2k+1,k=0,1,2,...(7)


Jeigu Teiloro formulėje
f(x)=f(a)+f(a)1!(xa)+f(a)2!(xa)2+f(a)3!(xa)3+...+f(n)(a)n!(xa)n+f(n+1)(ξ)(n+1)!(xa)n+1=
=f(a)+f(a)1!(xa)+f(a)2!(xa)2+f(a)3!(xa)3+...+f(n)(a)n!(xa)n+f(n+1)[a+θ(xa)](n+1)!(xa)n+1,
paimsime, kad n=1, tai gausime tokią Teiloro formulę:
f(x)=f(a)+f(a)1!(xa)+f(n+1)[a+θ(xa)](n+1)!(xa)n+1=
=f(a)+f(a)1!(xa)+f(1+1)[a+θ(xa)](1+1)!(xa)1+1=
=f(a)+f(a)(xa)+f(2)[a+θ(xa)]2(xa)2.(8)
Toliau pažymėkime
x=α=ak+hk,
a=ak,
xa=[ak+hk]ak=hk,
a<ξ<x,
ξ=a+θ(xa)=ak+θhk.
Įstatykime šiuos pakeitimus į (8) formulę:
f(x)=f(a)+f(a)(xa)+f(2)[a+θ(xa)]2(xa)2,(8)
0=f(α)=f(ak)+f(ak)hk+f(2)[ak+θhk]2hk2.
Taigi, gavome formulę (6.5),
0=f(α)=f(ak)+hkf(ak)+hk22f(ak+θhk).(6.5)


Iš (7) formulės, pagal (4) sąlygą, seka, kad skirtumas hk tarp šaknies α ir jos apytikslės reikšmės ak, gautos nuosekliai taikant Niutono metodą, artėja prie nulio, kai k didėja, ką ir reikėjo įrodyti.
Pastebėsime, kad (7) formulė duoda paklaidos įvetinimą (k+1)-am žingsniui, kas reikšminga, jeigu Niutono metodas taikomas vienas, o ne kombinacijoje su metodu linijinės interpoliacijos.
Kursuose teorijos apytikslių skaičiavimų galima rasti išdėstymą daugelį kitų metodų apytikslio šaknų skaičiavimo. Tarp jų labiausiai tobulu yra Lobačevskovo metodas (метод Лобачевского) (kai kada klaidingai vadinamas metodu Grefe (Греффе)). Šitas metodas leidžia rasti apytikslias reikšmes visų šaknų iš karto, tame tarpe ir kampleksinių, be to nereikalauja išankstinio šaknų atskyrimo; jis surištas, visgi, su pakankamai griozdiškais skaičiavimais. Šio metodo pagrindą sudaro teorija simetrinių polinomų.

Pavyzdžiai

  • Pritaikysime šituos metodus polinomui
h(x)=x5+2x45x3+8x27x3.
Mes žinome, kad šitas polinomas turi paprastą šaknį α1, esančią ribose 1<α1<2. Iš anksto galima pasakyti, kad šitos ribos per plačios tam, kad metodai linijinės interpoliacijos ir Niutono, pritaikyti tik po vieną kartą, galėtų duoti gerą rezultatą. Visgi pritaikysime juos, kad turėti vieną pavyzdį, nereikalaujantį sudetingų skaičiavimų.
Su x=1 išvestinės h(x),h(x),...,hV(x) yra teigiamos. Iš čia seka (pagal tam tikrą teoriją), kad šaknis x=1 tarnauja h(x), o taip pat h(x) viršutine riba teigiamų šaknų. Atkarpa (1, 2) to pasekoje neturi šaknų šitų išvestinių, todėl jai galima pritaikyti Niutono metodą. Be to, h(x) visur šitoje atkarpoje teigiama, o kadangi
h(1)=4,
h(2) = 2^5 + 2*2^4 - 5*2^3 + 8*2^2 - 7*2 - 3 = 32 + 2*16 -5*8 +8*4 - 7*2 - 3 = 32+32-40+32-14-3 = 39,
tai reikia priimti a0=2 (12 brėž.). Atsižvelgdami, kad h(2)=109, mes pagal (2) formulę gauname:
[ h(x)=5x4+8x315x2+16x7,
h'(2) = 5*2^4+8*2^3-15*2^2+16*2-7 = 5*16 + 8*8 -15*4 +16*2 -7 = 80 + 64 - 60 + 32 - 7 = 109. ]
d=a0f(a0)f(a0)=239109=21839109=179109=1.64...
Iš kitos pusės, formulė (1) duoda:
c=bf(a)af(b)f(a)f(b)=2(4)139439=83943=4743=1.09...
ir, to pasekoje, šaknis α1 yra ribose
1.09<α1<1.65.
Mes gavome nereikšmingą ribų susiaurėjimą tam, kad pripažinti šitą rezultatą tenkinančiu. Žinoma, gautoms riboms būtų galima dar kartą pritaikyti mūsų metodus. Tikslinga, visgi, iš pat pradžių rasti šakniai α1 pakankamai ankštas ribas, pavyzdžiui su tikslumu iki 0.1 arba net 0.01, ir tik po to panaudoti šituos metodus. Tai, suprantama, iškart padarys visus skaičiavimus gana griozdiškais, bet sprendžiant konkrečius uždavinius, reikalaujančius pakankamai tikslaus polinomo šaknų žinojimo, tenka tai daryti.
Grįškime prie mūsų polinomo h(x) ir jo šaknies α1, be kita ko pastebėsime, kad visos reikšmės polinomų, pateiktos žemiau, apskaičiuojamos Hornerio metodu. Kadangi
h(1.3)=0.13987,h(1.31)=0.0662923851,
[h(1.3) = 1.3^5 +2*1.3^4 -5*1.3^3 +8*1.3^2 -7*1.3 -3 = -0.13987,
h(1.31) = 1.31^5 +2*1.31^4 -5*1.31^3 +8*1.31^2 -7*1.31 -3 = 0.0662923851.]
tai
1.3<α1<1.31,
t. y. mes radome reikšmes šaknies α1 tikslumu iki 0.01. Pritaikysime dabar šitoms naujoms riboms linijinės interpoliacijos metodą:
c=bf(a)af(b)f(a)f(b)=1.31(0.13987)1.30.06629238510.139870.0662923851=
= (1.31*(-0.13987) - 1.3*0.0662923851)/(-0.13987 -0.0662923851) = 1.3067844577919563465508238340613 = 1.30678 ...
Pritaikysime šitoms riboms Niutono metodą, priedo reikia paimti a0=1.31. Kadangi
h(1.31)=20.92822405,
[h'(x) = 5*1.31^4 +8*1.31^3 -15*1.31^2 +16*1.31 -7 = 20.92822405.]
tai
d=a0f(a0)f(a0)=1.310.066292385120.92822405=1.3120.928224050.066292385120.92822405=27.41597350550.066292385120.92822405=27.349681120420.92822405=
= 1.306832393186272296239106824738 = 1.30683 ...
Tokiu budu,
1.30678<α1<1.30684,
ir todėl, paėmę α1=1.30681, mes padarysime klaidą, mažesnę nei 0.00003.
Pastebėsime, kad 0.01^2 = 0.0001 > 0.00003. Be to,
h(1.30681) = 1.30681^5 +2*1.30681^4 -5*1.30681^3 +8*1.30681^2 -7*1.30681 -3 = -0.0001496088153666072602599.

Nuorodos