Karakök alma algoritması

Karakök alma algoritması

Karakökünü alacağımız sayı 4 olsun

ilk sayımız hep 1 olur

yeni sayımız : 1
((4/1)+1)/2=2,5
kontrol et bakalım sayının karesi 4 e eşitmi: 2,5*2,5=6,25 çıkar yani 4 ün karekökü olamaz.

yeni sayımız : 2,5
((4/2.5)+2.5)/2=2.05
kontrol et bakalım sayının karesi 4 e eşitmi: 2,5*2,5=6,25 çıkar yani 4 ün karekökü olamaz.

yeni sayımız : 2,05
((4/2.05)+2.05)/2= 2.000609756 ….
kontrol et bakalım sayının karesi 4 e eşitmi: 2,05*2,05=4,2025 çıkar yani 4 ün karekökü olamaz.

yeni sayımız: 2,0006
((4/2.0006)+2.0006)/2=2.000000089
kontrol et bakalım sayının karesi 4 e eşitmi: 2,0006*2,0006=4,00240036 çıkar yani 4 ün karekökü olamaz.

yeni sayımız: 2,000000089
((4/2.000000089)+2.000000089)/2=2,000000000000002
kontrol et bakalım sayının karesi 4 e eşitmi: 2,000000089*2,000000089=4,000000356000008 çıkar yani 4 ün karekökü olamaz.

yeni sayımız: 2,000000000000002
((4/2,000000000000002)+2,000000000000002)/2= 2
kontrol et bakalım sayının karesi 4 e eşitmi: 2,000000000000002*2,000000000000002= çıkar yani 4 ün karekökü olamaz.

yeni sayımız: 2
((4/2)+2)/2= 2
kontrol et bakalım sayının karesi 4 e eşitmi: 2*2= çıkar yani 2 sayısı 4 ün karaköküdür.

Bu işlemi sayının karekökü çıkana kadar yaparsak en sonunda sonuç kareköke eşit olur.((4/2+2)/2=2)
Eğer bunları anladıysanız daha zor bir algoritma için size bir ödev:

#include <iostream>

using namespace std;


int kokAl(int sayi,int derece);
double karekokAl(int sayi);
double usAl(double sayi,double derece);
int main ()
{
	double sayim=27.0;
	
	cout << sayim <<" sayisinin karekoku: " << karekokAl(sayim) << endl;

	return 0;
}

double karekokAl(int sayi){
	long double araSayi=1.0;
	double araSonuc=0;
		
	while(usAl((long double)araSonuc,2)!=sayi){
		araSonuc=((sayi/araSayi)+araSayi)/2.0;		
		araSayi=(long double)araSonuc;
	}		
	return (araSonuc);	
}

double usAl(double sayi,double derece){
	double araSayi=1;

	while(derece!=0){
		derece=derece-1.0;
		araSayi*=sayi;
	}	
	return (araSayi);	
}

One thought on “Karakök alma algoritması

Bir Cevap Yazın