A négyzetgyök kiszámításának módszerei

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. január 13-án felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .

A négyzetgyök módszerek számítási algoritmusok egy valós szám fő (vagy nem negatív) négyzetgyökeinek (általában , vagy ) hozzávetőleges értékeinek kiszámítására . Aritmetikailag ez azt jelenti, hogy ha adott egy szám , akkor az eljárás talál egy számot, amely önmagával szorozva ad . Algebrailag ez azt az eljárást jelenti, amely egy egyenlet nem negatív gyökerét keresi . Geometriailag ez egy adott területű négyzet oldalának megszerkesztését jelenti.

Minden valós számnak két gyöke van [1] . A legtöbb szám négyzetgyökének fő értéke egy végtelen decimális számjegysorozatú irracionális szám. Ennek eredményeként bármely ilyen négyzetgyök decimális ábrázolása csak közelítőleg számítható ki véges pontossággal (tizedesjegyek). Azonban még ha egy egész szám négyzetgyökét vesszük is, így az eredmény véges reprezentációt kap, a gyökszámításhoz használt eljárások egy része egyre nagyobb pontossággal csak közelítéssorozatot tud visszaadni.

A valós szám folyamatos tört ábrázolása használható decimális vagy bináris bővítés helyett, és ennek az ábrázolásnak megvan az a tulajdonsága, hogy bármely racionális szám négyzetgyökének (ami nem tökéletes négyzet) van egy periódusa, azaz a periódusos kiterjesztése hasonló ahhoz, A racionális számoknak a decimális számrendszer ismétlődő kiterjesztése van.

A legáltalánosabban elfogadott analitikai módszerek iteratívak, és két lépésből állnak: megfelelő kiindulási érték megtalálása, majd iteratív finomítása egy bizonyos leállási feltétel eléréséig. A kezdőérték tetszőleges szám lehet, de ha közelebb van a végértékhez, akkor kevesebb iterációra lesz szükség. A leghíresebb ilyen módszer, és még kényelmesebb a programozáshoz, a Newton-módszer, amely a derivált számításán alapul. Számos módszer, mint például a kézi Horner-osztás vagy sorozatbővítés, nem igényel kezdeti értéket. Egyes alkalmazásokban meg kell találni az egész szám négyzetgyököt , ami a legközelebbi egész számra kerekített négyzetgyök (ebben az esetben egy módosított eljárás is használható).

Az alkalmazott módszer attól függ, hogy az eredményt hogyan fogják használni (vagyis mennyire kell pontosnak lennie az eredménynek), és milyen eszközök állnak rendelkezésre. A módszereket nagyjából fel lehet bontani a mentálisan kivitelezhető, ceruzát és papírt igénylő módszerekre, vagy olyanokra, amelyek programként valósulnak meg és futnak számítógépen vagy más számítástechnikai eszközön. Figyelembe vehető a konvergencia sebessége (hány iterációra lesz szükség egy adott pontosság eléréséhez), az egyes műveletek (például osztás) vagy iterációk számítási bonyolultsága, valamint a hibák eloszlása ​​(az eredmény pontossága).

A négyzetgyökök (különösen a 2 gyökér) megtalálásának eljárásai legalább az ókori Babilon (Kr. e. 17. század) óta ismertek. Az 1. századi Egyiptomból származó Heron módszere volt az első ellenőrizhető algoritmus a négyzetgyök kiszámítására. A modern analitikai módszerek az arab számok kora-reneszánsz idején történő Nyugat-Európában történő átvétele után kezdődtek . Napjainkban szinte minden számítástechnikai eszköz rendelkezik gyors és pontos négyzetgyök funkcióval, mint beépített programozási nyelvi konstrukció, könyvtárfüggvény vagy hardverutasítás, amely az alábbiakban ismertetett eljárásokon alapul.

Kezdeti pontszám

Sok iteratív négyzetgyök algoritmushoz kezdeti véletlenszerű érték szükséges. Ennek az értéknek nullától eltérő pozitív számnak kell lennie. 1 és között kell lennie , az a szám, amelynek négyzetgyökét keressük, mivel a négyzetgyöknek ezen határokon belül kell lennie. Ha a kezdeti érték nagyon messze van a gyökértől, az algoritmusnak több iterációra lesz szüksége. Ha a (vagy -val ) kezded , akkor az extra iterációkat fog megoldani, csak hogy megkapd a gyökér sorrendjét. Ezért hasznos a gyökér durva becslése, amely lehet, hogy gyenge, de könnyen kiszámítható. Általában minél pontosabb a becslés, annál gyorsabb a konvergencia. A Newton-módszer (más néven Babilóniai vagy Heron-módszer) esetében a gyökérnél valamivel nagyobb kezdeti érték gyorsabb konvergenciát ad, mint a gyökérnél kisebb kezdeti érték.

Általánosságban elmondható, hogy a becslést egy tetszőleges intervallumon veszik figyelembe, amelyben ismert, hogy tartalmaz egy gyököt (például ). A jobb becsléshez az intervallum szűkebb korlátait vagy jobb funkcionális közelítését jelenti. Ez utóbbi általában azt jelenti, hogy magasabb rendű polinomokat használunk a közelítéshez, bár nem minden közelítés használ polinomokat. Az elterjedt becslési módszerek a skaláris, lineáris, hiperbolikus és logaritmikus. A decimális rendszert általában mentális vagy papíron történő becsléshez használják. A kettes számrendszer alkalmasabb számítógépes kiértékelésre. Értékeléskor a kitevőt és a mantisszát általában külön kezeljük.

Tizedespontszám

Általában a számot exponenciális formában adjuk meg , ahol , és n egy egész szám , akkor a lehetséges négyzetgyök becslése lehet , ahol .

Skaláris becslések

A skaláris módszerek a teljes tartományt tálcákra osztják, és az egyes sávokban elért pontszámot egyetlen szám jelzi. Ha a tartományt egyetlen intervallumként kezeljük, akkor a számtani átlag (5,5) vagy a geometriai átlag () elfogadható becslés. Az abszolút és relatív becslések ezeknél a becsléseknél különböznek. Általában egyetlen szám nagyon pontatlan. Tovább A pontos becslések két vagy több intervallumra osztják a tartományt, de a skaláris becslés továbbra is nagyon durva.

Két geometriailag felosztott intervallum esetén a négyzetgyök [2] értékkel becsülhető .

Ennek a becslésnek a maximális abszolút hibája = 100, a maximális relatív hibája pedig 100% az = 1 pontban.

Például egy dekompozíció esetén a pontszám a következő lesz . 246-os abszolút hibával és közel 70%-os relatív hibával.

Lineáris becslés

A legjobb becslés és standard módszer a függvény lineáris közelítése kis íven. Ha, mint fent, a kitevőt kivonjuk a számból , és az intervallumot -ra redukáljuk , akkor az ív mentén valahol szekánst vagy érintőt használhatunk a közelítéshez, de a közvetlen legkisebb négyzetek regressziója pontosabb lesz.

A legkisebb négyzetek módszerével kapott egyenes minimálisra csökkenti a becslés és a függvény értéke közötti átlagos távolságot. Az egyenlete . Az együtthatók átalakítása és kerekítése után a számítások egyszerűsítése érdekében megkapjuk

Ez a legjobb átlagos becslés , amelyet az intervallum függvényének egy lineáris közelítésével kaphatunk . A becslés maximális abszolút hibája az a=100 pontban 1,2, az S=1 és 10 pontokban a maximális relatív hibája 30% [3] .

A 10-zel való osztáshoz vonjon ki egyet a kitevőből , vagy képletesen szólva mozgassa a tizedesvesszőt egy pozícióval balra. Ennél a képletnél minden hozzáadott állandó 1 plusz egy kis növekmény kielégítő becslést ad, így nem szükséges megjegyezni a pontos számot. A közelítés (lekerekítve vagy nem kerekítve) egyetlen egyenes használatával, amely kivonja a régiót a pontosság szempontjából, legfeljebb egy helyes előjelet ad. A relatív hiba nagyobb, mint 1/2 2 , tehát kevesebb, mint 2 bitnyi információt ad. A pontosság erősen korlátozott, mivel a régió két nagyságrendet ölel fel, ami elég nagy egy ilyen becsléshez.

Lényegesen jobb becslést kaphatunk darabonkénti lineáris közelítéssel, azaz több olyan szegmens felhasználásával, amelyek közelítik az eredeti ív alpontját. Minél több szegmenst használunk, annál jobb a közelítés. Az érintők leggyakoribb használata. A kritikus pont az ív felosztása és az érintési pontok elhelyezése. Az ív y=1-ről y=100-ra való felosztásának hatékony módszere a geometriai módszer – két intervallum esetén az intervallumhatár az eredeti intervallum négyzetgyöke, 1 * 100, azaz és . Három intervallumban lesznek kockagyökök - , és , és így tovább. Két intervallum esetén ez egy nagyon kényelmes szám. Könnyű érintővonalakat szerezni az érintkezési pontokon és . Egyenleteik: és . Az egyenleteket megfordítva azt kapjuk, hogy a négyzetgyökök egyenlőek és . Akkor ehhez :

A maximális abszolút értékek az intervallumok jobb oldali határain, az a=10 és 100 pontokon vannak, és egyenlők 0,54 és 1,7. A maximális relatív hibák az intervallumok végén, az a=1, 10 és 100 pontokban jelennek meg, és egyenlők 17%. 17% vagy 0,17. 1/10-nél nagyobbak, így a módszer egy jelentős számjegynél kisebb pontosságot ad.

Hiperbolikus becslés

Egyes esetekben a hiperbolikus becslés érvényes lehet, mivel a hiperbola egyben konvex görbe is, és jobban feküdhet az Y = x 2 ív mentén , mint egy egyenes. A hiperbolikus becslő számítási szempontból nehezebb, mert lebegőpontos számmal kell osztani. Egy majdnem optimális hiperbolikus közelítés az intervallum x 2 - jéhez . Az átalakulás után megkapjuk . Akkor ehhez :

A lebegőpontos osztásnak egy tizedesjegyig pontosnak kell lennie, mivel minden értékelés ezt a pontosságot adja, és az ilyen osztás gondolatban is elvégezhető. A hiperbolikus becslés átlagosan jobb, mint a skaláris vagy lineáris becslés. Maximális abszolút hibája 1,58 a 100. pontban, maximális relatív hibája 16,0% a 10. pontban. A legrosszabb esetben a=10 a pontszám 3,67. Ha 10-ről indulunk, és közvetlenül alkalmazzuk a Newton-Rapson iterációkat, akkor két iterációra van szükség, amelyek 3,66-ot eredményeznek, mielőtt elérjük a hiperbolikus becslés pontosságát. Egy tipikusabb esetben, mint a 75, a hiperbolikus becslés 8,00, és 5 Newton-Rapson iteráció szükséges 75-től kezdve, hogy pontosabb eredményt kapjunk.

Aritmetikai értékelés

A darabonkénti lineáris közelítéshez hasonló, de az algebrai egyenletek helyett csak aritmetikai műveleteket használó módszer a szorzótáblát fordítva használja - az 1 és 100 közötti számok négyzetgyöke valahol 1 és 10 között van, tehát mivel tudjuk, hogy a 25 pontos négyzet (5 × 5) és a 36 egy pontos négyzet (6 × 6), akkor a 25-nél nagyobb, de 36-nál kisebb szám négyzetgyöke 5-tel kezdődik. Hasonlóképpen a többi négyzet közötti számok esetében is. Ez a módszer megadja a helyes első számjegyet, de a pontossága csak egy számjegy - a 35 négyzetgyökének első számjegye például 5, de maga a 35 gyöke majdnem egyenlő 6-tal.

Jobb, ha két négyzet közötti intervallumot kettéosztjuk. Tehát a 25 és félig 36 közötti szám gyöke (ami 30,5) 5-re, a többi 30,5-nél nagyobb szám 36-ig 6-ra [4] . Az eljárás nagyon kevés aritmetikát igényel két szorzat közepének megtalálásához a táblázatból. Itt van egy táblázat az ilyen számokról:

a legközelebbi tér est.
1-től 2,5-ig 1 (= 1 2 ) egy
2,5-6,5 4 (= 2 2 ) 2
6,5-12,5 9 (= 3 2 ) 3
12,5-től 20,5-ig 16 (= 4 2 ) négy
20,5-30,5 25 (= 5 2 ) 5
30,5-42,5 36 (= 6 2 ) 6
42,5-től 56,5-ig 49 (= 72 ) 7
56,5-72,5 64 (= 82 ) nyolc
72,5-től 90,5-ig 81 (= 9 2 ) 9
90,5 és 100 között 100 (= 102 ) tíz

A végső művelet a k pontszám szorzása a tízesek hatványával, felezve úgy, hogy ,

A módszer egy jelentős számjegy pontosságot ad, mert a legjobb első számjegyre kerekít.

A módszer a legtöbb esetben a legközelebbi négyzetek közötti interpolációval 3 jelentős számjegyre bővíthető. Ha , akkor megközelítőleg egyenlő k-val plusz egy tört, amely egyenlő az a és közötti különbséggel , osztva a két négyzet különbségével:

ahol

A végső művelet, mint fent, az eredmény szorzása tíz hatványával osztva

A k szám a decimális számjegy, az R pedig a tizedessé alakítandó tört. A törtnek általában egy számjegye van a számlálóban és egy vagy két számjegyű a nevezőben, így a tizedesjegyre való átalakítás gondolatban is elvégezhető.

Példa: keresse meg 75. négyzetgyökét , tehát a 75, n pedig 0. A szorzótábla alapján a mantissza négyzetgyökének 8 -nak kell lennie törttel, mert az a túl nagy. Tehát k 8 , ahol a tört R decimális reprezentációja . Az R törtnek van számlálója és nevezője is. A 11/17 valamivel kisebb, mint a 12/18, ami 2/3 vagy 0,67, tehát a 0,66 jó tipp (itt nem árt tippelni, mivel a hiba kicsi). Tehát a gyökér értéke . 75 három jelentős számjegyhez 8,66, tehát a három jelentős számjegyhez tartozó pontszám jó. Nem minden becslés ezzel a módszerrel olyan pontos, de meglehetősen közel áll hozzá.

Bináris kiértékelés

Ha a munkát a bináris rendszerben (mondjuk egy számítógépes processzorban) végzik el, akkor ezt a következőképpen fejezzük ki: , ahol , a négyzetgyök úgy becsülhető meg

ami a legkisebb négyzetek regressziója a 3 legjelentősebb bit felett. maximális abszolút hibája 0,0408 a =2 pontban és maximális relatív hibája 3,0% az =1 pontban. A számításokhoz a kerekített becslés kényelmes (mivel az együtthatók 2 hatványai)

[5]

amelynek maximális abszolút hibája a 2. pontban 0,086, és a és pontokban a maximális relatív hibája 6,1 % .

A bináris közelítéshez Mivel a becslés 19 abszolút hibát és 5,3%-os relatív hibát ad. A relatív hiba valamivel kisebb, mint 1/2 4 , tehát a közelítés 4+ bitre pontos.

Legfeljebb 8 bites becslést kaphat, ha a táblázatban megkeresi a legjelentősebb 8 bitet , mivel a legtöbb lebegőpontos ábrázolásban a legjelentősebb bit implicit módon szerepel, és a 8 bit utáni legkisebb jelentőségű biteket kerekíteni kell. A táblázat 256 bájt előre kiszámított 8 bites négyzetgyököt tartalmaz. Például az 11101101 2 indexnél, amely decimálisan 1,8515625 10, a táblázatban szereplő érték 10101110 2 , ami 1,359375 10 decimálisban , az 1,8515625 jel négyzetgyöke (10-8 bites előjel).

Babilóniai módszer

Talán az első közelítéshez használt algoritmus a babiloni módszerként ismert módszer , bár a hipotetikus következtetésen kívül nincs közvetlen bizonyíték arra, hogy a babiloni matematikusok ezt a módszert használták volna [6] . A módszert Heron-módszernek is nevezik, az első századi görög matematikus, Heron után, aki 60 éves Metrica című munkájában [7] adta meg a módszer első explicit leírását.Az alaptechnika az, hogy ha x nagyobb, mint a négyzet gyöke egy nem negatív S valós szám, akkor kisebb lesz a gyök és fordítva. Ezért indokolt azt várni, hogy ennek a két számnak az átlaga közelebb legyen a gyökhöz (ennek formális bizonyítása a számtani, geometriai és harmonikus átlag egyenlőtlenségén alapul , ami azt mutatja, hogy ez az átlag mindig nagyobb, mint a négyzet gyökér, amely biztosítja a konvergenciát). A módszer egyenértékű a Newton-módszer használatával az egyenlet megoldására .

Pontosabban, ha x a kezdeti tippje , és a becslésünk hibája olyan, hogy , akkor kibonthatjuk a zárójeleket, és megkapjuk

mert .

Ezért kompenzálhatjuk a hibát és frissíthetjük régi becslésünket

Mivel a számított hiba nem volt pontos, ez lesz a következő közelítésünk. A frissítési folyamat addig folytatódik, amíg el nem érjük a kívánt pontosságot. Ez egy másodfokú konvergenciájú algoritmus , ami azt jelenti, hogy a közelítés helyes számjegyeinek száma (nagyjából) minden iterációval megduplázódik. Ez így működik:

  1. Bármilyen pozitív kezdeti értékkel kezdjük (minél közelebb van S valódi négyzetgyökéhez , annál jobb).
  2. A és közötti átlagot egyenlőnek állítjuk be ( a geometriai átlag közelítésére a számtani átlagot használjuk ).
  3. Ismételje meg a 2. lépést, amíg el nem éri a kívánt pontosságot.

Az algoritmus a következőképpen ábrázolható:

Az algoritmus p - adikus számok esetén is jól működik , de nem használható valós négyzetgyökök p - adikus négyzetgyökök azonosítására. Például megalkotható az ezzel a módszerrel kapott racionális számsorozat, amely valós számok esetén +3-hoz, 2-adikus számokban -3-hoz konvergál.

Példa

A √ S kiszámításához , ahol S = 125348, hat jelentős számjegyre, használja a fent leírt durva becslési módszert

Ezért .

Konvergencia

Tegyük fel, hogy x 0 > 0 és S > 0. Ekkor tetszőleges n x n > 0 esetén. A relatív hiba x n :

és akkor

Most ezt meg lehet mutatni

és ebből következően

és ez garantált konvergenciát jelent, és ez a konvergencia másodfokú .

Konvergencia a legrosszabb esetben

Ha durva becslési módszert használunk a babiloni módszerrel, akkor csökkenő sorrendben a pontosság legrosszabb esetei a következők:

És akkor különben is

A kerekítési hibák gyengítik a konvergenciát. Javasoljuk, hogy legalább egy plusz számjegyet tároljon a kívánt x n pontosság felett , hogy minimalizálja a kerekítési hibákat.

Bakhshali módszer

Ezt a négyzetgyök közelítési módszert egy ősi indiai kéziratban írták, amelyet Bakhshali-kéziratnak neveztek . A módszer ekvivalens a babiloni módszer két iterációjával x 0 kezdeti értékkel . Így az algoritmus kvadratikusan konvergens, ami azt jelenti, hogy a közelítés érvényes előjeleinek száma minden iterációval körülbelül négyszeresére nő [8] . Az algoritmus modern jelöléssel való ábrázolása a következő: Számítsa ki , legyen x 0 2 az S gyök kezdeti közelítése . Az iterációkat szekvenciálisan hajtják végre

Ezzel fel lehet építeni egy racionális közelítést a négyzetgyökhöz, egész számmal kezdve. Ha egy S -hez közeli egész számot választunk, és az a különbség, amelynek abszolút értékét minimalizáljuk, akkor az első iteráció a következőképpen írható fel:

Bakhshali módszere általánosítható tetszőleges gyök kiszámítására, beleértve a törtgyököket is [9] .

Példa

Használjuk ugyanazt a példát, amelyet a babiloni módszerre adtunk. Legyen Akkor az első iteráció megadja

Hasonlóképpen a második iteráció is megadja

Számonkénti szám

Ez egy módszer a négyzetgyök egyes számjegyeinek szekvenciális megkeresésére. A módszer lassabb, mint a babiloni, de van néhány előnye

  • Könnyebb manuálisan számolni.
  • A gyökér minden egyes talált jele ismert, hogy helyes, vagyis a következő iterációk során nem változik meg.
  • Ha a négyzetgyök reprezentáció véges számú számjegyet tartalmaz, az algoritmus az utolsó talált számjegy után véget ér. Így ellenőrizhető, hogy egy adott szám tökéletes négyzet -e .
  • Az algoritmus bármilyen számrendszerben működik , és természetesen az algoritmus működése a választott számrendszertől függ.

A Napier botjai további lehetőségeket tartalmaznak ennek az algoritmusnak a végrehajtásához. Az n-edik gyökér számjegyenkénti kiszámítására szolgáló algoritmus ennek a módszernek az általánosítása.

Alapelv

Tekintsük először azt az esetet, amikor egy Z szám négyzetgyökét találjuk meg , amely egy XY kétjegyű szám négyzete , ahol X a tízes számjegy, Y pedig az egyes számjegy. Nekünk van:

Először is határozzuk meg X értékét . X a legnagyobb számjegy, amelynél az X 2 nem haladja meg a Z -t, amelyből az utolsó két számjegy kimarad.

A következő iterációban úgy kötünk össze egy számpárt, hogy megszorozzuk X -et 2-vel, és az eredményt tízes helyzetbe tesszük, majd megpróbáljuk kideríteni, hogy Y mennyivel egyenlő .

Mivel esetünkben a válasz a pontos négyzetgyök, az algoritmus leáll.

Ugyanez az ötlet kiterjeszthető tetszőleges négyzetgyök kiszámítására. Képzeljük el, hogy N négyzetgyökét n pozitív szám összegeként találhatjuk meg úgy, hogy

Az identitás újrafelhasználásával

a jobb oldalt úgy ábrázolhatjuk

Ez a kifejezés lehetővé teszi a négyzetgyök meghatározását az értékek egymást követő kiválasztásával . Tegyük fel, hogy a számok már ki vannak választva, akkor az m-edik tagot adja meg , ahol a négyzetgyök talált közelítése. Most minden új kijelölésnek meg kell felelnie a rekurziónak

tehát mindenre a kezdeti értéknél Ha a pontos négyzetgyök megtalálható. Ha nem, akkor az összeg megfelelő közelítést ad a négyzetgyökhöz, és közelítési hiba lesz.

Például tizedesben van

ahol a számjegyek helyzetének mutatói és az együtthatók . A négyzetgyök kiszámításának minden m-edik lépésében egy közelítő négyzetgyök található. A nagyságrendet és az összegezhető tagokat a képletek adják meg

Mivel a helyzetjelzők páros hatványa 10, így bármelyik m-edik lépésben csak a maradék tag legmagasabb számjegypárjával kell dolgoznunk. Az alábbi szakasz ezt az eljárást szervezi.

Nyilvánvalóan hasonló módszerrel bármilyen számrendszerben ki lehet számítani a négyzetgyököt, nem feltétlenül decimálisan. Például a négyzetgyök számjegyenkénti megkeresése binárisan elég hatékony, mert az értéket a kis számjegykészletben (0,1}) keresi a rendszer. Ez gyorsabbá teszi a számítást, mivel minden lépésben az érték egyenlő vagy egyenlő azzal . Az a tény, hogy csak két lehetőség van, szintén megkönnyíti az érték kiválasztását a számítás m-edik lépésében. Ennek az az oka, hogy csak azt kell ellenőriznünk, hogy a Ha ez a feltétel teljesül, akkor a ; és ha nem, akkor azt is vesszük, hogy a 2-vel való szorzás balra tolással történik, segít a számításokban.

Tizedes számrendszer

Írjuk fel az eredeti számot decimális formában. A számokat az osztáshoz hasonlóan egy hosszú osztási algoritmussal írjuk fel , és a hosszú osztáshoz hasonlóan a négyzetgyök a felső sorba kerül. Most bontsuk párokra a számokat, vesszővel kezdve, mindkét oldalán. A négyzetgyök tizedespontja a négyzet tizedespontján lesz. Egy négyzetgyök számjegyet írunk egy négyzetgyök számjegypárra.

A bal szélső pozícióból kiindulva minden egyes számpárnál a következő eljárást hajtjuk végre:

  1. Levisszük a fel nem használt számjegyek legmagasabb párját (ha az összes számjegyet használjuk, írjunk "00"-t), és az előző lépés maradékától jobbra írjuk (az első lépésnél nincs maradék). Más szóval, szorozza meg a maradékot 100-zal, és adjon hozzá két számjegyet. Ez lesz a c aktuális értéke .
  2. Keresse meg p , y és x értékét így:
    • Legyen a már megtalált gyökér része , figyelmen kívül hagyva a tizedesvesszőt. (Az első lépésnél p = 0.)
    • Határozzuk meg a legnagyobb számot úgy, hogy . Új változót fogunk használni .
      • Jegyezzük meg, hogy a p csak megduplázódik , és a jobb oldalon hozzá van fűzve az x számjegy .
      • Vegyük észre, hogy x -et úgy találhatjuk meg, hogy véletlenszerűen kitaláljuk, mekkora legyen c /(20• p ) y próbaszámításával , majd x értéket az eredménytől függően magasabbra vagy alacsonyabbra vesszük.
    • A számjegyet a gyökér következő számjegyeként helyezzük el, vagyis az éppen leeresztett négyzetszámjegypár fölé. Most p következő értékét a régi értékből kapjuk a képlet segítségével .
  3. Vonja ki y -t c -ből , hogy új maradékot képezzen.
  4. Ha a maradék nulla, és nincs több lefelé mozgatható számjegy, az algoritmus leáll. Ellenkező esetben visszatérünk az 1. lépéshez, és végrehajtjuk a következő iterációt.
Példák

Keresse meg a 152,2756 négyzetgyökét.

1 2. 3 4 / \/ 01 52.27 56 01 1*1 <= 1 < 2*2 x = 1 01 y = x*x = 1*1 = 1 00 52 22*2 <= 52 < 23*3 x = 2 00 44 év = (20+x)*x = 22*2 = 44 08 27 243*3 <= 827 < 244*4 x = 3 07 29 év = (240+x)*x = 243*3 = 729 98 56 2464*4 <= 9856 < 2465*5 x = 4 98 56 y = (2460+x)*x = 2464*4 = 9856 00 00 Algoritmus leáll: Válasz 12.34

Bináris számrendszer

Ez a szakasz a Számjegyenkénti számítás szakasz formalizmusát használja , kisebb módosításokkal, hogy , és mindegyik egyenlő vagy . Most végigfuttatjuk az összeset lefelétől , és hozzávetőleges megoldást készítünk mindazok összegeként, amelyeknek értéket találunk. Annak meghatározásához, hogy egyenlő-e vagy egyenlő -e , vesszük . Ha (vagyis a közelítésünk négyzete beleértve nem haladja meg az eredeti négyzetet), akkor beállítjuk , ellenkező esetben és . Az egyes lépéseknél a négyzetesítés elkerülése érdekében eltároljuk a különbséget , és minden iterációnál frissítjük a c beállításával . Kezdetben a legnagyobbat állítottuk be a -val .



Kiegészítő optimalizálásként a és , két tagot tárolunk abban az esetben, ha nem nulla, külön változókban , :

és minden lépésben hatékonyan frissíthető:

vegye észre, az

, ami az alábbi függvény által visszaadott végeredmény.

Az algoritmus implementációja C nyelven [10] :

int32_t isqrt(int32_tn) { assert(("a bemeneti érték nem lehet negatív", n > 0)); int32_t x = n; // int32_t c = 0; // // négy <= n legnagyobb hatványával kezdődik int32_t d = 1 << 30; // A második legjelentősebb bitet állítsa 1-re. // Ugyanaz, mint ((előjel nélküli)INT32_MAX + 1) / 2. míg (d > n) d >>= 2; while (d != 0) // for { if (x >= c + d) // if , akkor { x -= c + d; // c = (c >> 1) + d; // } más c >>= 1; // d >>= 2; // } vissza c; // }

Gyorsabb algoritmus valósítható meg bináris és decimális jelölésben is, ha táblákat használunk a kijelöléshez, vagyis a több memóriahasználat elvének megvalósítása csökkenti a végrehajtási időt [11] .

Exponenciális identitás

A zsebszámológépek általában jó exponenciális és természetes logaritmus programokat valósítanak meg . Ezután az S négyzetgyök kiszámítása a logaritmusok ( ) és az exponenciálisok ( ) tulajdonságainak felhasználásával történik:

A tört nevezője az n- edik gyökérnek felel meg. Esetünkben a nevező 2. Ugyanezt az azonosságot használjuk a négyzetgyök kiszámításához logaritmustáblázatok vagy diaszabályok segítségével .

Egy iteratív módszer két változóval

Ez a módszer a négyzetgyökének meghatározására alkalmazható, és a legjobban konvergál . Ez azonban nem jelent jelentős korlátot a számítógépes számítások számára, mivel a bináris számok lebegőpontos és fixpontos ábrázolásánál triviális 4 egész hatványával megszorozni, majd változtatással a 2 kívánt hatványára korrigálni. a kitevőt vagy eltolást, ill. Így belül eltolható . Sőt, az alábbi módszer nem általános osztást használ, hanem csak összeadást, kivonást, szorzást és kettő hatványával való osztást. Ezen műveletek közül az utolsót triviálisan hajtják végre. A módszer hátránya a hibahalmozódás, ellentétben az egyváltozós iteratív módszerekkel, mint például a babilóniai.

A módszer kezdeti lépése

Iteratív lépések

Ezután (for ).

Vegyük észre, hogy a konvergencia , és ezért , másodfokú.

A módszer bizonyítása meglehetősen egyszerű. Először átírjuk az iteratív definíciót így

.

Nos, ez bebizonyosodott

és ezért a kívánt eredményhez való konvergenciát a 0-hoz való konvergencia biztosítja, ami viszont abból következik .

Ezt a módszert 1950 körül fejlesztette ki M. W. Wilks , D. J. Wheeler és S. Gill [12] az EDSAC -ban, az egyik első elektronikus számítógépben [13] való használatra . Később a módszert általánosították a nem négyzetgyökökre [14] .

Iteratív módszerek egy szám négyzetgyökének reciproka kiszámítására

A következőkben iteratív módszereket mutatunk be S négyzetgyökének reciproka kiszámítására , azaz . Ha ilyen értéket találunk, akkor egyszerűen megszorozzuk: . Ezek az iterációk csak szorzást használnak, osztást nem. Mert a módszerek gyorsabbak a babiloni módszernél . A metódusok azonban instabilok, ha a kezdeti érték nincs közel a gyökérték reciprokájához, az iterációk eltérnek. Ezért előnyös lehet a babilóniai módszerrel iterálni a gyökér durva becsléséhez, mielőtt elkezdené ezeket a módszereket használni.

  • Ha a Newton-módszert alkalmazzuk az egyenletre, akkor egy olyan módszert kapunk, amely négyzetesen konvergál, és minden lépésben három szorzást használ:
  • Egy másik iteráció a Halley-módszer , amely a másodrendű Householder módszer A módszer kockaszerűen konvergál , de iterációnként öt szorzást használ: .
  • Ha fixpontos számokkal dolgozik, a 3-mal való szorzás és a 8-cal való osztás megvalósítható eltolásokkal és összeadásokkal. Lebegőpontos munka esetén a Halley-módszer iterációnként négy szorzásra redukálható az összes többi állandó előre kiszámításával és beállításával a kompenzáció érdekében: , .

Goldschmidt algoritmusa

Egyes számítógépek a Goldschmidt algoritmust használják a számításokhoz és egyidejűleg . A Goldschmidt-algoritmus gyorsabban talál, mint a Newton-Rapson iteráció azokon a számítógépeken, amelyek megosztott szorzás-összeadás műveletekkel rendelkeznek , és vagy egy csővezetékes lebegőpontos processzorral vagy két független lebegőpontos processzorral [15] .

A Goldschmidt-algoritmus írásának első módja a következővel kezdődik

(általában táblázatkeresést használnak)

és iterációkat hajtanak végre

amíg elég közel nem ér 1-hez, vagy fix számú iterációt nem hajtottak végre. Az iterációk konvergálnak

, .

Vegye figyelembe, hogy elhagyhatja a vagy a számítását , és ha mindkettőt kívánja, használhatja a végén, ahelyett, hogy minden iterációnál kiértékelné.

A második módszer, amely a kombinált szorzás-összeadás műveleteket használja, azzal kezdődik

(általában táblázatkeresést használnak)

és iterációkat hajtanak végre

amíg elég közel nem kerül a 0-hoz, vagy fix számú iterációt hajtanak végre. Az értékek konvergálnak

.

Taylor sorozat

Ha N egy közelítés , akkor a legjobb közelítés a négyzetgyök függvény Taylor-sorával érhető el :

A konvergencia sorrendje megegyezik a sorozatban használt kifejezések számával. Ha két kifejezést használunk, a módszer egyenértékű a babiloni módszerrel . Ha három kifejezést használunk, minden iteráció csaknem annyi műveletet használ, mint a Bakhshali-közelítés , de a konvergencia gyengébb. Ezért ez a módszer nem túl hatékony számítási módszer. A konvergencia sebességének maximalizálása érdekében N -t a lehető legkisebbre kell választani.

Folytatva a tört bővítést

A másodfokú irracionalitások (a formájú számok , ahol a , b és c egész számok), és különösen az egész számok négyzetgyöke, periodikusan folytonos törtek . Néha nem az a cél, hogy megtaláljuk a négyzetgyök számértékét, hanem a tört törtté való bővítése , és így a racionális közelítése. Legyen S egy pozitív szám, amelynek gyökét meg kell találni. Legyen a kezdeti közelítés és r a maradék, akkor felírhatjuk , mivel van , így S négyzetgyökét úgy fejezhetjük ki

Ha ezt a for kifejezést alkalmazzuk a tört nevezőjére, azt kapjuk

kompakt jelölés

A folyamatos törtbővítés számlálója/nevezője (lásd balra) nehezen írható le, és nehezen illeszthető be a meglévő dokumentumformázó rendszerbe. Emiatt egy speciális jelölést fejlesztettek ki a folyamatos törtek egész és periodikus részeinek tömör ábrázolására. Az egyik ilyen konvenció a lexikális "tört vonalat" használja a számláló és a nevező közötti sáv ábrázolására, amely lehetővé teszi, hogy a tört függőleges helyett vízszintesen írható:

Itt minden vízszintes vonást (törtszámban) három vonás képvisel - két függőleges és egy vízszintes, amelyek elkülönülnek a -tól .

A még tömörebb jelölésnek speciális formája van

A periodikusan folytatódó törteknél (amelyek mindegyike négyzetgyök) az ismétlődő rész csak egyszer szerepel, az ismétlődő rész fölött egy sávval:

2 esetén az érték 1, tehát az ábrázolás az lesz

Ezt az utat követve megkapjuk a négyzetgyök általánosított folytonos törtjét

Az ilyen tört négyzetgyök kiszámításához az első lépés a gyök helyettesítése és a nevezők számának kiválasztása. Például kanonikus formában 1 és 2 esetén 1, tehát a numerikusan folytatódott tört 3 nevező esetén

2. lépés: A folytonos törtet feltekerjük, nevezőnként, hogy egy racionális törtet kapjunk, amelynek a számlálója és a nevezője egész szám. A hajtogatási folyamat ezután így néz ki (az első három nevezőt figyelembe véve):

Végül (3. lépés) elosztjuk a számlálót a racionális tört nevezőjével, hogy megkapjuk a gyökér közelítését:

három tizedesjegyre kerekítve.

A √ 2 gyök valós értéke 1,41 és három jelentős számjegy. A relatív hiba 0,17%, tehát a racionális tört közel három tizedesjegyig jó. Ha több nevezőt veszünk, akkor a közelítésben következetes javulást kapunk - négy nevező törtet ad, ami majdnem 4 számjegyű pontosságot ad, stb.

Folyamatos törtek állnak rendelkezésre táblázatokban legalább kis számokhoz és jól ismert állandókhoz. Tetszőleges decimális jelölésű számok esetén az előre kiszámított értékek valószínűleg haszontalanok. Az alábbi táblázat a kis racionális törteket, amelyeket konvergenseknek nevezünk , több állandó kanonikus folytonos törtéből származik:

S folytatta a lövést ~tizedes Megfelelő frakciók
√2 _ 1,41421
3 1,73205
√5 _ 2,23607
6 2,44949
10 3,16228
1,77245
1,64872
1.27202

Megjegyzés: Az összes alkalmazható tört a 99-es nevezőig szerepel.

Általában minél nagyobb egy racionális tört nevezője, annál jobb a közelítés. Kimutatható az is, hogy egy folytatólagos tört levágása racionális törtet eredményez, amely jobban közelíti bármely olyan tört gyökét, amelynek nevezője kisebb vagy egyenlő, mint az adott tört nevezője. Például egyetlen 70-nél kisebb nevezővel rendelkező tört sem olyan jó, mint a 99/70 , amely megközelítőleg √2 .

Lukács szekvenciamódszere

Az első típusú Lucas-sorozatot a rekurzív reláció határozza meg

karakterisztikus polinomja pedig az

, van diszkriminánsa és gyökerei

Mindez a következő pozitív értéket adja

. Tehát ha meg akarjuk kapni , kiválaszthatjuk a és -t, majd a és segítségével számolhatunk nagy értékekre . A számítás leghatékonyabb módja és −

Eredmény:

majd itt :

A lebegőpontos ábrázolástól függő közelítések

A szám lebegőpontos számként jelenik meg: . Ezt a jelölési formátumot exponenciális jelölésnek is nevezik . Ennek a számnak a négyzetgyöke egyenlő , és hasonló képleteket lehet bemutatni a kockagyökökhöz és a logaritmusokhoz. Ez nem egyszerűsíti a feladatot, de ha csak közelítésre van szükség, akkor ez jó becslés a mantissza sorrendjére. Továbbá megértjük, hogy p néhány hatványa páratlannak bizonyulhat, akkor ahelyett, hogy az alap törthatványaival dolgoznánk, szorozunk vele, és kivonunk egyet a fokból, így párossá válik. A finomított ábrázolást a rendszer konvertálja a -ra , így a négyzetgyök .

Ha a mantisszának csak az egész részét vesszük, az 1-től 99-ig terjedő értékeket vehet fel, és ez indexként használható egy 99 előre kiszámított gyökből álló táblázatba a becslés befejezéséhez. A hexadecimális bázist használó számítógéphez szükség lehet nagyobb táblázatra, de a 2. bázis használatakor a táblázat csak három értékből fog állni - a mantissza finomított ábrázolásának egész részének lehetséges bitjei 01 lehetnek (ha a kitevő páros, így nincs eltolás, és vegye figyelembe, hogy a normalizált szám lebegőpontjában mindig van egy nem nulla magas számjegy), vagy ha a kitevő páratlan volt, 10 vagy 11, akkor ez az eredeti mantisszának az első két bitje. Ekkor a 6,25 (= binárisban 110,01) páros hatványra normalizálódik, így a mantissza bitpár 01, míg a 0,625 (= binárisban 0,101) páratlan hatványra normalizálódik, tehát szám-konverzióra van szükség , majd a bitpárra 10 lesz. Figyeljük meg, hogy a sorrend legkevésbé szignifikáns bitje tükröződik a mantissza párokba csoportosított legjelentősebb bitjében. A páros kitevőnek a legkisebb szignifikáns bitje nulla, és a négyes mantissza nulláról kezdődik, míg a páratlan kitevőnek 1 lesz a legkisebb jelentőségű bitben, a négyes mantissza pedig 1-gyel kezdődik. Tehát ha a kitevőt felezzük, akkor a egyenértékű a kitevő legkisebb szignifikáns bitjének eltolása a páronként csoportosított mantissza első bitjére.

A három elemből álló táblázat további mantissza bitekkel bővíthető. Számítógépek esetében azonban ahelyett, hogy az interpolációt táblázatban számolnánk ki, gyakran érdemes egy egyszerűbb számítási módot keresni, amely ugyanazt az eredményt adja. Most már minden a számábrázolási formátum pontos részleteitől és azoktól a műveletektől függ, amelyek elérhetők a szám egyes részeinek lekéréséhez és a velük való munkához. Például a Fortran tartalmaz egy funkciót EXPONENT(x)a diploma megszerzésére. A jó kezdeti közelítés megszerzésére fordított erőfeszítés megtérül a finomítási folyamat további iterációinak kiküszöbölésével, amelyek rossz közelítés esetén szükségesek.

Sok számítógép követi az IEEE lebegőpontos szabványt (vagy egy meglehetősen közeli reprezentációt), és nagyon gyors négyzetgyök közelítést kaphatunk Newton módszerének kiindulópontjaként. Ennek a közelítésnek a technikája abból fakad, hogy a lebegő számformátum (kettes bázis) közelíti a 2-es bázis logaritmust.

Tehát egy 32 bites IEEE lebegőpontos számhoz (amelyben a kitevő eltolása 127 [16] ) kaphat hozzávetőleges logaritmust, ha a számot 32 bites egész számként értelmezi, megszorozza és levonva a 127 eltolást, azaz

Például a hexadecimális 1.0 szám 0x3F800000, amely egész számként ábrázolható . A fenti képlet segítségével a várt módon kapja meg a -tól . Hasonlóképpen 0,5-öt kap az 1,5-ből (=0x3FC00000).

A négyzetgyök meghatározásához osszuk el a logaritmust 2-vel, és konvertáljuk vissza az eredményt. Az alábbi program bemutatja az ötletet. Vegye figyelembe, hogy a kitevő legkevésbé jelentős bitje szándékosan mantisszává van fordítva. A program lépéseinek igazolásának egyik módja, feltételezve, hogy ez a fokszám eltolása és a mantisszában tárolt bitek száma, az, hogy bebizonyítjuk

/* Tegyük fel, hogy a lebegő szám IEEE 754 formátumú */ #include <stdint.h> float sqrt_approx ( float z ) { egyesülés { float f ; uint32_t i ; } val = { z }; /* A típus konvertálása a bitábrázolás megváltoztatása nélkül */ /* * Bizonyítsuk be, hogy * ((((val.i / 2^m) - b) / 2) + b) * 2^m = ((val.i - 2^m) / 2) + ((b + 1) / 2) * 2^m) * ahol * b = teljesítményeltolás * m = bitek száma mantisszában */ val . i -= 1 << 23 ; /* Levonás 2^m. */ val . i >>= 1 ; /* Oszd 2-vel. */ val . i += 1 << 29 ; /* Hozzáadás ((b + 1) / 2) * 2^m. */ return val . f ; /* Újra lebegésként értelmezni */ }

A függvény magját képező három aritmetikai művelet egy sorban ábrázolható. A maximális relatív hiba csökkentése érdekében további finomításokat lehet hozzáadni. Így a három művelet, beleértve a valósra való redukciót, átírható így

val . i = ( 1 << 29 ) + ( érték i >> 1 ) - ( 1 << 22 ) + a ; _

ahol a egy eltolás a közelítési hibák csökkentésére. Például, ha a = 0, az eredmények pontosak 2 páros hatványaira (pl. 1,0), de más számok esetén az eredmény kissé nagy lesz (pl. 1,5 2,0 helyett 1,414... 6%-os hibával). A = -0x4B0D2 esetén a maximális relatív hiba ±3,5%-ra csökken.

Ha a közelítést a Newton-módszer kezdőértékeként kell használni az egyenletben , akkor a következő részben bemutatott inverz alak előnyösebb.

A négyzetgyök reciproka

Az alábbiakban bemutatjuk a fenti eljárás egy változatát, amely felhasználható a négyzetgyök inverzének kiszámításához, azaz . Ezt a változatot Greg Walsh írta. Az eltolási közelítés 4%-nál kisebb relatív hibát ad, és a hiba 0,15%-ra csökken a Newton-módszer egy iterációja után [17] . A számítógépes grafikában ez egy nagyon hatékony módja a vektorok normalizálásának.

float invSqrt ( float x ) { float xhalf = 0,5f * x ; szakszervezet { float x ; int i ; } u ; u . x = x ; u . i = 0x5f375a86 - ( u . i >> 1 ); /* A következő sor tetszőleges számú alkalommal megismételhető a pontosság növelése érdekében */ u . x = u . x * ( 1,5f - xhalf * u . x * u . x ); térj vissza . x ; }

Néhány VLSI megvalósítja a négyzetgyök reciprokának meghatározását polinomiális becsléssel, majd Goldschmidt-iterációval [18] .


Egy negatív vagy komplex szám gyöke

Ha , akkor a fő gyöke egyenlő

Ha , ahol a és b valós számok és , akkor a fő gyöke egyenlő

Ez a [19] [20] négyzetre emelésével ellenőrizhető . Itt

az S szám modulusa . Egy komplex szám főgyöke nem negatív valós résszel rendelkező gyökként van definiálva.

Lásd még

Jegyzetek

  1. A főgyökön kívül van egy negatív négyzetgyök, amely abszolút értékben egyenlő a főgyökkel, de ellenkező előjellel, kivéve a nulla esetét, amikor két azonos nulla gyök van.
  2. A kettes és a hatos faktort azért használjuk, mert ezek adott számjegyekkel közelítik az alsó és felső lehetséges értékek geometriai átlagát : és .
  3. A kerekítetlen becslés maximális abszolút hibája 2,65 a 100. pontban, és maximális relatív hibája 26,5% az y=1, 10 és 100 pontokban
  4. Ha a szám pontosan félúton van két négyzet között, például 30,5, akkor vegyük a nagyobb számot, ami esetünkben 6
  5. ↑ Ez az y=x 2 érintő egyenes egyenlete az y=1 pontban.
  6. Fowler és Robson 1998 , p. 376.
  7. Heath, 1921 , p. 323–324.
  8. Bailey, Borwein, 2012 , p. 646–657.
  9. Visszatérve a Bahsali kézirathoz . Simply Curious blog (2018. június 5.). Letöltve: 2020. december 21. Az eredetiből archiválva : 2020. október 26.
  10. Gyors egész négyzetgyök, Mr. Woo's abacus algoritmus (archivált)
  11. Egész négyzetgyök függvény . Letöltve: 2021. december 30. Az eredetiből archiválva : 2007. szeptember 30.
  12. Wilkes, Wheeler, Gill, 1951 .
  13. Campbell-Kelly, 2009 .
  14. Gower, 1958 , p. 142-143, 1958.
  15. Markstein, Peter (2004. november). Szoftverfelosztás és négyzetgyök Goldschmidt algoritmusaival (PDF) . 6. konferencia a valós számokról és a számítógépekről . Dagstuhl , Németország. CiteSeerX  10.1.1.85.9648 . Archivált (PDF) az eredetiből ekkor: 2022-04-28 . Letöltve: 2021-12-30 . Elavult használt paraméter |deadlink=( súgó )
  16. 127-et adunk a szám kitevőjéhez, ami lehetővé teszi, hogy a kitevőt előjel nélküli számként értelmezzük.
  17. Fast Inverse Square Root archiválva : 2009. február 6., a Wayback Machine -ben, Chris Lomont
  18. "Reciprok, osztás, négyzetgyök és fordított négyzetgyök nagy sebességű kettős pontosságú számítása" , José-Alejandro Piñeiro és Javier Díaz Bruguera 2002 (absztrakt)
  19. Abramowitz, Stegun, 1964 , p. 17.
  20. Cooke, 2008 , p. 59.

Irodalom

Hivatkozások Weisstein, Eric W. Négyzetgyök-algoritmusok  (angol) a Wolfram MathWorld oldalon .