f(x)=0 denkleminin kökü , segmentinde ve f'(x) ve f'(x)'in birinci ve ikinci türevleri üzerinde ayrılsın. f""(x)хн için sürekli ve sabit işaretlidir.

Kök arıtmanın bir adımında x n köküne bir sonraki yaklaşımın elde edilmesine (seçilmesine) izin verin. . Ardından, h n düzeltmesinin yardımıyla elde edilen bir sonraki yaklaşımın , kökün tam değerini verir

x \u003d x n + h n. (1.2.3-6)

sayma h n küçük değerde, f(x n + h n)'yi bir Taylor serisi olarak temsil ediyoruz, kendimizi lineer terimlerle sınırlıyoruz

f(x n + h n) "f(x n) + h n f'(x n). (1.2.3-7)

f(x) = f(х n + h n) = 0 olduğunu düşünürsek, f(х n) + h n f ’(х n) » 0 elde ederiz.

Dolayısıyla h n "- f (x n) / f'(x n). değeri değiştir h n(1.2.3-6)'da ve kökün tam değeri yerine x başka bir yaklaşım elde ederiz

Formül (1.2.3-8), belirli koşullar altında kökün tam değerine yakınsayan x 1, x 2, x 3 ... bir dizi yaklaşım elde etmenizi sağlar. x, yani

Newton yönteminin geometrik yorumuŞöyleki
(Şekil 1.2.3-6). B segmentinin sağ ucunu ilk yaklaşım x 0 olarak alıyoruz ve y \u003d f (x) fonksiyonunun grafiğindeki karşılık gelen B 0 noktasında bir teğet oluşturuyoruz. Tanjantın x ekseni ile kesişme noktası yeni, daha doğru bir yaklaşım olarak alınır x 1 . Bu prosedürü birçok kez tekrarlamak, bir dizi yaklaşım x 0, x 1, x 2 elde etmenizi sağlar. , . . ., kökün tam değerine eğilimlidir x.

Newton yönteminin (1.2.3-8) hesaplama formülü geometrik bir yapıdan elde edilebilir. Yani bir dik üçgende x 0 B 0 x 1 bacak
x 0 x 1 = x 0 V 0 / tga. B 0 noktasının fonksiyonun grafiğinde olduğu göz önüne alındığında f(x), ve hipotenüs, B 0 noktasında f (x) grafiğine bir teğet tarafından oluşturulur,

(1.2.3-9)

(1.2.3-10)

Bu formül, n'inci yaklaşım için (1.2.3-8) ile örtüşmektedir.

Şekil 1.2.3-6'dan, ilk yaklaşım olarak a noktasının seçilmesinin, bir sonraki yaklaşımın x 1'in kökün ayrıldığı segmentin dışında olacağı gerçeğine yol açabileceği görülebilir. x. Bu durumda, sürecin yakınsaması garanti edilmez. Genel durumda, ilk yaklaşımın seçimi aşağıdaki kurala göre yapılır: ilk yaklaşım için, böyle bir x 0 н noktası alınmalıdır, bu noktada f (x 0) × f '' (x 0) > 0, yani fonksiyonun işaretleri ile ikinci türevi eşleşir.

Newton yöntemi için yakınsama koşulları aşağıdaki teoremde formüle edilmiştir.

Denklemin kökü segmentte ayrılırsa, ve f'(x 0) ve f''(x) sıfırdan farklıdır ve işaretlerini xo, o zaman ilk yaklaşım gibi bir nokta seçersek x 0 О , ne f(x 0).f¢¢(x 0)>0 , sonra denklemin kökü f(x)=0 herhangi bir doğruluk derecesi ile hesaplanabilir.

Newton yönteminin hata tahmini aşağıdaki ifade ile belirlenir:

(1.2.3-11)

en küçük değer nerede de

En yüksek değer de

Hesaplama işlemi aşağıdaki durumlarda sonlandırılır: ,

belirtilen doğruluk nerede.

Ek olarak, Newton yöntemiyle kök inceltilirken belirli bir doğruluğu elde etme koşulu şu şekilde olabilir: aşağıdaki ifadeler:

Newton yöntemi algoritmasının şeması, Şek. 1.2.3-7.

Algoritmadaki orijinal f(x) denkleminin sol tarafı ve türevi f'(x) ayrı yazılım modülleri olarak tasarlanmıştır.

Pirinç. 1.2.3-7. Newton yönteminin algoritma diyagramı

Örnek 1.2.3-3 Newton yöntemini kullanarak x-ln(x+2) = 0 denkleminin köklerini, bu denklemin köklerinin x 1 н[-1.9;-1.1] segmentlerinde ayrılması şartıyla hassaslaştırın. ve x 2 n [-0.9;2 ].

Birinci türev f'(x) = 1 - 1 / (x + 2), segmentlerin her birinde işaretini korur:

f'(x)<0 при хÎ [-1.9; -1.1],

f’(x)>0 xО [-0.9; 2].

Herhangi bir x için ikinci türev f "(x) \u003d 1 / (x + 2) 2\u003e 0.

Böylece yakınsama koşulları sağlanır. Tüm izin verilen değerler aralığında f "" (x)> 0 olduğundan, ilk yaklaşım için kökü inceltmek için x 1 x 0 \u003d -1,9'u seçin (f (-1,9) × f ”(-1,9)> 0'dan beri). Bir dizi yaklaşıklık elde ederiz:

Hesaplamalara devam ederek, ilk dört yaklaşımın aşağıdaki sırasını elde ederiz: -1.9; –1.8552, -1.8421; -1.8414 . f(x) fonksiyonunun x=-1.8414 noktasındaki değeri f(-1.8414)=-0.00003'e eşittir .

Kök x 2 н[-0.9;2]'yi iyileştirmek için, ilk yaklaşımlar olarak 0 =2 (f(2)×f”(2)>0) seçiyoruz. x 0 = 2'ye dayanarak, bir dizi yaklaşıklık elde ederiz: 2.0; 1.1817; 1.1462; 1.1461. f(x) fonksiyonunun x=1.1461 noktasındaki değeri f(1.1461)= -0.00006'ya eşittir.

Newton'un yöntemi yüksek bir yakınsama oranına sahiptir, ancak her adımda sadece fonksiyonun değerinin değil, aynı zamanda türevinin de hesaplanmasını gerektirir.

akor yöntemi

Akor yönteminin geometrik yorumuŞöyleki
(Şekil 1.2.3-8).

A ve B noktalarından geçen düz bir doğru parçası çizelim. Sonraki yaklaşım x 1, kirişin 0x ekseni ile kesişme noktasının apsisidir. Düz bir doğru parçasının denklemini oluşturalım:

y=0 koyalım ve x=x 1 değerini bulalım (başka bir yaklaşım):

Köke bir sonraki yaklaşımı elde etmek için hesaplama işlemini tekrarlıyoruz - x 2 :

Bizim durumumuzda (Şekil 1.2.11) ve akor yönteminin hesaplama formülü şöyle görünecektir

Bu formül, b noktası sabit bir nokta olarak alındığında geçerlidir ve a noktası bir başlangıç ​​yaklaşımı olarak hareket eder.

Başka bir durum düşünün (Şekil 1.2.3-9), ne zaman .

Bu durum için düz çizgi denklemi şu şekildedir:

y = 0'da bir sonraki yaklaşım x 1

Daha sonra bu durum için akor yönteminin özyinelemeli formülü şu şekildedir:

Akor yöntemindeki sabit nokta için, f (x)∙f¢¢ (x)>0 koşulunun sağlandığı bölümün sonunu seçin.

Böylece, a noktası sabit bir nokta olarak alınırsa , o zaman x 0 = b bir ilk yaklaşım olarak davranır ve bunun tersi de geçerlidir.

f(x)=0 denkleminin kökünün kiriş formülü kullanılarak hesaplanmasını sağlayan yeterli koşullar, tanjant yöntemiyle (Newton yöntemi) aynı olacaktır, ancak ilk yaklaşım yerine sabit bir nokta seçilir. Akor yöntemi, Newton yönteminin bir modifikasyonudur. Fark, Newton yöntemindeki bir sonraki yaklaşımın, teğetin 0X ekseni ile kesişme noktası olması ve kiriş yönteminde - kirişin 0X ekseni ile kesişme noktası - yaklaşımların köke yakınsamasıdır. farklı taraflar.

Akor yönteminin hatasının tahmini, ifade ile belirlenir.

(1.2.3-15)

Akor yöntemiyle yineleme işleminin sonlanma koşulu

(1.2.3-16)

Eğer M1<2m 1 , то для оценки погрешности метода может быть использована формула | x n -x n -1 |£e.

Örnek 1.2.3-4. e x - 3x = 0 denkleminin kökünü, 10 -4 doğrulukla bir segmentte ayrılmış olarak belirtin.

Yakınsama durumunu kontrol edelim:

Bu nedenle, a=0 sabit bir nokta olarak seçilmeli ve f (0) \u003d 1> 0 ve f (0) * f "(0)> 0 olduğundan x 0 \u003d 1 ilk yaklaşım olarak alınmalıdır. .

Okulda matematik derslerinde denklem çözme konusunda eziyet çeken birçok öğrenci genellikle zamanlarını boşa harcadıklarından emindir ve bu arada böyle bir beceri hayatta sadece Descartes, Euler veya Lobaçevski.

Pratikte, örneğin tıpta veya ekonomide, bir uzmanın belirli bir ilacın aktif maddesinin konsantrasyonunun hastanın kanında gerekli seviyeye ne zaman ulaştığını veya zamanı hesaplamanın gerekli olduğunu bulması gereken durumlar vardır. belirli bir işletmenin karlı hale gelmesi için gereklidir.

En sık Konuşuyoruzçeşitli tiplerde doğrusal olmayan denklemlerin çözümü. Bunu mümkün olduğunca çabuk yapmak için, özellikle bilgisayar kullanımıyla, sayısal yöntemler izin verir. İyi çalışılmışlar ve uzun süredir etkinliklerini kanıtlamışlardır. Bunlar arasında, bu makalenin konusu olan Newton'un teğet yöntemi vardır.

Sorunun formülasyonu

Bu durumda, (a, b) segmentinde verilen ve üzerinde belirli değerler alan bir g fonksiyonu vardır, yani her x'e ait belirli bir g (x) sayısını ilişkilendirmek mümkündür ( a, b).

Fonksiyonun sıfıra ayarlandığı a ve b noktaları (uçlar dahil) arasındaki aralıktan denklemin tüm köklerini oluşturmak gerekir. Açıkça, bunlar y = g(x)'in OX ile kesişme noktaları olacaktır.

Bazı durumlarda, g(x)=0'ı benzer bir g 1 (x) = g 2 (x) ile değiştirmek daha uygundur. Bu durumda, g 1 (x) ve g 2 (x) grafiklerinin kesişme noktalarının apsisleri (x değeri) kök görevi görür.

Doğrusal olmayan bir denklemin çözümü, yerel ekstremum koşulunun fonksiyonun türevinin 0'a dönüştürülmesi olduğu optimizasyon problemleri için de önemlidir. Başka bir deyişle, böyle bir problem, p(x) = 0 denkleminin köklerini bulmaya indirgenebilir, burada p(x), g"(x) ile aynıdır.

Çözüm Yöntemleri

Kare veya basit trigonometrik denklemler gibi bazı doğrusal olmayan denklem türleri için kökler oldukça basit yollarla bulunabilir. Özellikle, her öğrenci, kare trinominin sıfırlandığı noktaların argümanının değerlerini kolayca bulabileceğiniz formülleri bilir.

Doğrusal olmayan denklemlerin köklerini çıkarma yöntemleri genellikle analitik (doğrudan) ve yinelemeli olarak ayrılır. İlk durumda, istenen çözüm, belirli sayıda aritmetik işlem için istenen köklerin değerini bulabileceğiniz bir formül biçimindedir. Benzer yöntemler üstel, trigonometrik, logaritmik ve temel cebirsel denklemler için geliştirilmiştir. Geri kalanı için özel sayısal yöntemler kullanmak gerekir. Kökleri gerekli doğrulukla bulmanızı sağlayan bilgisayarların yardımıyla uygulanması kolaydır.

Bunların arasında, sözde sayısal teğet yöntemi vardır.İkincisi, 17. yüzyılın sonunda büyük bilim adamı Isaac Newton tarafından önerildi. Sonraki yüzyıllarda, yöntem defalarca geliştirildi.

yerelleştirme

Analitik çözümleri olmayan karmaşık denklemleri çözmek için sayısal yöntemler genellikle 2 aşamada gerçekleştirilir. İlk önce onları yerelleştirmeniz gerekir. Bu işlem, çözülmekte olan denklemin bir kökünün bulunduğu OX üzerinde bu tür bölümleri bulmaktan ibarettir.

Bir segment düşünelim. Üzerinde g(x) süreksizliği yoksa ve uç noktalarda farklı işaretlerin değerlerini alıyorsa, o zaman a ile b arasında veya kendi içlerinde g(x) = 0 denkleminin en az 1 kökü vardır. benzersiz olması için g(x)'in monoton olması gerekir. Bilindiği gibi g'(x)'in sabit işaretli olması şartıyla böyle bir özelliğe sahip olacaktır.

Başka bir deyişle, g(x)'in süreksizlikleri yoksa ve monoton olarak artıyor veya azalıyorsa ve bitiş noktalarındaki değerlerinin özdeş işaretler, o zaman 1 ve sadece 1 kök g(x) vardır.

Bu durumda, bu kriterin çoklu olan denklemlerin kökleri için çalışmayacağını bilmelisiniz.

Denklemi ikiye bölerek çözme

Daha karmaşık sayısal teğetleri ve çeşitlerini düşünmeden önce, en çok tanımaya değer. basit bir şekilde kökleri tanımlamak. Buna bir dikotomi denir ve g (x) için sürekli açıksa, farklı işaretlerin koşulunun karşılandığı teoremine dayanan köklerin sezgisel bulgusuna atıfta bulunur, o zaman söz konusu segmentte en az 1 kök vardır g ( x) = 0.

Bulmak için segmenti ikiye bölmeniz ve orta noktayı x 2 olarak belirlemeniz gerekir. O zaman iki seçenek mümkündür: g (x 0) * g (x 2) veya g (x 2) * g (x 1) 0'a eşit veya daha küçüktür. Bu eşitsizliklerden birinin doğru olduğunu seçiyoruz. Uzunluk, üzerinde denklemin kökünü belirlemenin doğruluğunu belirleyen önceden seçilmiş belirli bir değerden daha az olana kadar yukarıda açıklanan prosedürü tekrarlıyoruz.

Yöntemin avantajları, güvenilirliğini ve basitliğini içerir ve dezavantajı, başlangıçta g(x)'in farklı işaretler aldığı noktaları belirleme ihtiyacıdır, bu nedenle çokluğu olan kökler için kullanılamaz. Ayrıca, bir denklem sistemi veya karmaşık kökler söz konusu olduğunda genelleme yapmaz.

örnek 1

g(x) = 2x 5 + x - 1 = 0 denklemini çözmek isteyelim. Uzun süre uygun bir segment aramamak için, örneğin iyi bilinen Excel programını kullanarak bir grafik oluşturuyoruz. . Kökün lokalizasyonu için segment olarak aralıktan değerler almanın daha iyi olduğunu görüyoruz. Üzerinde istenen denklemin en az bir kökü olduğundan emin olabiliriz.

g "(x) \u003d 10x 4 + 1, yani bu monoton artan bir fonksiyondur, bu nedenle seçilen segmentte sadece 1 kök vardır.

Uç noktaları denklemde yerine koyun. Sırasıyla 0 ve 1'imiz var. İlk adımda 0,5 noktasını çözüm olarak alıyoruz. Sonra g(0.5) = -0.4375. Yani, ikiye bölmek için bir sonraki segment olacaktır. Orta noktası 0.75'tir. İçinde, fonksiyonun değeri 0.226'dır. 0,625 noktasında bulunan segmenti ve orta noktasını dikkate alıyoruz. g(x) değerini 0,625'e kadar hesaplayın. -0.11'e eşittir, yani. negatif. Bu sonuca göre segmenti seçiyoruz. x = 0.6875 elde ederiz. O halde g(x) = -0.00532. Çözümün doğruluğu 0.01 ise, istenen sonucun 0.6875 olduğunu varsayabiliriz.

teorik temel

Newton'un tanjant yöntemini kullanarak bu kök bulma yöntemi, çok hızlı yakınsaması nedeniyle popülerdir.

Eğer x n, f" C 1 olacak şekilde bir f(x)=0 köküne bir yaklaşımsa, o zaman bir sonraki yaklaşım, f(x)'e teğet denkleminin ortadan kalktığı noktada olacaktır. , yani

x = x n+1 yerine koyun ve y'yi sıfıra ayarlayın.

Sonra teğet şöyle görünür:

Örnek 2

Klasik Newton'un tanjant yöntemini kullanmaya çalışalım ve analitik olarak bulunması zor veya imkansız olan bazı lineer olmayan denklemlere bir çözüm bulalım.

x 3 + 4x - 3 = 0 için kökleri biraz doğrulukla, örneğin 0.001 ile ortaya çıkarmak istensin. Bildiğiniz gibi, tek dereceli bir polinom formundaki herhangi bir fonksiyonun grafiği, OX eksenini en az bir kez geçmelidir, yani köklerin varlığından şüphe etmek için hiçbir neden yoktur.

Örneğimizi tanjant yöntemini kullanarak çözmeden önce, f (x) \u003d x 3 + 4x - 3 nokta nokta çiziyoruz. Bunu, örneğin bir Excel elektronik tablosu kullanarak yapmak çok kolaydır. Ortaya çıkan grafikten, OX ekseni ile kesiştiği ve y \u003d x 3 + 4x - 3 fonksiyonunun monoton olarak arttığı görülecektir. x 3 + 4x - 3 = 0 denkleminin bir çözümü olduğundan ve benzersiz olduğundan emin olabiliriz.

algoritma

Tanjant yöntemiyle herhangi bir denklem çözümü, f "(x) hesaplanmasıyla başlar.

O zaman ikinci türev x * 6 gibi görünecektir.

Bu ifadeleri kullanarak, formdaki tanjant yöntemini kullanarak denklemin köklerini belirlemek için bir formül yazabiliriz:

Daha sonra, bir başlangıç ​​yaklaşımı seçmek, yani, yinelemeli süreç için hangi noktanın başlangıç ​​noktası (rev. x 0) olarak dikkate alınacağını belirlemek gerekir. Segmentin sonlarını düşünüyoruz. Fonksiyonun koşulu ve x 0'daki 2. türevi doğru olan bizim için uygundur. Gördüğünüz gibi, x 0 = 0 yerine koyarken ihlal edilir, ancak x 0 = 1 oldukça uygundur.

o zaman, e doğruluklu teğetler yöntemiyle çözümle ilgileniyorsak, x n'nin değeri, |f(x n) / f'(x n)| eşitsizliğinin sağlanması koşuluyla, problemin gerekliliklerini karşıladığı kabul edilebilir.< e.

Teğetlerin ilk adımında elimizde:

  • x 1 \u003d x 0 - (x 0 3 + 4x 0 - 3) / (3x 0 2 + 4) \u003d 1- 0.2857 \u003d 0.71429;
  • koşul karşılanmadığından daha ileri gidiyoruz;
  • x 2 için 0,674'e eşit yeni bir değer elde ederiz;
  • fonksiyonun değerinin x 2'deki türevine oranının 0,0063'ten küçük olduğunu fark edersek işlemi durdururuz.

Excel'de Tanjant Yöntemi

Hesaplamaları manuel olarak (bir hesap makinesinde) yapmazsanız, ancak Microsoft'tan bir elektronik tablo işlemcisinin özelliklerini kullanırsanız, önceki örneği çok daha kolay ve daha hızlı çözebilirsiniz.

Bunu yapmak için Excel'de yeni bir sayfa oluşturmanız ve hücrelerini aşağıdaki formüllerle doldurmanız gerekir:

  • C7'de "= GÜÇ (B7; 3) + 4 * B7 - 3" yazarız;
  • D7'de "= 4 + 3 * DERECE (B7; 2)" giriyoruz;
  • E7'de "= (GÜÇ (B7; 3) - 3 + 4 * B7) / (3 * GÜÇ (B7; 2) + 4)" yazarız;
  • D7'de "= B7 - E7" ifadesini giriyoruz;
  • B8'de “= EĞER (E7) formül koşulunu giriyoruz< 0,001;"Завершение итераций"; D7)».

Belirli bir görevde, zaten B10 hücresinde, “Yinelemelerin tamamlanması” yazısı görünecek ve sorunu çözmek için bir satır yukarıda bulunan hücrede yazılı sayıyı almanız gerekecektir. Bunun için, oraya koşullu bir formül girerek ayrı bir “gerilebilir” sütun da seçebilirsiniz; buna göre, B sütununun bir veya başka bir hücresindeki içerik “Yinelemelerin tamamlanması” biçimini alırsa, sonucun orada yazılacağına göre.

Pascal'da Uygulama

Doğrusal olmayan y = x 4 - 4 - 2 * x denkleminin çözümünü Pascal'da tanjant yöntemini kullanarak bulmaya çalışalım.

Yaklaşık bir f "(x) \u003d (f (x + delta) - f (x)) / delta hesaplaması yapmaya yardımcı olacak yardımcı bir işlev kullanıyoruz. Yinelemeli işlemi tamamlamanın bir koşulu olarak, eşitsizliğinin yerine getirilmesi |x 0 -x 1 |< некого малого числа. В Паскале его запишем, как abs(x0 - x1)<= epsilon.

Program, türevin manuel olarak hesaplanmasını gerektirmemesi bakımından dikkat çekicidir.

akor yöntemi

Doğrusal olmayan denklemlerin köklerini belirlemenin başka bir yolunu düşünün. Yineleme işlemi, f(x)=0 için istenen köke ardışık yaklaşımlar olarak, akorun kesişme noktalarının değerlerinin a ve b uç noktalarının apsisleri ile OX ile alınmasından oluşur. , x 1 , ..., xn olarak gösterilir. Sahibiz:

Akorun OX ekseni ile kesiştiği nokta için ifade şu şekilde yazılacaktır:

x £ için ikinci türev pozitif olsun (f(x) = 0 yazarsak, tersi durum söz konusu olana indirgenir). Bu durumda, y \u003d f (x) grafiği, altta ve akorun altında bulunan bir dışbükey eğridir. AB. 2 durum olabilir: fonksiyon a noktasında pozitif olduğunda veya b noktasında negatif olduğunda.

İlk durumda, a ucunu sabit olarak seçiyoruz ve x 0 için b noktasını alıyoruz. Daha sonra yukarıda sunulan formüle göre ardışık yaklaşımlar monoton olarak azalan bir dizi oluşturur.

İkinci durumda, b ucu x 0 = a'da sabitlenir. Her iterasyon adımında elde edilen x değerleri monoton artan bir dizi oluşturur.

Böylece şunları söyleyebiliriz:

  • akor yönteminde sabit olan, fonksiyonun işaretleri ile ikinci türevinin çakışmadığı bölümün sonudur;
  • x - x m - kökü için yaklaşımlar, f (x) 'in f "" (x) işaretiyle çakışmayan bir işarete sahip olduğu tarafta yatar.

Bu ve önceki iterasyon adımı modulo abs(x m - x m - 1) ile köklerin yakınlık koşulları sağlanana kadar yinelemelere devam edilebilir.< e.

Değiştirilmiş yöntem

Birleşik akorlar ve teğetler yöntemi, denklemin köklerini oluşturmanıza ve onlara farklı yönlerden yaklaşmanıza izin verir. f(x) grafiğinin OX ile kesiştiği böyle bir değer, çözümü, yöntemlerin her birini ayrı ayrı kullanmaktan çok daha hızlı iyileştirmenize olanak tanır.

üzerinde varsa, f(x)=0 köklerini bulmamız gerektiğini varsayalım. Yukarıda açıklanan yöntemlerden herhangi birini kullanabilirsiniz. Bununla birlikte, kökün doğruluğunu önemli ölçüde artıracak olan bunların bir kombinasyonunu denemek daha iyidir.

Birinci ve ikinci türevlerin belirli bir x noktasında farklı işaretlere sahip olmaları koşuluna karşılık gelen bir başlangıç ​​yaklaşımı olan durumu ele alıyoruz.

Bu koşullar altında, lineer olmayan denklemlerin tanjant yöntemiyle çözümü, x 0 =b ise fazlalıklı bir kök bulmanızı sağlar ve sabit bir uçta akorları kullanma yöntemi, dezavantajlı yaklaşık bir kök bulmaya yol açar.

Kullanılan formüller:

Şimdi, aralıkta istenen x kökü aranmalıdır. Bir sonraki adımda, bu segmente zaten birleştirilmiş yöntemi uygulamanız gerekir. Bu şekilde devam ederek, formun formüllerini elde ederiz:

Birinci ve ikinci türevler arasında bir işaret farkı varsa, o zaman benzer bir şekilde tartışarak kökü inceltmek için aşağıdaki özyinelemeli formülleri elde ederiz:

Koşul olarak, tahmini eşitsizlik | b n +1 - bir n +1 |< e. Иными словами, на практике приходится находить решение при помощи двух методов, но на каждом шаге требуется выяснять, насколько полученные результаты близки друг другу.

Yukarıdaki eşitsizlik doğruysa, belirli bir yineleme adımında bulunan çözümler arasında tam olarak ortada olan belirli bir aralıkta doğrusal olmayan denklemin kökü olarak bir nokta alınır.

Kombine yöntem, TURBO PASCAL ortamında kolayca uygulanır. Güçlü bir istekle, Excel programında tablo yöntemini kullanarak tüm hesaplamaları yapmayı deneyebilirsiniz.

İkinci durumda, akorları kullanarak problemi çözmek için ve Isaac Newton tarafından önerilen yöntem için ayrı ayrı birkaç sütun seçilir.

Bu durumda, her satır, iki yöntem için belirli bir yinelemeli adımda hesaplamaları kaydetmek için kullanılır. Ardından, çözüm alanının sol tarafında, aktif çalışma sayfasında, her bir yöntem için bir sonraki yineleme adımının değerlerindeki fark modülünün hesaplanması sonucunun girildiği bir sütun vurgulanır. Bir diğeri, koşulun karşılanıp karşılanmadığını bulmak için kullanılan mantıksal yapı "IF"yi hesaplamak için formüle göre hesaplama sonuçlarını girmek için kullanılabilir.

Artık karmaşık denklemleri nasıl çözeceğinizi biliyorsunuz. Teğet yöntemi, daha önce gördüğünüz gibi, hem Pascal'da hem de Excel'de oldukça basit bir şekilde uygulanmaktadır. Bu nedenle, formülleri kullanarak çözülmesi zor veya imkansız olan bir denklemin köklerini her zaman oluşturabilirsiniz.

Tüm insanlar doğal olarak bilgi ararlar. (Aristoteles. Metafizik)

Sayısal Yöntemler: Doğrusal Olmayan Denklemleri Çözme

Denklemleri çözme sorunları pratikte sürekli olarak ortaya çıkar, örneğin ekonomide, bir iş geliştirirken, kârın ne zaman belirli bir değere ulaştığını bilmek istersiniz, tıpta, ilaçların etkisini incelerken, konsantrasyonun ne zaman olduğunu bilmek önemlidir. bir maddenin belirli bir seviyeye ulaşması vb.

Optimizasyon problemlerinde genellikle gerekli bir koşul olan bir fonksiyonun türevinin 0 olduğu noktaların belirlenmesi gerekir. yerel ekstremum.

İstatistikte, en küçük kareler yöntemini veya maksimum olabilirlik yöntemini kullanarak tahminler oluştururken, doğrusal olmayan denklemleri ve denklem sistemlerini de çözmek gerekir.

Bu nedenle, çözüm bulmayla ilgili bütün bir problem sınıfı vardır. doğrusal olmayan denklemler, örneğin denklemler veya denklemler, vb.

En basit durumda, segmentte tanımlanmış bir fonksiyonumuz var ( a, b ) ve belirli değerlerin alınması.

Her değer x bu segmentten sayıyı eşleştirebiliriz, bu işlevsel bağımlılık, matematiğin anahtar kavramı.

Fonksiyonun kökleri olarak adlandırılan böyle bir değer bulmamız gerekiyor.

Görsel olarak, fonksiyonun grafiğinin kesişme noktasını belirlememiz gerekiyor.apsis ekseni ile.

Biseksiyon Yöntemi

Bir denklemin köklerini bulmanın en basit yöntemi ikiye bölme yöntemidir veya ikilem.

Bu yöntem sezgiseldir ve bir problemi çözerken herkes benzer şekilde hareket eder.

Algoritma aşağıdaki gibidir.

Diyelim ki iki nokta bulduk ve böyle çeşitli işaretler, daha sonra bu noktalar arasında fonksiyonun en az bir kökü vardır.

Segmenti ikiye bölün ve girin orta puan .

O zaman ya , veya .

Uçlardaki değerlerin farklı işaretlere sahip olduğu segmentin yarısını bırakalım. Şimdi bu segmenti tekrar ikiye bölüyoruz ve gerekli doğruluğu elde etmek için fonksiyonun farklı işaretlere sahip olduğu sınırlar üzerinde bu kısmını bırakıyoruz.

Açıkçası, fonksiyonun kökünün bulunduğu alanı kademeli olarak daraltacağız ve bu nedenle onu belirli bir doğruluk derecesi ile belirleyeceğiz.

Açıklanan algoritmanın herhangi bir sürekli fonksiyon için geçerli olduğunu unutmayın.

İkiye bölme yönteminin avantajları, yüksek güvenilirliğini ve basitliğini içerir.

Yöntemin dezavantajı, uygulamaya başlamadan önce, fonksiyonun değerlerinin farklı işaretlere sahip olduğu iki noktanın bulunması gerektiği gerçeğidir. Yöntemin çoklukların bile köklerine uygulanamayacağı ve karmaşık kökler ve denklem sistemleri için genelleştirilemeyeceği açıktır.

Yöntemin yakınsama sırası doğrusaldır, her adımda doğruluk iki katına çıkar, ne kadar çok yineleme yapılırsa, kök o kadar doğru belirlenir.

Newton'un yöntemi: teorik temeller

Newton'un klasik yöntemi veya teğetler eğer denklemin köküne bir yaklaşım ise , daha sonra bir sonraki yaklaşım , noktada çizilen fonksiyona teğetin kökü olarak tanımlanır .

Bir noktada bir fonksiyona teğet denklemi şu şekildedir:

Tanjant denkleminde ve koyalım.

Daha sonra Newton'un yöntemindeki sıralı hesaplamaların algoritması aşağıdaki gibidir:

Teğet yönteminin yakınsaklığı ikinci derecedendir, yakınsama sırası 2'dir.

Böylece Newton'un tanjant yönteminin yakınsaması çok hızlıdır.

Bu harika gerçeği unutmayın!

Herhangi bir değişiklik yapılmadan, yöntem karmaşık duruma genelleştirilir.

Kök, ikinci çokluğun kökü veya daha yüksekse, yakınsama sırası düşer ve doğrusal hale gelir.

1. Egzersiz. Teğet yöntemini kullanarak (0, 2) doğru parçasındaki denklemin çözümünü bulunuz.

Egzersiz 2. Teğet yöntemini kullanarak (1, 3) doğru parçasındaki denklemin çözümünü bulunuz.

Newton'un yönteminin dezavantajları, yerelliğini içerir, çünkü yalnızca koşul varsa, keyfi bir başlangıç ​​yaklaşımı için yakınsaması garanti edilir. , aksi takdirde sadece kökün bazı komşuluklarında yakınsama vardır.

Newton yönteminin dezavantajı, her adımda türevleri hesaplama ihtiyacıdır.

Newton yönteminin görselleştirilmesi

Newton'un yöntemi (tanjant yöntemi) eğer denklem uygulanırsa f(x) = 0 kökü vardır ve aşağıdaki koşullar karşılanır:

1) işlev y= f(x) için tanımlı ve süreklidir;

2) f(af(b) < 0 (fonksiyon, segmentin sonunda farklı işaretlerin değerlerini alır [ a; b]);

3) türevler f"(x) ve f""(x) işareti segmentte tutun [ a; b] (yani işlev f(x) aralıkta artar veya azalır [ a; b], dışbükeyliğin yönünü korurken);

Yöntemin ana fikri şu şekildedir: segmentte [ a; b] böyle bir sayı seçilir x 0 , hangi altında f(x 0 ) ile aynı işarete sahip f"" (x 0 ), yani, koşul f(x 0 f"" (x) > 0 . Böylece apsisi olan bir nokta seçilir. x 0 , eğriye teğet nerede y= f(x) segmentte [ a; b] ekseni geçer Öküz. bir nokta için x 0 İlk olarak, segmentin uçlarından birini seçmek uygundur.

Newton'un yöntemini belirli bir örnek üzerinde düşünün.

artan bir fonksiyon verilsin y \u003d f (x) \u003d x 2 -2,(0;2) aralığında sürekli ve f"(x) = 2 x > 0 ve f "" (x) = 2 > 0 .

Resim1 . f(x)=x 2 -2

tanjant denklemi Genel görünüm temsili vardır:

y-y 0 = f" (x 0) (x-x 0).

Bizim durumumuzda: y-y 0 \u003d 2x 0 (x-x 0). x 0 noktası olarak bir nokta seçin B1 (b; f(b)) = (2,2). Fonksiyona bir teğet çiziyoruz y = f(x) B1 noktasında ve teğet ile eksenin kesişme noktasını gösterir. Öküz nokta x 1. İlk teğetin denklemini elde ederiz: y-2=2 2(x-2), y=4x-6.

Öküz: x 1 =

Resim2. İlk yinelemenin sonucu

y=f(x) Öküz bir noktadan x 1, bir puan alıyoruz B2 =(1.5; 0.25). Tekrar fonksiyona bir teğet çizin y = f(x) B 2 noktasında ve teğet ile eksenin kesişme noktasını belirtin Öküz nokta x2.

İkinci tanjant denklemi: y-0.25=2*1.5(x-1.5), y = 3 x - 4.25.

Teğet ve eksenin kesişme noktası Öküz: x 2 =.

Resim3. Newton yönteminin ikinci yinelemesi

Sonra fonksiyonun kesişme noktasını buluruz. y=f(x) ve eksene dik Öküz x 2 noktasından B3 noktasını alırız ve böyle devam eder.

Resim4. Teğet yönteminin üçüncü adımı

Kökün ilk yaklaşımı aşağıdaki formülle belirlenir:

= 1.5.

Kökün ikinci yaklaşımı aşağıdaki formülle belirlenir:

=

Kökün üçüncü yaklaşımı aşağıdaki formülle belirlenir:

Böylece , i Kökün -th yaklaşımı aşağıdaki formülle belirlenir:

Hesaplamalar, cevap eşleşmesinde gerekli olan ondalık basamaklara veya belirtilen doğruluk e'ye ulaşılıncaya kadar - eşitsizlik sağlanana kadar gerçekleştirilir. | xi- xi-1 | < e.

Bizim durumumuzda, üçüncü adımda elde edilen yaklaşımı hesap makinesinde hesaplanan gerçek cevapla karşılaştıralım:

Şekil 5. Hesap makinesinde hesaplanan 2'nin kökü

Gördüğünüz gibi, zaten üçüncü adımda 0.000002'den daha az bir hata aldık.

Böylece "2'nin karekökü" değerinin değerini herhangi bir doğruluk derecesi ile hesaplamak mümkündür. Bu harika yöntem Newton tarafından icat edilmiştir ve çok karmaşık denklemlerin köklerini bulmanızı sağlar.

Newton Yöntemi: C++ Uygulaması

Bu yazımızda, C++ ile bir konsol uygulaması yazarak denklem köklerini hesaplama işlemini otomatikleştiriyoruz. Ücretsiz ve çok kullanışlı bir C++ geliştirme ortamı olan Visual C++ 2010 Express'te geliştireceğiz.

Visual C++ 2010 Express ile başlayalım. Programın başlangıç ​​penceresi görünecektir. Sol köşede, "Proje Oluştur" u tıklayın.

Pirinç. 1. Visual C++ 2010 Express Başlangıç ​​Sayfası

Görünen menüde "Win32 Konsol Uygulaması"nı seçin, "Newton_Method" uygulamasının adını girin.

Pirinç. 2. Bir proje oluşturun

// Newton_method.cpp: konsol uygulaması için giriş noktasını tanımlar

#include "stdafx.h"

#Dahil etmek

ad alanı std kullanarak;

float f(double x) //f(x) = x^2-2 fonksiyonunun değerini döndürür

float df(float x) //türevin değerini döndürür

float d2f(float x) // ikinci türev değeri

int _tmain(int argc, _TCHAR* argv)

int çıkış = 0, i=0;//çıkış ve döngü değişkenleri

double x0,xn;// kök için hesaplanmış yaklaşımlar

double a, b, eps;// segment sınırları ve gerekli doğruluk

cout<<"Please input \n=>";

cin>>a>>b; // kökü arayacağımız segmentin sınırlarını girin

cout<<"\nPlease input epsilon\n=>";

cin>>eps; // istenen hesaplama doğruluğunu girin

if (a > b) // kullanıcı segmentin sınırlarını karıştırdıysa, bunları değiştirin

if (f(a)*f(b)>0) // fonksiyonun segmentin kenarlarındaki işaretleri aynı ise kök yoktur

cout<<"\nError! No roots in this interval\n";

if (f(a)*d2f(a)>0) x0 = a; // bir başlangıç ​​noktası seçmek için f(x0)*d2f(x0)>0'ı kontrol edin ?

xn = x0-f(x0)/df(x0); // ilk yaklaşımı say

cout<<++i<<"-th iteration = "<

while(fabs(x0-xn) > eps) // gerekli doğruluğa ulaşana kadar hesaplamaya devam edeceğiz

xn = x0-f(x0)/df(x0); // doğrudan Newton'un formülü

cout<<++i<<"-th iteration = "<

cout<<"\nRoot = "<

cout<<"\nExit?=>";

) while (çıkış!=1); // kullanıcı çıkış = 1 girene kadar

Nasıl çalıştığını görelim. Ekranın sol üst köşesindeki yeşil üçgene tıklayın veya F5 tuşuna basın.

Bir derleme hatası oluşursa "Hata hatası LNK1123: COFF'a dönüştürülemedi: dosya geçersiz veya bozuk", bu durum ya ilk Hizmet paketi 1 yüklenerek ya da proje ayarları Özellikler -> Bağlayıcı, artımlı bağlantıyı devre dışı bırakarak çözülür.

Pirinç. 4. Proje derleme hatasını çözme

Fonksiyonun köklerini arayacağız f(x) =x2-2.

Öncelikle uygulamayı "yanlış" girdi verileri üzerinde test edelim. Segmentte kök yok, programımız bir hata mesajı vermelidir.

Bir uygulama penceremiz var:

Pirinç. 5. Giriş verilerinin girilmesi

Segment 3 ve 5'in sınırlarını tanıtıyoruz ve doğruluk 0,05'tir. Program, olması gerektiği gibi, bu segmentte kök bulunmadığına dair bir hata mesajı verdi.

Pirinç. 6. Hata "Bu segmentte kök yok!"

Henüz ayrılmayacağız, bu yüzden “Çıkış?” mesajı. "0" girin.

Şimdi uygulamayı doğru giriş verileri üzerinde test edelim. Bir segment ve 0.0001 doğruluğu tanıtalım.

Pirinç. 7. Kökün gerekli doğrulukla hesaplanması

Gördüğümüz gibi, 4. iterasyonda gerekli doğruluk zaten elde edildi.

Uygulamadan çıkmak için "Çıkış?" => 1.

sekant yöntemi

Türevi hesaplamaktan kaçınmak için, Newton'un yöntemi, türevin önceki iki noktadan hesaplanan yaklaşık bir değerle değiştirilmesiyle basitleştirilebilir:

Yinelemeli süreç şöyle görünür:

Bu, bir sonraki yaklaşımı bulmak için önceki ikisini kullandığından, iki aşamalı yinelemeli bir süreçtir.

Sekant yönteminin yakınsama sırası, tanjant yönteminden daha düşüktür ve tek bir kök olması durumunda eşittir.

Bu harika değere altın oran denir:

Kolaylık sağlamak için bunu varsayarak bunu doğrularız.

Böylece, daha yüksek bir mertebenin sonsuz küçüklüğüne kadar

Kalan terimi atarak, çözümü doğal olarak formda aranan bir tekrarlama bağıntısı elde ederiz.

Değiştirmeden sonra elimizde: ve

Yakınsama için pozitif olması gerekir, bu nedenle .

Türev bilgisi gerekli olmadığından, sekant yönteminde aynı miktarda hesaplama ile (düşük yakınsama sırasına rağmen), tanjant yönteminden daha fazla doğruluk elde etmek mümkündür.

Kökün yakınında, küçük bir sayıya bölmek gerektiğini ve bunun doğruluk kaybına yol açtığını (özellikle birden fazla kök olması durumunda), bu nedenle, nispeten küçük bir 'yi seçerek, yürütmeden önce hesaplamalar yaptığını unutmayın. ve komşu yaklaşımlar arasındaki farkın modülü azalana kadar bunlara devam edin.

Büyüme başlar başlamaz hesaplamalar durdurulur ve son iterasyon kullanılmaz.

Yinelemelerin sonunu belirlemek için bu prosedüre teknik denir. Harvick.

parabol yöntemi

Yaklaşımın önceki üç nokta tarafından belirlendiği üç aşamalı bir yöntem düşünün ve .

Bunu yapmak için, sekant yöntemine benzer şekilde, fonksiyonu , ve noktalarından geçen bir enterpolasyon parabolü ile değiştiririz.

Newton'un formunda, şöyle görünür:

Bir nokta, modül olarak noktaya daha yakın olan bu polinomun köklerininki olarak tanımlanır.

Parabol yönteminin yakınsama sırası, sekant yönteminden daha yüksek, ancak Newton yönteminden daha düşüktür.

Daha önce ele alınan yöntemlerden önemli bir fark, gerçek için gerçek olsa ve başlangıç ​​yaklaşımları gerçek olarak seçilse bile, parabol yönteminin orijinal problemin karmaşık bir köküne yol açabilmesidir.

Bu yöntem, yüksek dereceli polinomların köklerini bulmak için çok kullanışlıdır.

Basit yineleme yöntemi

Denklemlere çözüm bulma problemi, kök bulma problemi veya sabit bir nokta bulma problemi olarak formüle edilebilir.

İzin vermek ve - sıkıştırma: (özellikle, - sıkıştırma, görülmesi kolay olduğu anlamına gelir).

Banach teoremi ile benzersiz bir sabit nokta vardır.

Basit bir yinelemeli prosedürün limiti olarak bulunabilir.

burada ilk yaklaşım, aralıkta keyfi bir noktadır.

Fonksiyon türevlenebilirse, uygun bir sıkıştırma kriteri sayıdır. Nitekim, Lagrange teoremi ile

Dolayısıyla türev birden küçükse daralmadır.

Şart önemlidir, çünkü örneğin on ise türev sıfıra eşit olmasına rağmen sabit bir nokta yoktur. Yakınsama oranı değerine bağlıdır. Ne kadar küçük olursa, yakınsama o kadar hızlı olur.

Bir fonksiyonun en küçüklenmesi probleminde, ilk yaklaşımın iyi bir seçimi çok önemlidir.Elbette, tüm durumlar için, yani tüm olası doğrusal olmayan fonksiyonlar için tatmin edici olacak genel bir kural bulmak imkansızdır. Her seferinde kendi çözümünüzü aramanız gerekir. Aşağıda, pratikte belirli bir problemde tatmin edici yaklaşımlar aramak için bir başlangıç ​​noktası olarak hizmet edebilecek, kaba ilk yaklaşımları bulmak için bir dizi yöntem öneriyoruz.

9.6.1. Izgara arama. Bu yöntem özellikle az sayıda özünde doğrusal olmayan parametre için etkilidir. Çoğu zaman, işlevler, bazı parametrelerin (aslında doğrusal olmayan dediğimiz) değerlerini sabitlerken, parametrelerin geri kalanı doğrusal hale gelecek şekilde düzenlenir.

Doğrusal olmayan parametreler için alt ve üst sınırlar verildiğinde, belirli bir adımla, bu uygun doğrusal olmayan parametrelerin elde edilen değerler ızgarasında seçenekleri numaralandırmak ve yol açan doğrusal regresyonu belirlemek mümkündür. minimum kareler toplamı

Örnek olarak, işlevi düşünün

Burada, gerçek doğrusal olmayan parametre olacaktır. Diyelim ki bunu biliyoruz. Parametrenin adımı h olsun. Doğrusal Regresyonları Hesaplayın

nerede ve her biri için minimum kareler toplamını bulun. Bunların en küçüğü, optimal başlangıç ​​yaklaşımına karşılık gelir. Prensip olarak, ızgaranın "yoğunluğunun" bağlı olduğu adım değişebilir, böylece h değerini azaltarak parametrelerin değerleri herhangi bir doğrulukla bulunabilir.

9.6.2. Model dönüşümü.

Bazen, bazı dönüşümlerle model doğrusal bir modele indirgenebilir veya özünde doğrusal olmayan parametrelerin sayısı azaltılabilir (bkz. Bölüm 6.2.3). Lojistik eğri örneğini kullanarak bunun nasıl başarılabileceğini gösteriyoruz.

Karşılık gelen regresyon denklemleri üzerinde ters bir dönüşüm gerçekleştirerek elde ederiz.

Doğrusal parametre sayısı birden ikiye yükselen yeni bir fonksiyona geldiğimizi ifade ederek. Yeni modeldeki bir parametre için bir tahmin, örneğin önceki yöntem kullanılarak bulunabilir.

Burada regresyon modellerinin dönüşümleri hakkında aşağıdaki açıklamayı yapmak uygundur. Unutulmamalıdır ki, orijinal denkleme toplamsal olarak giren hata, genel olarak konuşursak, dönüşümden sonra artık toplamsal olmayacaktır.

Bir Taylor serisinde açılımı kullanmak ve elde ettiğimiz dönüşümü ifade etmek, mertebenin terimlerini ihmal etmek

Bu nedenle şu şekildedir:

Son eşitlik, dönüştürülmüş modelle problemin analizi için temel alınabilir.

9.6.3. Örneği alt örneklere ayırma.

İlk yaklaşımı bulmak için, tüm numuneyi alt örneklere (yaklaşık olarak eşit hacimli) bölebilirsiniz, burada bilinmeyen parametrelerin sayısı bulunur. Her bir alt örnek için, sırasıyla m olarak gösterdiğimiz y ve X üzerindeki ortalamaları buluyoruz.

Bu sistemin çözümü, parametrelerin ilk yaklaşımı olacaktır. Açıkçası, bu yöntemin "işe yaraması" için, bu doğrusal olmayan denklem sisteminin örneğin analitik olarak oldukça kolay bir şekilde çözülmesi gerekir.

9.6.4. Bağımsız değişkenlerde Taylor serisi açılımı.

Kareler toplamının yinelemeli minimizasyonunun temeli, bir Taylor serisindeki regresyon fonksiyonunun parametreler açısından doğrusal terimlere genişletilmesidir. Kaba bir başlangıç ​​yaklaşımı bulmak için, bağımsız değişkenlerde bir Taylor serisine genişleterek regresyonu yaklaşık olarak hesaplamak bazen yararlıdır. Basitlik için, bunun tek boyutlu olduğunu varsayacağız. Let - ortalama değer, sonra yaklaşık

Belirtin, böylece doğrusal bir modele ulaşırız

Bu lineer regresyonun parametrelerinin en küçük kareler tahminleri olsun. İlk yaklaşımlar olarak, aşağıdakilere göre doğrusal olmayan bir denklem sisteminin çözümünü alıyoruz:

Newton'un (teğet) kök bulma yöntemi

Bu icat edilen yinelemeli bir yöntemdir Isaac Newton(Isaak Newton).

Görev aşağıdaki gibidir. Denklem verildiğinde:

Bu denklemi çözmek, daha doğrusu köklerinden birini bulmak için gereklidir (kökün var olduğu varsayılır). Segment üzerinde sürekli ve türevlenebilir olduğu varsayılır.

algoritma

Algoritmanın giriş parametresi, fonksiyona ek olarak, aynı zamanda ilk yaklaşım- bazıları , algoritmanın gitmeye başladığı.

Zaten hesaplanmış olsun, aşağıdaki gibi hesaplayın. Fonksiyonun grafiğine noktasında bir teğet çizelim ve bu teğetin x ekseni ile kesişme noktasını bulalım. bulunan noktaya eşit olarak ayarlayın ve tüm süreci baştan tekrarlayın.

Aşağıdaki formülü elde etmek kolaydır:

İşlev yeterince "iyi" (pürüzsüz) ve köke yeterince yakınsa, istenen köke daha da yakın olacağı sezgisel olarak açıktır.

Yakınsama oranı ikinci dereceden, göreceli olarak konuşursak, yaklaşık değerdeki tam bitlerin sayısının her yinelemede iki katına çıktığı anlamına gelir.

Karekök hesaplamak için uygulama

Karekök hesaplama örneğini kullanarak Newton'un yöntemini düşünün.

yerine koyarsak, ifadeyi sadeleştirdikten sonra şunu elde ederiz:

Sorunun ilk tipik versiyonu, bir kesirli sayı verildiğinde ve kökünü biraz doğrulukla hesaplamanız gerektiğinde:

çift ​​n; cin >> n; const double EPS = 1E-15 ; çift ​​x = 1 ; for (;; ) ( double nx = (x + n / x) / 2 ; if (mutlak (x - nx)< EPS) break ; x = nx; } printf ("%.15lf" , x) ;

Sorunun diğer bir yaygın versiyonu, tamsayı kökünü hesaplamanız gerektiği zamandır (belirli bir tanesi için, en büyüğünü bulun). Burada algoritmanın durma koşulunu biraz değiştirmeliyiz, çünkü cevabın yakınında "zıplamaya" başlayabilir. Bu nedenle, bir önceki adımdaki değer azalmışsa ve mevcut adımda artmaya çalışıyorsa, algoritmanın durdurulması gerektiği koşulunu ekliyoruz.

intn; cin >> n; int x = 1 ; bool azaldı = yanlış ; for (;; ) ( int nx = (x + n / x) >> 1 ; if (x == nx || nx > x && azalmış) break ; azalmış = nx< x; x = nx; } cout << x;

Son olarak, uzun aritmetik durumunda üçüncü bir seçenek sunuyoruz. Sayı oldukça büyük olabileceğinden, ilk yaklaşıma dikkat etmek mantıklıdır. Açıkçası, köke ne kadar yakınsa, sonuca o kadar hızlı ulaşılacaktır. Sayıdaki bitlerin sayısı olan sayıyı ilk yaklaşım olarak almak oldukça basit ve etkili olacaktır. İşte bu seçeneği gösteren Java kodu:

BüyükTamsayı; // veri girişi BigInteger a = BigInteger.ONE .shiftLeft (n.bitLength() / 2 ) ; boolean p_dec = yanlış; for (;; ) ( BigInteger b = n.divide (a) .add (a) .shiftRight (1 ) ; if (a.compareTo (b) == 0 || a.compareTo (b)< 0 && p_dec) break ; p_dec = a.compareTo (b) >0; a = b; )

Örneğin, kodun bu varyantı milisaniye cinsinden bir sayı için çalışır ve geliştirilmiş başlangıç ​​tahmini seçimini kaldırırsanız ( ile başlayın), yaklaşık milisaniye içinde çalışacaktır.