Sqrt kullanmadan karekök bulma | Babil Metodu | C++

Grandsonofottoman

Yeni üye
25 Mar 2016
42
1
Kaynak Kod
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Babil Metodu ile Karekök Hesaplama

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sizlerle Sqrt() Fonksiyonu kullanmadan karekök almanın formülünü öğreneceğiz ve bunu C++ üzerinde kullanacağız.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Başlayalım


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Babil metodu bulduğunuz sonuçları tekrar tekrar kullanarak gitgide sonuca yaklaştığınız metotdur.

Hemen örneklendirelim.

İlk önce karekökünü almak istediğimiz sayıya (x=25) 1 ekleyip sonra 2'ye bölelim.
Kod:
(x+1)/2-------------(25+1)/2=13

Bulduğumuz sonuca n diyorum.
x'i (25) bulduğumuz sonuca (n=13)bölüp tekrardan bulduğumuz sonuca (n=13)'ü ekliyoruz.

Kod:
n=((x/n)+n)/2-------------((25/13)+13)/2=7,461
Buradan bulunan sonuçla tekrardan aynı işlem yapılır.
Kod:
n=((x/n)+n)/2-------------((25/7,461)+7,461)/2=5,405
Tekrar aynı işlem yapılır.
Kod:
n=((x/n)+n)/2-------------((25/5,405)+5,405)/2=5,015
Tekrar aynı işlem yapılır.
Kod:
n=((x/n)+n)/2-------------((25/5,015)+5,015)/2=5,00002

.
.
.
.
.
.


Sonuç = 5

Gördüğünüz gibi bulduğumuz sonuçları tekrar tekrar kullanarak sonuca ulaştık.

Önce daha düzgün anlamak için algoritma üzerinden gösterip daha sonra c++ kodlarını paylaşayım.


o5kcIp.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Şimdi sıra kodlarda:

Kod:
#include <iostream>

	using namespace std;

	
	**** karekokal(double x) //fonksiyon başlığı
		{
		double a,n; 
		n=(x+1)/2; // ilk işlemimiz bu.
		for (a=1; a<=10000; a++)	//sayaç 10000 kere döndürdüm çünkü ne zaman bulacağı belli değil.
			{
			n=((x/n)+n)/2; //ikinci işlem bir süre sonra hep aynı sonucu veriyor.
			}	
			
			cout << endl << "Sonuc= " << n;
		}
		
		main()
		{
			double x,kok;
			cout << "Karekokunu almak istediginiz sayi= "; cin >> x;
		karekokal(x);
		
		}



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Metot hariç konudaki her şey bana aittir.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.