1. #1

    Statü
    Grubu
    Kıdemli Üye
    İş
    Diğer

    Sponsorlu Bağlantılar

    Karekök alma algoritması

    Merhaba..Bilgisayar mühendisi olmak istiyorum,bu yüzden ders çalışma düzenimden arta kalan zamanda programlama çalışıyorum..Çalışırken hazır fonksiyonlarda,sqrt(x) diye bir ifadeye rastladım..Bu sqrt fonksiyonu x'in karekökünü buluyor..Bu fonksiyonun bilgisayara tam olarak ne yaptırdığını bulamıyorum maalesef..

    Bu hazır fonksiyon olmasaydı,ben nasıl buldururdum diye düşündüm..Birkaç yol denedim,örneğin x'e kadar olan sayıların içinde karesi x olan sayıları teker teker bilgisayara denemesi komutunu vermek gibi..Ama bunun gibi yollar o kadar yavan oldu ki,büyük sayılarda bulması çok uzun sürdü..

    Sorum tamamen matematiksel..Programlama ile alâkası pek yok..
    Bir sayının karekökünü kısayoldan nasıl bulabiliriz ?Nasıl bir yol izlemeliyiz ?
    9⁵+2⁵+7⁵+2⁵+7⁵=92727 ... 9⁵+3⁵+0⁵+8⁵+4⁵=93084

  2. #2

    Statü
    Grubu
    Moderatör
    İş
    Üniversite

    Sponsorlu Bağlantılar

    Sanırım C çalışıyorsun.
    sqrt fonksiyonu math.h kütüphanesinde tanımlanmış bir fonksiyondur.
    sqrt komutu gayet kısa ancak, sanırım sen başka nasıl bir yoldan bulabiliriz diyorsun fakat küsüratlı sayılara ulaşmak zor olur.
    Yine de düşünelim bakalım nasıl yapabiliriz.

  3. #3

    Statü
    Grubu
    Moderatör
    İş
    Üniversite

    Sponsorlu Bağlantılar

    C# de şöyle bir şey yapılabilirmiş bir dene bakalım bunu.

    :
     Console.WriteLine("Bir sayı girin");
                double sayi = Convert.ToDouble(Console.ReadLine());
                long i, n = (long)sayi, t;
                double r = sayi;
                for (i = 0; i < n; i++)
                {
                    r = (r + (sayi / r)) * 0.5;
                    t = (long)r;
                    if ((t * t) < t)
                        break;
                }
                Math.Sqrt();
                Console.WriteLine("Sayının Karekökü =" + r.ToString());
                Console.ReadLine(); 
                }

  4. #4

    Statü
    Grubu
    Kıdemli Üye
    İş
    Diğer
    Çok teşekkür ederim cevabın için..C++ çalışıyorum C ile benzer bir dil..
    Çok karışık bir algoritmaymış,inceleyeceğim bir süre..
    Aslında dil olarak fark etmez,bana bunun algoritması gerekli..Algoritmalar bütün dillerde aynı olur hemen hemen..
    9⁵+2⁵+7⁵+2⁵+7⁵=92727 ... 9⁵+3⁵+0⁵+8⁵+4⁵=93084

  5. #5

    Statü
    Grubu
    Moderatör
    İş
    Üniversite
    Çok teşekkür ederim cevabın için..C++ çalışıyorum C ile benzer bir dil..
    Çok karışık bir algoritmaymış,inceleyeceğim bir süre..
    C öğrenmiş miydin daha önce ?

  6. #6

    Statü
    Grubu
    Kıdemli Üye
    İş
    Diğer
    Hayır hemen C++ ile başladım..
    9⁵+2⁵+7⁵+2⁵+7⁵=92727 ... 9⁵+3⁵+0⁵+8⁵+4⁵=93084

  7. #7

    Statü
    Grubu
    Moderatör
    İş
    Üniversite
    Hayır hemen C++ ile başladım..
    C öğrenmeden C++'a başlarsan zorlanırsın C temeldir ilk önce onu öğren, hatta ben sana öğrenebileceğin bir kaynağın linkini göndereyim.

  8. #8

    Statü
    Grubu
    Kıdemli Üye
    İş
    Diğer
    C öğrenmeden C++'a başlarsan zorlanırsın C temeldir ilk önce onu öğren, hatta ben sana öğrenebileceğin bir kaynağın linkini göndereyim.
    Hep C öğrenmeden C++ öğrenilmez diyorlar ama ben oop'a kadar ilerledim
    9⁵+2⁵+7⁵+2⁵+7⁵=92727 ... 9⁵+3⁵+0⁵+8⁵+4⁵=93084

  9. #9

    Statü
    Grubu
    Moderatör
    İş
    Üniversite
    Hep C öğrenmeden C++ öğrenilmez diyorlar ama ben oop'a kadar ilerledim
    C öğrenmeden C++ öğrenilmez demiyorum aslında sadece zorlanırsın ben de ilk bilmediğimde C++ den başlamıştım ama bir süre sonra mantığını boşverip ezberlemeye başladığımı farkettiğimde C den başlamaya karar verdim diğer türlü mantığını anlamadan direkt ezber gibi bir şey yapıyorsun gibi gelmişti bana

  10. #10

    Statü
    Grubu
    Kıdemli Üye
    İş
    Diğer
    C++ dili C'den daha kolay geliyor ama bana,C daha karmaşık..Zaten üniversitede Assembly dahil tüm dilleri öğrenmeyi düşünüyorum,ilk dil olarak kendime C++'yı seçtim..Epeyce de ilerledim,bu hazır fonksiyonlar kısmı çoktan geride kaldı ama bir türlü bu soruya hızlı algoritma bulamamıştım..C# Console App açtım kodları aynen yapıştırdım,çalışıyor..
    Örneğin 186513649 sayısının karekökünü 3 saniyede buldu..Ama C#'ın hazır fonksiyonu Math.Sqrt() bunu belki saniyenin binde biri sürede buluyor..Benim anlamadığım nokta bu C# dilini hazırlayanlar bu Math.Sqrt() fonksiyonuna nasıl bir yol öğretmişler ki,anında bulabiliyor..
    Bu arada eklediğin kod çalışıyor ama ben hâlâ ne yaptığını anlamadım,ne yapıyor da buluyor program ? Fikrin var mı ? For döngüsü karışık..
    9⁵+2⁵+7⁵+2⁵+7⁵=92727 ... 9⁵+3⁵+0⁵+8⁵+4⁵=93084


 
1 2 3

  • Bu yazıyı beğenerek
    destek
    verebilirsiniz

    Foruma üye olmana gerek yok! Facebook hesabınla yorumlarını bekliyoruz!
  • Benzer konular

    1. Bölme Algoritması ve Öklid Algoritması (Euclid Algorithm)
      Admin, bu konuyu "Matematik Arşivi" forumunda açtı.
      : 1
      : 11 Ara 2011, 21:06
    2. türev alma
      fatmaözlem, bu konuyu "12. sınıf matematik soruları" forumunda açtı.
      : 4
      : 02 Haz 2011, 16:17
    3. Türev Alma
      mert46, bu konuyu "12. sınıf matematik soruları" forumunda açtı.
      : 6
      : 19 May 2011, 09:22
    4. Türev Alma
      mert46, bu konuyu "12. sınıf matematik soruları" forumunda açtı.
      : 6
      : 18 May 2011, 14:00
    5. Türev Alma
      mert46, bu konuyu "12. sınıf matematik soruları" forumunda açtı.
      : 7
      : 17 May 2011, 20:34
    Forum Kullanım ve Gizlilik Kuralları