1. #1

    Grubu
    Kıdemli Üye
    İş
    Diğer

    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

    Grubu
    Moderatör
    İş
    Üniversite
    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

    Grubu
    Moderatör
    İş
    Üniversite
    C# de şöyle bir şey yapılabilirmiş bir dene bakalım bunu.

    HTML-Kodu:
     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

    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

    Grubu
    Moderatör
    İş
    Üniversite
    Alıntı Tükenir Kalem'den alıntı Mesajı göster
    Ç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

    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

    Grubu
    Moderatör
    İş
    Üniversite
    Alıntı Tükenir Kalem'den alıntı Mesajı göster
    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

    Grubu
    Kıdemli Üye
    İş
    Diğer
    Alıntı duygu95'den alıntı Mesajı göster
    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

    Grubu
    Moderatör
    İş
    Üniversite
    Alıntı Tükenir Kalem'den alıntı Mesajı göster
    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

    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


 
3 sayfadan 1.si 123 SonuncuSonuncu

  1. Bu yazıyı beğenerek
    destek
    verebilirsiniz

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

Benzer konular

  1. Gauß Algoritmasi
    burakdemirel bu konuyu Özel matematik soruları forumunda açtı
    Cevap: 3
    Son mesaj : 23 Şub 2013, 16:54
  2. Bölme Algoritması ve Öklid Algoritması (Euclid Algorithm)
    Serkan bu konuyu Matematik Arşivi forumunda açtı
    Cevap: 1
    Son mesaj : 11 Ara 2011, 23:06
  3. Türev Alma
    mert46 bu konuyu 12. sınıf matematik soruları forumunda açtı
    Cevap: 6
    Son mesaj : 19 May 2011, 11:22
  4. Türev Alma
    mert46 bu konuyu 12. sınıf matematik soruları forumunda açtı
    Cevap: 6
    Son mesaj : 18 May 2011, 16:00
  5. Türev Alma
    mert46 bu konuyu 12. sınıf matematik soruları forumunda açtı
    Cevap: 7
    Son mesaj : 17 May 2011, 22:34
Forum Kullanım ve Gizlilik Kuralları