Karekök hesaplama yöntemleri - Methods of computing square roots

Karekök hesaplama yöntemleri vardır Sayısal analiz algoritmalar müvekkili veya negatif olmayan bulmak için, kare kök (genellikle gösterilir S, 2Sveya S1/2) gerçek bir sayı. Aritmetik olarak, kendisiyle çarpıldığında S'yi veren bir sayıyı bulma prosedürü olan S verildiği anlamına gelir; cebirsel olarak, x denkleminin negatif olmayan kökünü bulmak için bir prosedür anlamına gelir2 - S = 0; geometrik olarak, karenin bir kenarını inşa etmek için bir karenin alanı verildiği anlamına gelir.

Her gerçek sayının iki kare kökü vardır.[Not 1] Çoğu sayının temel karekökü, sonsuz ondalık genişlemeye sahip irrasyonel bir sayıdır. Sonuç olarak, bu tür herhangi bir karekökün ondalık açılımı, yalnızca bazı sonlu kesinlik yaklaşımına göre hesaplanabilir. Bununla birlikte, bir tam kare tamsayının karekökünü alsak bile, sonuç kesin bir sonlu gösterime sahip olsun, onu hesaplamak için kullanılan yordam yalnızca giderek daha doğru olan bir dizi yaklaşımı döndürebilir.

devam eden kesir bir gerçek sayının temsili, ondalık veya ikili açılımı yerine kullanılabilir ve bu gösterim, herhangi bir rasyonel sayının karekökünün (zaten tam bir kare olmayan), rasyonel sayılara benzer şekilde periyodik, tekrar eden bir genişlemeye sahip olma özelliğine sahiptir. ondalık gösterim sisteminde yinelenen açılımları vardır.

En yaygın analitik yöntemler yinelemelidir ve iki adımdan oluşur: uygun bir başlangıç ​​değeri bulma, ardından bazı sonlandırma kriterleri karşılanana kadar yinelemeli iyileştirme. Başlangıç ​​değeri herhangi bir sayı olabilir, ancak nihai sonuca yaklaştıkça daha az yineleme gerekecektir. Programlı hesaplama için en uygun olan bu türden en bilinen yöntem, hesaplamadaki türevin bir özelliğine dayanan Newton yöntemidir. Kağıt ve kalem sentetik bölme ve seri genişletme gibi birkaç yöntem, bir başlangıç ​​değeri gerektirmez. Bazı uygulamalarda bir tamsayı karekök en yakın tam sayıya yuvarlanmış veya kesilmiş karekök gereklidir (bu durumda değiştirilmiş bir prosedür kullanılabilir).

Kullanılan yöntem, sonucun ne için kullanılacağına (yani ne kadar doğru olması gerektiğine), prosedüre ne kadar çaba göstermeye istekli olduğuna ve hangi araçların elinizde olduğuna bağlıdır. Yöntemler kabaca zihinsel hesaplama için uygun olanlar, genellikle en azından kağıt ve kalem gerektirenler ve dijital bir elektronik bilgisayar veya başka bir bilgisayar cihazında yürütülecek programlar olarak uygulananlar olarak sınıflandırılabilir. Algoritmalar yakınsamayı (belirli bir kesinliğe ulaşmak için kaç tane yinelemenin gerekli olduğunu), bireysel işlemlerin hesaplama karmaşıklığını (yani bölme) veya yinelemeleri ve hata yayılmasını (nihai sonucun doğruluğu) hesaba katabilir.

Karekök bulma prosedürleri (özellikle 2'nin karekökü), en azından MÖ 17. yüzyıldaki antik Babil döneminden beri bilinmektedir. Birinci yüzyıl Mısırından Heron'un yöntemi, karekök hesaplamak için ilk doğrulanabilir algoritmaydı. Modern analitik yöntemler geliştirilmeye başlandıktan sonra Arap rakamı sistemi erken Rönesans'ta Batı Avrupa'ya. Günümüzde neredeyse tüm hesaplama aygıtları, açıklanan prosedürlerden birine göre bir programlama dili yapısı, bir derleyici içsel veya kitaplık işlevi veya bir donanım operatörü olarak hızlı ve doğru bir karekök işlevine sahiptir.

İlk tahmin

Birçok yinelemeli karekök algoritması bir başlangıç tohum değeri. Çekirdek sıfır olmayan pozitif bir sayı olmalıdır; 1 ile arasında olmalıdır , karekökü istenen sayı, çünkü karekök bu aralıkta olmalıdır. Tohum kökten uzaksa, algoritma daha fazla yineleme gerektirecektir. Biri ile başlarsa x0 = 1 (veya S), sonra yaklaşık olarak Sadece kökün büyüklük sırasını almak için yinelemeler boşa harcanacaktır. Bu nedenle, sınırlı doğruluğu olan ancak hesaplaması kolay olan kaba bir tahmine sahip olmak yararlıdır. Genel olarak, ilk tahmin ne kadar iyi olursa yakınsama o kadar hızlı olur. Newton yöntemi için (Babil veya Heron yöntemi olarak da adlandırılır), kökten biraz daha büyük bir tohum, kökten biraz daha küçük bir tohumdan biraz daha hızlı birleşir.

Genel olarak, bir tahmin kökü içerdiği bilinen keyfi bir aralığa dayanır (örneğin [x0, S / x0]). Tahmin, f (x) = için bir fonksiyonel yaklaşımın belirli bir değeridir. x aralık üzerinde. Daha iyi bir tahmin elde etmek, aralıkta daha sıkı sınırlar elde etmeyi veya f (x) için daha iyi bir işlevsel yaklaşım bulmayı içerir. İkincisi genellikle yaklaşımda daha yüksek dereceli bir polinom kullanılması anlamına gelir, ancak tüm yaklaşımlar polinom değildir. Yaygın tahmin yöntemleri arasında skaler, doğrusal, hiperbolik ve logaritmik yer alır. Ondalık taban genellikle zihinsel veya kağıt kalem tahmini için kullanılır. Bilgisayar tahminleri için ikili taban daha uygundur. Tahmin ederken, üs ve mantis Sayı bilimsel gösterimle ifade edileceği için genellikle ayrı olarak ele alınır.

Ondalık tahminler

Tipik olarak sayı ile ifade edilir bilimsel gösterim gibi nerede ve n bir tamsayıdır ve olası kareköklerin aralığı nerede .

Skaler tahminler

Skaler yöntemler, aralığı aralıklara böler ve her aralıktaki tahmin, tek bir skaler sayı ile temsil edilir. Aralık tek bir aralık olarak kabul edilirse, aritmetik ortalama (5.5) veya geometrik ortalama () zamanlar makul tahminlerdir. Bunlar için mutlak ve göreceli hata farklı olacaktır. Genel olarak, tek bir skaler çok yanlış olacaktır. Daha iyi tahminler, aralığı iki veya daha fazla aralığa böler, ancak skaler tahminler doğal olarak düşük doğruluğa sahiptir.

Geometrik olarak bölünmüş iki aralık için karekök olarak tahmin edilebilir[Not 2]

Bu tahminin maksimum mutlak hatası var a = 100'de ve a = 1'de maksimum% 100 bağıl hata.

Örneğin, faktörlü , tahmin . 246 mutlak hata ve yaklaşık% 70 nispi hata.

Doğrusal tahminler

Daha iyi bir tahmin ve kullanılan standart yöntem, işleve doğrusal bir yaklaşımdır küçük bir yay üzerinde. Yukarıdaki gibi, tabanın güçleri sayıdan çarpanlarına ayrılırsa ve [1,100] 'e düşürülen aralık, yayı kapsayan bir sekant çizgi veya yay boyunca herhangi bir yerde teğet bir çizgi yaklaşık olarak kullanılabilir, ancak yay ile kesişen en küçük kareler regresyon çizgisi daha doğru olacaktır.

En küçük kareler regresyon çizgisi, tahmin ve fonksiyonun değeri arasındaki ortalama farkı en aza indirir. Denklemi . Yeniden sıralama, . Hesaplama kolaylığı için katsayıları yuvarlama,

Bu en iyi tahmin ortalamada y = x fonksiyonunun tek parça doğrusal yaklaşımı ile elde edilebilir2 [1,100] aralığında. A = 100'de maksimum 1,2 mutlak hataya ve S = 1 ve 10'da maksimum% 30 bağıl hataya sahiptir.[Not 3]

10'a bölmek için, üssünden bir çıkarın veya mecazi olarak ondalık noktayı bir basamak sola kaydırın. Bu formülasyon için, herhangi bir ek sabit 1 artı küçük bir artış tatmin edici bir tahmin yapacaktır, bu nedenle tam sayıyı hatırlamak bir yük değildir. [1,100] aralığını kapsayan tek bir çizgi kullanan yaklaşım (yuvarlanmış ya da değil), bir anlamlı kesinlik basamağından daha azdır; bağıl hata 1 / 2'den büyük2, bu nedenle 2 bitten daha az bilgi sağlanır. Doğruluk ciddi şekilde sınırlıdır çünkü aralık, bu tür bir tahmin için oldukça büyük olan iki büyüklük sırasıdır.

Parça bazında doğrusal yaklaşımla çok daha iyi bir tahmin elde edilebilir: her biri orijinalin bazı alt arkına yaklaşan birden çok çizgi parçası. Ne kadar çok çizgi parçası kullanılırsa yaklaşım o kadar iyi olur. En yaygın yol teğet çizgiler kullanmaktır; kritik seçimler, yayın nasıl bölüneceği ve teğet noktalarının nereye yerleştirileceğidir. Yayı y = 1'den y = 100'e bölmenin etkili bir yolu geometriktir: iki aralık için, aralıkların sınırları orijinal aralığın sınırlarının kareköküdür, 1 * 100, yani [1,2100] ve [2100,100]. Üç aralık için sınırlar, 100'ün küp kökleridir: [1,3100], [3100,(3100)2], ve [(3100)2, 100], vb. İki aralık için, 2100 = 10, çok uygun bir sayı. Teğet doğruların türetilmesi kolaydır ve x = 1*10 ve x = 10*10. Denklemleri: y = 3,56x - 3,16 ve y = 11,2x - 31,6. Tersine çevrildiğinde, kare kökler: x = 0.28y + 0.89 ve x = .089y + 2.8. Böylece S = a * 10 için2n:

Maksimum mutlak hatalar, aralıkların yüksek noktalarında, a = 10 ve 100'de meydana gelir ve sırasıyla 0,54 ve 1,7'dir. Maksimum bağıl hatalar aralıkların uç noktalarındadır, a = 1, 10 ve 100'de ve her iki durumda da% 17'dir. % 17 veya 0.17, 1 / 10'dan daha büyüktür, bu nedenle yöntem, ondalık bir doğruluk basamağından daha az sonuç verir.

Hiperbolik tahminler

Bazı durumlarda hiperbolik tahminler etkili olabilir, çünkü bir hiperbol aynı zamanda dışbükey bir eğridir ve Y = x yayı boyunca uzanabilir.2 bir çizgiden daha iyi. Hiperbolik tahminler hesaplama açısından daha karmaşıktır, çünkü zorunlu olarak değişken bir bölüm gerektirirler. X'e yakın optimal hiperbolik bir yaklaşım2 [1,100] aralığında y = 190 / (10-x) -20. Yer değiştirme, karekök x = -190 / (y + 20) +10'dur. Böylece :

Kayan bölümün yalnızca bir ondalık basamak için doğru olması gerekir, çünkü genel olarak tahmin yalnızca bu kadar doğrudur ve zihinsel olarak yapılabilir. Hiperbolik bir tahmin, skaler veya doğrusal tahminlerden ortalama olarak daha iyidir. 100'de maksimum mutlak hata 1.58 ve maksimum bağıl hata 10'da% 16.0'dır. A = 10'daki en kötü durum için tahmin 3.67'dir. Kişi 10 ile başlarsa ve Newton-Raphson yinelemelerini hemen uygularsa, hiperbolik tahminin doğruluğu aşılmadan önce 3.66 veren iki yineleme gerekecektir. 75 gibi daha tipik bir durum için, hiperbolik tahmin 8.00'dır ve daha doğru bir sonuç elde etmek için 75'ten başlayan 5 Newton-Raphson yinelemesi gerekir.


Aritmetik tahminler

Parça bazında doğrusal yaklaşıma benzer, ancak cebirsel denklemler yerine sadece aritmetik kullanan bir yöntem, çarpım tablolarını tersten kullanır: 1 ile 100 arasındaki bir sayının karekökü 1 ile 10 arasındadır, dolayısıyla 25'in tam bir kare olduğunu biliyorsak (5 × 5) ve 36 tam bir karedir (6 × 6), bu durumda 25'e eşit veya 25'ten büyük ancak 36'dan küçük bir sayının karekökü 5 ile başlar. Benzer şekilde diğer kareler arasındaki sayılar için. Bu yöntem doğru bir ilk rakam verecektir, ancak bir rakam için doğru değildir: örneğin 35'in karekökünün ilk rakamı 5, ancak 35'in karekökü neredeyse 6'dır.

Daha iyi bir yol, aralığı kareler arasındaki aralıklara bölmek. Yani 25 ile 36 arasında herhangi bir sayı, yani 30.5, 5'i tahmin edin; 30.5'ten 36'ya kadar herhangi bir sayı, 6'yı tahmin edin.[Not 4] Prosedür, çarpım tablosundaki iki ürünün ortasında bir sınır numarası bulmak için sadece biraz aritmetik gerektirir. İşte bu sınırların bir referans tablosu:

aen yakın kare Avustralya, Brezilya ve Kuzey Amerika ülkelerinin kullandığı saat uygulaması.
1 - 2,51 (= 12)1
2.5 - 6.54 (= 22)2
6.5 - 12.59 (= 32)3
12,5 - 20,516 (= 42)4
20,5 - 30,525 (= 52)5
30,5 - 42,536 (= 62)6
42,5 - 56,549 (= 72)7
56.5 - 72.564 (= 82)8
72,5 - 90,581 (= 92)9
90,5 - 100100 (= 102)10

Son işlem, tahmini çarpmaktır k on kuvvetinin 2'ye bölünmesiyle, yani ,

Yöntem, en iyi ilk basamağa yuvarladığı için dolaylı olarak önemli bir doğruluk basamağı verir.

Yöntem, çoğu durumda işleneni sınırlayan en yakın kareler arasında enterpolasyon yapılarak 3 anlamlı basamak genişletilebilir. Eğer , sonra yaklaşık olarak k artı bir kesirdir, aradaki fark a ve k2 iki kare arasındaki farka bölünür:

nerede

Nihai işlem, yukarıdaki gibi, sonucu on'un kuvveti ile 2'ye bölerek çarpmaktır;

k ondalık bir basamaktır ve R ondalık sayıya dönüştürülmesi gereken bir kesirdir. Genellikle payda yalnızca tek bir rakam ve paydada bir veya iki rakam vardır, bu nedenle ondalık sayıya dönüştürme zihinsel olarak yapılabilir.

Örnek: 75'in karekökünü bulun. 75 = 75 × 10· 0, yani a 75 ve n 0. Çarpım tablosundan mantisin karekökü 8 punto olmalıdır bir şey çünkü 8 × 8 64, ancak 9 × 9 81 çok büyük, bu yüzden k 8; bir şey ondalık gösterimidir R. Kesir R 75 - k2 = 11, pay ve 81 - k2 = 17, payda. 11/17, 2 / 3s veya .67 olan 12 / 18'den biraz daha azdır, yani tahmin et .66 (burada tahmin etmek sorun değil, hata çok küçük). Yani tahmin 8 + .66 = 8.66. 75 üçe kadar anlamlı basamak 8.66'dır, bu nedenle tahmin 3 anlamlı basamak için iyidir. Bu yöntemi kullanan bu tür tahminlerin tümü o kadar doğru olmayacaktır, ancak yakın olacaktır.

İkili tahminler

İçinde çalışırken ikili sayı sistemi (bilgisayarların dahili olarak yaptığı gibi), gibi nerede , Karekök olarak tahmin edilebilir

3 anlamlı basamaklı katsayılara en küçük kareler regresyon çizgisi olan. a a = 2'de maksimum mutlak hata 0,0408 ve a = 1'de maksimum bağıl hata% 3,0'tır. Hesaplama açısından uygun yuvarlatılmış bir tahmin (çünkü katsayılar 2'nin üsleridir):

[Not 5]

2'de maksimum mutlak hata 0,086 ve maksimum bağıl hata% 6,1 olan = 0.5 ve =2.0.

İçin ikili yaklaşım verir . , dolayısıyla tahminin mutlak hatası 19 ve göreli hatası% 5,3'tür. Göreceli hata 1 / 2'den biraz daha az4, bu nedenle tahmin 4+ bit için iyidir.

İçin bir tahmin 8 bitlik iyi, yüksek 8 bitlik tablo aramasıyla elde edilebilir. , yüksek bitin çoğu kayan nokta gösteriminde örtük olduğunu ve 8'in alt bitinin yuvarlanması gerektiğini hatırlayarak. Tablo 256 bayt önceden hesaplanmış 8 bitlik karekök değerlerinden oluşmaktadır. Örneğin, 11101101 dizini için2 1.8515625'i temsil eden10giriş 101011102 1.359375'i temsil eden101.8515625'in karekökü10 8 bit hassasiyete kadar (2+ ondalık basamak).

Babil yöntemi

Başlangıç ​​değerlerini kullanarak 100 (± 10) 'un karekökünü yaklaştırmak için Babil yönteminin kullanımını gösteren grafik x0 = 50, x0 = 1, ve x0 = −5. Pozitif bir başlangıç ​​değerinin pozitif kök ve negatif bir başlangıç ​​değerinin negatif kök verdiğine dikkat edin.

Belki ilk algoritma yaklaştırmak için kullanılır olarak bilinir Babil yöntemidoğrudan kanıt olmamasına rağmen, bilgilendirilmiş varsayımın ötesinde, isimsiz Babil matematikçiler tam olarak bu yöntemi kullandı.[1] Yöntem aynı zamanda Heron yöntemi, birinci yüzyıl Yunan matematikçisinden sonra İskenderiye Kahramanı yöntemin ilk açık tanımını kendi AD 60Metrica.[2] Temel fikir şudur: x negatif olmayan bir gerçek sayının kareköküne aşırı bir tahmindir S sonra S/x eksik bir tahmin olacaktır veya tam tersi olacaktır ve bu nedenle, bu iki sayının ortalamasının daha iyi bir yaklaşıklık sağlaması makul olarak beklenebilir (bu iddianın resmi kanıtı, aritmetik ve geometrik araçların eşitsizliği Bu ortalamanın her zaman karekök için fazla tahmin edildiğini gösteren makale Karekök, böylece yakınsama sağlar). Bu, kullanmaya eşdeğerdir Newton yöntemi çözmek için .

Daha doğrusu, eğer x bizim ilk tahminimiz ve e bizim tahminimizdeki hata öyle mi S = (x+ e)2, sonra iki terimliyi genişletebilir ve

dan beri .

Bu nedenle, hatayı telafi edebilir ve eski tahminimizi şu şekilde güncelleyebiliriz:

Hesaplanan hata kesin olmadığından, bu sonraki en iyi tahminimiz olur. Güncelleme süreci, istenen doğruluk elde edilene kadar yinelenir. Bu bir ikinci dereceden yakınsak Bu, yaklaşımın doğru basamaklarının sayısının her yinelemede kabaca iki katına çıktığı anlamına gelir. Aşağıdaki gibi ilerler:

  1. Keyfi bir pozitif başlangıç ​​değeriyle başlayın x0 (gerçek karekök daha yakın S, daha iyi).
  2. İzin Vermek xn + 1 ortalaması olmak xn ve S/xn (kullanmak aritmetik ortalama yaklaşık olarak geometrik ortalama ).
  3. İstenen doğruluk elde edilene kadar 2. adımı tekrarlayın.

Ayrıca şu şekilde temsil edilebilir:

Bu algoritma, p-adic sayılar, ancak gerçek karekökleri tanımlamak için kullanılamaz p-adik karekökler; Örneğin, bu yöntemle, gerçekte +3'a, ancak 2-adikte -3'e yakınsayan bir rasyonel sayılar dizisi oluşturabilir.

Misal

Hesaplamak S, nerede S = 125348, altı anlamlı rakama ulaşmak için yukarıdaki kaba tahmin yöntemini kullanın

Bu nedenle, 125348 ≈ 354.045.

Yakınsama

Farz et ki x0 > 0 ve S > 0. Sonra herhangi bir doğal sayı için n, xn > 0. Bırakın göreceli hata içinde xn tarafından tanımlanmak

ve böylece

O zaman gösterilebilir ki

Ve böylece

ve sonuç olarak bu yakınsama sağlanır ve ikinci dereceden.

Yakınsama için en kötü durum

Yukarıdaki kaba tahmin Babil yöntemiyle kullanılıyorsa, artan sırada en az doğru olan durumlar aşağıdaki gibidir:

Böylece her durumda,

Yuvarlama hataları yakınsamayı yavaşlatacaktır. İstenilen doğruluğun ötesinde en az bir ekstra rakam tutulması tavsiye edilir. xn yuvarlama hatasını en aza indirmek için hesaplanıyor.

Bakhshali yöntemi

Bir karekök yaklaşıklık bulmanın bu yöntemi, eski bir Hint matematiksel el yazması olan Bakhshali el yazması. Babil yönteminin iki yinelemesine eşdeğerdir. x0. Bu nedenle, algoritma çeyrek olarak yakınsaktır, bu da yaklaşıklığın doğru basamaklarının sayısının her yinelemede kabaca dört katına çıktığı anlamına gelir.[3] Modern gösterimi kullanan orijinal sunum şu şekildedir: , İzin Vermek x02 ilk yaklaşım olmak S. Ardından, art arda şu şekilde yineleyin:

Açıkça yazıldığında,

İzin Vermek x0 = N bunun için bir tam sayı olmak N2 en yakın tam kare S. Ayrıca, fark etsin d = S - N2, ardından ilk yineleme şu şekilde yazılabilir:

Bu, karekök için rasyonel bir yaklaşım verir.

Misal

Babil yönteminde verilen aynı örneği kullanarak, Ardından, ilk yinelemeler

Aynı şekilde ikinci yineleme de

Basamaklı hesaplama

Bu, bir dizideki karekökün her basamağını bulmanın bir yöntemidir. Babil yönteminden daha yavaştır, ancak birkaç avantajı vardır:

  • Manuel hesaplamalar için daha kolay olabilir.
  • Bulunan kökün her basamağının doğru olduğu bilinir, yani daha sonra değiştirilmesi gerekmez.
  • Karekökte sonlanan bir genişleme varsa, algoritma son rakam bulunduktan sonra sona erer. Böylece, belirli bir tamsayının bir sayı olup olmadığını kontrol etmek için kullanılabilir. kare sayı.
  • Algoritma herhangi biri için çalışır temel ve doğal olarak, ilerleme şekli seçilen tabana bağlıdır.

Napier kemikleri bu algoritmanın yürütülmesi için bir yardım içerir. değişen ninci kök algoritması bu yöntemin bir genellemesidir.

Temel prensip

İlk olarak, bir sayının karekökünü bulma durumunu düşünün Z, bu iki basamaklı bir sayının karesidir XY, nerede X onlar basamağıdır ve Y birimler rakamıdır. Özellikle:

Z = (10X + Y)2 = 100X2 + 20XY + Y2

Şimdi Basamaklı Basamak algoritmasını kullanarak, önce X. X en büyük basamaktır, öyle ki X2 daha az veya eşittir Z en sağdaki iki rakamı çıkardık.

Bir sonraki yinelemede, rakamları eşleştiriyoruz, çarpıyoruz X değerinin ne olduğunu anlamaya çalışırken onu onuncu yerine koyun. Y dır-dir.

Bu, cevabın mükemmel bir karekök olduğu basit bir durum olduğu için XYalgoritma burada durur.

Aynı fikir, daha sonra herhangi bir keyfi karekök hesaplamasına genişletilebilir. Varsayalım ki karekökünü bulabiliyoruz N toplamı olarak ifade ederek n pozitif sayılar öyle ki

Temel kimliği tekrar tekrar uygulayarak

sağ taraftaki terim şu şekilde genişletilebilir:

Bu ifade, aşağıdaki değerleri sırayla tahmin ederek karekökü bulmamızı sağlar. s. Diyelim ki sayılar zaten tahmin edildiyse, yukarıdaki toplamın sağ tarafının m'inci terimi ile verilir nerede şu ana kadar bulunan yaklaşık kareköktür. Şimdi her yeni tahmin özyinelemeyi tatmin etmeli

öyle ki hepsi için başlatma ile Ne zaman tam karekök bulundu; değilse, o zaman toplamı s, karekök için uygun bir yaklaşım verir. yaklaşıklık hatasıdır.

Örneğin, ondalık sayı sisteminde

nerede yer tutucular ve katsayılar . Karekök hesaplamasının herhangi bir m. Aşamasında, şimdiye kadar bulunan yaklaşık kök, ve toplama terimi tarafından verilir

Burada yer değerinden beri 10'un eşit bir kuvvetidir, yalnızca kalan terimin en önemli basamak çiftiyle çalışmamız gerekir herhangi bir m-inci aşamada. Aşağıdaki bölüm bu prosedürü kodlamaktadır.

Ondalık sayı sistemi dışındaki sayı sistemlerinde kare kökü hesaplamak için benzer bir yöntemin kullanılabileceği açıktır. Örneğin, ikili sayı sisteminde basamak basamak karekök bulmak oldukça etkilidir çünkü değeri daha küçük bir ikili rakamlar kümesinden {0,1} aranır. Bu, hesaplamayı daha hızlı hale getirir çünkü her aşamada ya için veya için . İçin yalnızca iki olası seçeneğimiz olduğu gerçeği aynı zamanda değerine karar verme sürecini de yapar hesaplamanın m. aşamasında daha kolay. Bunun nedeni, yalnızca kontrol etmemiz gerektiğidir. için Bu koşul yerine getirilirse, o zaman alırız ; o zaman değilse Ayrıca, 2 ile çarpmanın sol bit kaydırmalarıyla yapılması da hesaplamaya yardımcı olur.

Ondalık (10 tabanında)

Orijinal sayıyı ondalık biçimde yazın. Numaralar benzer şekilde yazılmıştır. uzun bölme algoritması ve uzun bölmede olduğu gibi, kök yukarıdaki satıra yazılacaktır. Şimdi rakamları ondalık noktadan başlayarak ve hem sola hem de sağa giderek çiftlere ayırın. Kökün ondalık noktası, karenin ondalık noktasının üzerinde olacaktır. Kökün bir basamağı, karenin her bir basamak çiftinin üzerinde görünecektir.

En soldaki rakam çiftinden başlayarak, her çift için aşağıdaki prosedürü uygulayın:

  1. Soldan başlayarak, henüz kullanılmamış en anlamlı (en soldaki) basamak çiftini indirin (tüm rakamlar kullanılmışsa, "00" yazın) ve bunları önceki adımın geri kalanının sağına yazın (ilk adımda adım, kalan kalmayacaktır). Diğer bir deyişle, kalanı 100 ile çarpın ve iki rakamı toplayın. Bu olacak Mevcut değer c.
  2. Bul p, y ve x, aşağıdaki gibi:
    • İzin Vermek p ol şimdiye kadar bulunan kökün parçası, herhangi bir ondalık nokta yok sayılır. (İlk adım için, p = 0.)
    • En büyük rakamı belirleyin x öyle ki . Yeni bir değişken kullanacağız y = x(20p + x).
      • Not: 20p + x sadece iki katı prakam ile x sağa eklenmiştir.
      • Not: x ne olduğunu tahmin ederek bulunabilir c/(20·p) bir deneme hesaplaması yapıyor ve yapıyor y, sonra ayarlama x gerektiği gibi yukarı veya aşağı.
    • Rakamı yerleştirin kökün bir sonraki basamağı olarak, yani az önce indirdiğiniz karenin iki basamağının üstünde. Böylece sonraki p eski olacak p çarpı 10 artı x.
  3. Çıkar y itibaren c yeni bir kalıntı oluşturmak için.
  4. Kalan sıfırsa ve indirilecek başka rakam yoksa, algoritma sonlandırılmıştır. Aksi takdirde, başka bir yineleme için 1. adıma geri dönün.

Örnekler

152.2756'nın karekökünü bulun.

          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                  y = (20 + x) * x = 22 * ​​2 = 44 08 27243 * 3 <= 827 <244 * 4 x = 3  07 29               y = (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 Algoritma sona eriyor: Cevap 12.34

İkili sayı sistemi (2 taban)

Basamaklı algoritmaların özünde bir arama ve test adımı vardır: bir basamak bulun, , mevcut bir çözümün sağına eklendiğinde , öyle ki , nerede bir kökün istendiği değerdir. Genişleyen: . Şu anki değeri Veya genellikle geri kalanı, ikili sistemde çalışırken, değer olarak aşamalı olarak verimli bir şekilde güncellenebilir. tek bir bit setine (2'nin gücü) ve hesaplamak için gereken işlemlere sahip olacaktır. ve daha hızlı değiştirilebilir bit kayması operasyonlar.

Misal

Burada ikiliye dönüştürüldüğünde 1010001 veren 81'in karekökünü elde ederiz. Sol sütundaki sayılar, hesaplamanın o aşamasında çıkarma için kullanılacak sayı ile sıfır arasındaki seçeneği verir. Son cevap 1001, ondalık sayı 9'dur.

             1 0 0 1            ---------           √ 1010001      1      1             1            ---------      101     01                 0             --------      1001     100                 0             --------      10001    10001               10001              -------                   0

Bu, basit bilgisayar uygulamalarına yol açar:[4]

işlevi is_square_root (), nerede  karekök olup olmadığını kontrol etmek istediğimiz sayı , nerede  fonksiyonun sonucudur , nerede  maksimum değerdir     süre  yapmak            şimdi  en yüksek güçtür  küçük veya eşittir     süre  yapmak        Eğer  sonra                                Başka                        dönüş 

Yukarıdaki notasyonu kullanarak, eşittir ve değişken akıma eşittir Bu, karekökünü istediğimiz sayının ve tüm bitlerin ayarlandığı mevcut yaklaşımımızın karesinin farkıdır. . Böylece ilk döngüde, 4'ün en yüksek gücünü bulmak istiyoruz. 2'nin en yüksek gücünü bulmak için . İkinci döngüde, num res + bit'ten büyükse, o zaman daha büyüktür ve onu çıkarabiliriz. Sonraki satıra eklemek istiyoruz -e bu da eklemek istediğimiz anlamına gelir -e bu yüzden istiyoruz . Sonra güncelle -e inside res which involves dividing by 2 or another shift to the right. Combining these 2 into one line leads to . Eğer isn't greater than then we just update -e inside res and divide it by 2. Then we update -e in bit by dividing it by 4. The final iteration of the 2nd loop has bit equal to 1 and will cause update of to run one extra time removing the factor of 2 from res making it our integer approximation of the root.

Faster algorithms, in binary and decimal or any other base, can be realized by using lookup tables—in effect trading more storage space for reduced run time.[5]

Exponential identity

Cep hesap makineleri typically implement good routines to compute the üstel fonksiyon ve doğal logaritma, and then compute the square root of S using the identity found using the properties of logarithms () and exponentials ():[kaynak belirtilmeli ]

The denominator in the fraction corresponds to the ninci kök. In the case above the denominator is 2, hence the equation specifies that the square root is to be found. The same identity is used when computing square roots with logarithm tables veya sürgülü kurallar.

A two-variable iterative method

This method is applicable for finding the square root of and converges best for .This, however, is no real limitation for a computer based calculation, as in base 2 floating point and fixed point representations, it is trivial to multiply by an integer power of 4, and therefore by the corresponding power of 2, by changing the exponent or by shifting, respectively. Bu nedenle, can be moved to the range . Moreover, the following method does not employ general divisions, but only additions, subtractions, multiplications, and divisions by powers of two, which are again trivial to implement. A disadvantage of the method is that numerical errors accumulate, in contrast to single variable iterative methods such as the Babylonian one.

The initialization step of this method is

while the iterative steps read

Sonra, (while ).

Note that the convergence of , and therefore also of , is quadratic.

The proof of the method is rather easy. First, rewrite the iterative definition of gibi

.

Then it is straightforward to prove by induction that

and therefore the convergence of to the desired result is ensured by the convergence of to 0, which in turn follows from .

This method was developed around 1950 by M. V. Wilkes, D. J. Wheeler ve S. Gill[6] kullanım için EDSAC, one of the first electronic computers.[7] The method was later generalized, allowing the computation of non-square roots.[8]

Iterative methods for reciprocal square roots

The following are iterative methods for finding the reciprocal square root of S hangisi . Once it has been found, find by simple multiplication: . These iterations involve only multiplication, and not division. They are therefore faster than the Babil yöntemi. However, they are not stable. If the initial value is not close to the reciprocal square root, the iterations will diverge away from it rather than converge to it. It can therefore be advantageous to perform an iteration of the Babylonian method on a rough estimate before starting to apply these methods.

  • Uygulanıyor Newton yöntemi denkleme produces a method that converges quadratically using three multiplications per step:
, ve
.

Goldschmidt’s algorithm

Some computers use Goldschmidt's algorithm to simultaneously calculate ve.Goldschmidt's algorithm finds faster than Newton-Raphson iteration on a computer with a kaynaşmış çarpma-ekle instruction and either a pipelined floating point unit or two independent floating-point units.[9]

The first way of writing Goldschmidt's algorithm begins

(typically using a table lookup)

and iterates

a kadar is sufficiently close to 1, or a fixed number of iterations. The iterations converge to

, ve
.

Note that it is possible to omit either ve from the computation, and if both are desired then may be used at the end rather than computing it through in each iteration.

A second form, using kaynaştırılmış çarparak ekle operations, begins

(typically using a table lookup)

and iterates

a kadar is sufficiently close to 0, or a fixed number of iterations. This converges to

, ve
.

Taylor serisi

Eğer N is an approximation to , a better approximation can be found by using the Taylor serisi of kare kök işlev:

As an iterative method, the yakınsama sırası is equal to the number of terms used. With two terms, it is identical to the Babil yöntemi. With three terms, each iteration takes almost as many operations as the Bakhshali approximation, but converges more slowly.[kaynak belirtilmeli ] Therefore, this is not a particularly efficient way of calculation. To maximize the rate of convergence, choose N Böylece olabildiğince küçük.

Kesir genişletmeye devam

İkinci dereceden irrasyonel (numbers of the form , nerede a, b ve c are integers), and in particular, square roots of integers, have periodic continued fractions. Sometimes what is desired is finding not the numerical value of a square root, but rather its devam eden kesir expansion, and hence its rational approximation. İzin Vermek S be the positive number for which we are required to find the square root. Then assuming a to be a number that serves as an initial guess and r to be the remainder term, we can write Sahip olduğumuzdan beri , we can express the square root of S gibi

By applying this expression for to the denominator term of the fraction, we have

Compact notation

The numerator/denominator expansion for continued fractions (see left) is cumbersome to write as well as to embed in text formatting systems. Therefore, special notation has been developed to compactly represent the integer and repeating parts of continued fractions. One such convention is use of a lexical "dog leg" to represent the vinculum between numerator and denominator, which allows the fraction to be expanded horizontally instead of vertically:

Here, each vinculum is represented by three line segments, two vertical and one horizontal, separating itibaren .

An even more compact notation which omits lexical devices takes a special form:

For repeating continued fractions (which all square roots do), the repetend is represented only once, with an overline to signify a non-terminating repetition of the overlined part:

İçin 2, değeri is 1, so its representation is:

Proceeding this way, we get a genelleştirilmiş sürekli kesir for the square root as

The first step to evaluating such a fraction to obtain a root is to do numerical substitutions for the root of the number desired, and number of denominators selected. For example, in canonical form, is 1 and for 2, is 1, so the numerical continued fraction for 3 denominators is:

Step 2 is to reduce the continued fraction from the bottom up, one denominator at a time, to yield a rational fraction whose numerator and denominator are integers. The reduction proceeds thus (taking the first three denominators):

Finally (step 3), divide the numerator by the denominator of the rational fraction to obtain the approximate value of the root:

rounded to three digits of precision.

The actual value of 2 is 1.41 to three significant digits. The relative error is 0.17%, so the rational fraction is good to almost three digits of precision. Taking more denominators gives successively better approximations: four denominators yields the fraction , good to almost 4 digits of precision, etc.

Usually, the continued fraction for a given square root is looked up rather than expanded in place because it's tedious to expand it. Continued fractions are available for at least square roots of small integers and common constants. For an arbitrary decimal number, precomputed sources are likely to be useless. The following is a table of small rational fractions called yakınsayanlar reduced from canonical continued fractions for the square roots of a few common constants:

Sdevamı kesir~decimalyakınsayanlar
21.41421
31.73205
52.23607
62.44949
103.16228
1.77245
1.64872
1.27202

Note: all convergents up to and including denominator 99 listed.

In general, the larger the denominator of a rational fraction, the better the approximation. It can also be shown that truncating a continued fraction yields a rational fraction that is the best approximation to the root of any fraction with denominator less than or equal to the denominator of that fraction - e.g., no fraction with a denominator less than or equal to 99 is as good an approximation to 2 as 140/99.

Lucas sequence method

Lucas dizisi birinci türden Un(P,Q) tarafından tanımlanır tekrarlama ilişkileri:

and the characteristic equation of it is:

o var ayrımcı and the roots:

all that yield the following positive value:

so when we want , we can choose ve , and then calculate kullanma ve for large value of .The most effective way to calculate ve dır-dir:

Özet:

then when :

Approximations that depend on the floating point representation

A number is represented in a kayan nokta biçimlendir aynı zamanda bilimsel gösterim. Its square root is and similar formulae would apply for cube roots and logarithms. On the face of it, this is no improvement in simplicity, but suppose that only an approximation is required: then just is good to an order of magnitude. Next, recognise that some powers, p, will be odd, thus for 3141.59 = 3.14159 × 103 rather than deal with fractional powers of the base, multiply the mantissa by the base and subtract one from the power to make it even. The adjusted representation will become the equivalent of 31.4159 × 102 so that the square root will be 31.4159 × 10.

If the integer part of the adjusted mantissa is taken, there can only be the values 1 to 99, and that could be used as an index into a table of 99 pre-computed square roots to complete the estimate. A computer using base sixteen would require a larger table, but one using base two would require only three entries: the possible bits of the integer part of the adjusted mantissa are 01 (the power being even so there was no shift, remembering that a normalleştirilmiş floating point number always has a non-zero high-order digit) or if the power was odd, 10 or 11, these being the first iki bits of the original mantissa. Thus, 6.25 = 110.01 in binary, normalised to 1.1001 × 22 an even power so the paired bits of the mantissa are 01, while .625 = 0.101 in binary normalises to 1.01 × 2−1 an odd power so the adjustment is to 10.1 × 2−2 and the paired bits are 10. Notice that the low order bit of the power is echoed in the high order bit of the pairwise mantissa. An even power has its low-order bit zero and the adjusted mantissa will start with 0, whereas for an odd power that bit is one and the adjusted mantissa will start with 1. Thus, when the power is halved, it is as if its low order bit is shifted out to become the first bit of the pairwise mantissa.

A table with only three entries could be enlarged by incorporating additional bits of the mantissa. However, with computers, rather than calculate an interpolation into a table, it is often better to find some simpler calculation giving equivalent results. Everything now depends on the exact details of the format of the representation, plus what operations are available to access and manipulate the parts of the number. Örneğin, Fortran teklifler EXPONENT(x) function to obtain the power. Effort expended in devising a good initial approximation is to be recouped by thereby avoiding the additional iterations of the refinement process that would have been needed for a poor approximation. Since these are few (one iteration requires a divide, an add, and a halving) the constraint is severe.

Many computers follow the IEEE (or sufficiently similar) representation, and a very rapid approximation to the square root can be obtained for starting Newton's method. The technique that follows is based on the fact that the floating point format (in base two) approximates the base-2 logarithm. Yani

So for a 32-bit single precision floating point number in IEEE format (where notably, the power has a önyargı of 127 added for the represented form) you can get the approximate logarithm by interpreting its binary representation as a 32-bit integer, scaling it by , and removing a bias of 127, i.e.

For example, 1.0 is represented by a onaltılık 0x3F800000 numarası tamsayı olarak alınırsa. Yukarıdaki formülü kullanarak elde edersiniz beklendiği gibi . Benzer şekilde, 1.5'ten 0.5 (0x3FC00000) elde edersiniz.

Log2approx.png

Karekökü elde etmek için logaritmayı 2'ye bölün ve değeri geri dönüştürün. Aşağıdaki program fikri göstermektedir. Üssün en düşük bitinin mantise yayılmasına kasıtlı olarak izin verildiğine dikkat edin. Bu programdaki adımları gerekçelendirmenin bir yolu, üssel önyargı ve mantiste açıkça depolanan bitlerin sayısıdır ve sonra


/ * Float değerinin IEEE 754 tek duyarlıklı kayan nokta biçiminde olduğunu varsayar * ve bu int 32 bittir. * /yüzen sqrt_approx(yüzen z) {    int val_int = *(int*)&z; / * Aynı bitler, ancak int olarak * /    /*     * Aşağıdaki kodu gerekçelendirmek için bunu kanıtlayın     *     * ((((değer_intisi / 2 ^ m) - b) / 2) + b) * 2 ^ m = ((değer_intisi - 2 ^ m) / 2) + ((b + 1) / 2) * 2 ^ m )     *     * nerede     *     * b = üssel sapma     * m = mantis bitlerinin sayısı     *     * .     */    val_int -= 1 << 23; / * 2 ^ m çıkar. * /    val_int >>= 1; / * 2'ye böl. * /    val_int += 1 << 29; / * Ekle ((b + 1) / 2) * 2 ^ m. * /    dönüş *(yüzen*)&val_int; / * Tekrar float olarak yorumla * /}

Yukarıdaki fonksiyonun özünü oluşturan üç matematiksel işlem tek bir satırda ifade edilebilir. Maksimum bağıl hatayı azaltmak için ek bir ayarlama eklenebilir. Dolayısıyla, oyuncu kadrosu hariç üç işlem şu şekilde yeniden yazılabilir:

val_int = (1 << 29) + (val_int >> 1) - (1 << 22) + a;

nerede a yaklaşım hatalarını ayarlamak için bir önyargıdır. Örneğin a = 0 sonuçlar 2'nin çift üsleri için doğrudur (ör. 1.0), ancak diğer sayılar için sonuçlar biraz fazla büyük olacaktır (ör. 1.414 yerine 2.0 için 1.5,% 6 hata ile). İle a = -0x4B0D2, maksimum bağıl hata ±% 3,5'e en aza indirilir.

Yaklaşım, aşağıdakiler için bir ilk tahmin için kullanılacaksa Newton yöntemi denkleme , daha sonra aşağıdaki bölümde gösterilen karşılıklı form tercih edilir.

Karekökün karşılıklı

Yukarıdaki yordamın bir varyantı aşağıda yer almaktadır ve bu, karşılıklı karekök, yani onun yerine, Greg Walsh tarafından yazılmıştır. Tamsayı kaydırma yaklaşımı% 4'ten daha az göreceli bir hata üretti ve hata, bir yineleme ile% 0,15'e daha da düştü. Newton yöntemi aşağıdaki satırda.[10] Bilgisayar grafiklerinde bir vektörü normalleştirmenin çok etkili bir yoludur.

yüzen invSqrt(yüzen x) {    yüzen xhalf = 0.5f * x;    Birlik {        yüzen x;        int ben;    } sen;    sen.x = x;    sen.ben = 0x5f375a86 - (sen.ben >> 1);    / * Doğruluğu artırmak için sonraki satır istenilen sayıda tekrar edilebilir * /    sen.x = sen.x * (1.5f - xhalf * sen.x * sen.x);    dönüş sen.x;}

Bazı VLSI donanımları, ikinci derece polinom tahminini ve ardından bir Goldschmidt yinelemesi.[11]

Negatif veya karmaşık kare

Eğer S <0, o zaman ana karekökü

Eğer S = a+bi nerede a ve b gerçek ve b ≠ 0 ise temel karekökü

Bu, kökün karesinin alınmasıyla doğrulanabilir.[12][13] Buraya

... modül nın-nin S. A'nın temel karekökü karmaşık sayı negatif olmayan gerçek kısmı olan kök olarak tanımlanır.

Ayrıca bakınız

Notlar

  1. ^ Temel kareköke ek olarak, sıfırın çift kareköküne sahip olan sıfır haricinde, büyüklük olarak eşit ancak işaret açısından ana kareköke zıt bir negatif karekök vardır.
  2. ^ İkinci ve altıncı faktörler, geometrik araçlar verilen basamak sayısıyla mümkün olan en düşük ve en yüksek değerlerin: ve .
  3. ^ Yuvarlanmamış tahminin maksimum mutlak hatası 100'de 2,65 ve maksimum bağıl hatası y = 1, 10 ve 100'de% 26,5'tir.
  4. ^ Sayı iki karenin tam ortasındaysa (30.5 gibi), bu durumda 6 olan en yüksek sayıyı tahmin edin
  5. ^ Bu tesadüfen, teğet doğrunun y = x denklemidir.2 y = 1'de.

Referanslar

  1. ^ Fowler, David; Robson, Eleanor (1998). "Eski Babil Matematiğinde Karekök Yaklaşımları: Bağlamda YBC 7289". Historia Mathematica. 25 (4): 376. doi:10.1006 / hmat.1998.2209.
  2. ^ Heath, Thomas (1921). Yunan Matematik Tarihi, Cilt. 2. Oxford: Clarendon Press. pp.323 –324.
  3. ^ Bailey, David; Borwein, Jonathan (2012). "Eski Hint Kare Kökleri: Adli Paleo-Matematikte Bir Alıştırma" (PDF). American Mathematical Monthly. 119 (8). s. 646–657. Alındı 2017-09-14.
  4. ^ Bay Woo'nun abaküs algoritmasıyla hızlı tamsayı karekök (arşivlenmiş)
  5. ^ Tamsayı Karekök işlevi
  6. ^ M. V. Wilkes, D. J. Wheeler ve S. Gill, "Elektronik Dijital Bilgisayar için Programların Hazırlanması", Addison-Wesley, 1951.
  7. ^ M. Campbell-Kelly, "Bilgi İşlemin Kökeni", Scientific American, Eylül 2009.
  8. ^ J. C. Gower, "Kök Ekstraksiyon için Yinelemeli Bir Yöntem Üzerine Bir Not", The Computer Journal 1 (3): 142–143, 1958.
  9. ^ Markstein, Peter (Kasım 2004). Goldschmidt'in Algoritmalarını Kullanan Yazılım Bölümü ve Karekök (PDF). 6. Gerçek Sayılar ve Bilgisayar Konferansı. Dagstuhl, Almanya. CiteSeerX  10.1.1.85.9648.
  10. ^ Hızlı Ters Kare Kök Chris Lomont tarafından
  11. ^ "Karşılıklı, Bölmeli, Karekök ve Ters Karekök'ün Yüksek Hızlı Çift Hassas Hesaplaması" José-Alejandro Piñeiro ve Javier Díaz Bruguera 2002 (özet)
  12. ^ Abramowitz, Miltonn; Stegun, Irene A. (1964). Formüller, grafikler ve matematiksel tablolar içeren matematiksel işlevler el kitabı. Courier Dover Yayınları. s. 17. ISBN  978-0-486-61272-0., Bölüm 3.7.26, s. 17
  13. ^ Cooke Roger (2008). Klasik cebir: doğası, kökenleri ve kullanımları. John Wiley and Sons. s. 59. ISBN  978-0-470-25952-8., Alıntı: sayfa 59

Dış bağlantılar