Matlab ve Python 3 ile yaklaşık karekök bulma
fonksiyonun aslı burada
g=(g+karekökü_bulunmak_istenen/g)/2
g=(g+karekökü_bulunmak_istenen/g)/2
makine öğrenmesi isteyenler için basit bir örnek. karekökü tahmin eden bir fonksiyon. herhangi bir yanlış değeri karekökü bulunmak istenen sayıya bölünce yanlış değer çıkar ve g değeriyle eşit değildir. bu durumda sayı/g+g değerini 2 ile bölersek hatayı azaltmak için ortalamasını azaltmış oluruz. bu işlem karekökünün verilen toleransa kadar bulunmasına kadar devam eder.
Matlab:
function [y, step, actual] = yaklasik_karekok( x,tolerans )
%x karekökü_bulunmak_istenendir.
step=1; %adım sayısı
gecici=1; g=1;
while abs(g.^2-x)>=tolerans
g=(g+x/g)/2;
step=step+1;
end
y=g;
actual=sqrt(x); %asıl değer
fprintf('Adım Sayısı=%d Yaklaşık Karekök=%d Asıl değer=%d',step, y, actual);
end
Sonuçlar:
>> yaklasik_karekok(24.25^2, 0.01)
Adım Sayısı=9 Yaklaşık Karekök=2.425000e+01 Asıl değer=2.425000e+01
ans =
24.2500000324418
>> yaklasik_karekok(24.25^2, 0.0001)
Adım Sayısı=9 Yaklaşık Karekök=2.425000e+01 Asıl değer=2.425000e+01
ans =
24.2500000324418
>> yaklasik_karekok(24.25^2, 0.1)
Adım Sayısı=8 Yaklaşık Karekök=2.425125e+01 Asıl değer=2.425000e+01
ans =
24.251254395657
>> yaklasik_karekok(100, 0.0001)
Adım Sayısı=8 Yaklaşık Karekök=1.000000e+01 Asıl değer=10
ans =
10.0000000001399
Python:
import math
karekökü_bulunmak_istenen=96854165410
sayının_karekökü=math.sqrt(karekökü_bulunmak_istenen)
sayının_karekökü=math.sqrt(karekökü_bulunmak_istenen)
def yaklaşık_karekök(karekökü_bulunmak_istenen,tolerans=-4):
gecici=g=1
AdımSayısı=1
while not math.isclose(gecici,karekökü_bulunmak_istenen,abs_tol=10**tolerans):
gecici=g*g
g=(g+karekökü_bulunmak_istenen/g)/2
AdımSayısı+=1
print("AdımSayısı={} g= {} gecici={}".format(AdımSayısı,g,gecici))
yaklaşık_karekök(karekökü_bulunmak_istenen)
gecici=g=1
AdımSayısı=1
while not math.isclose(gecici,karekökü_bulunmak_istenen,abs_tol=10**tolerans):
gecici=g*g
g=(g+karekökü_bulunmak_istenen/g)/2
AdımSayısı+=1
print("AdımSayısı={} g= {} gecici={}".format(AdımSayısı,g,gecici))
yaklaşık_karekök(karekökü_bulunmak_istenen)
Yorumlar
Yorum Gönder