Matlab ve Python 3 ile yaklaşık karekök bulma

fonksiyonun aslı burada
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)
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)

Yorumlar

Popüler Yayınlar