09 Eylül 2013, 22:14 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | C++ ile Kompleks Sayılarda 4 İşlem Kompleks sayılar bir gerçel ve bir sanal kısımdan oluşan sayılardır.Sanal sayı gerçek dünyada karşılığı olmayan ancak matematiksel ifadelerde sıklıkla karşımıza çıkan bir sayıdır.Sanal sayılar bir gerçel sayı ile i(sqrt(-1)) sayısının çarpımı ile elde edilir.Burada sqrt(-1) gerçek dünyada var olmayan bir sayıdır ve i veya j harfi ile gösterilir.Kompleks sayılarla işlem yapmak gerçel sayılardan biraz farklıdır.Elimizde a+ib ve c+id şeklinde iki kompleks sayı olsun; Toplama: Gerçel kısımlar kendi aralarında,sanal kısımlar kendi aralarında toplanır. Çıkarma: Gerçel kısımdan gerçel kısım,sanal kısımdan sanal kısım çıkarılır. Çarpma: (a+ib)(c+id) işlemi yapılacak olursa a.c+a.id+ib.c+ib.id=ac-bd+i(ad+bc) elde edilir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bölme: Bölme işlemi kompleks sayılar üzerinde doğrudan yapılamaz.Bölme işlemi yapabilmek için bölenin gerçel bir sayı olması gereklidir.Bunun için önce bölen ve bölünen bir kompleks sayı ile çarpılarak genişletilir.Çarpılan sayı böleni gerçel sayı yapacak bir kompleks sayı olmalıdır.Bu sayıya eşlenik adı verilir.c+id sayısının eşleniği c-id sayısıdır.Görüleceği üzere sayının kendisi ile eşleniğini çarparsak, (c+id)(c-id)=c.c-c.id+c.id+id.id=c.c-d.d (gerçel) sayısı elde edilir.Şimdi kodlamaya geçelim.C++ üzerinde sanal sayılar tanımlı olmadığından kendi sınıfımızı oluşturmak zorundayız.Oluşturduğumuz bu sınıf tipi ile tanımladığımız her değişkenin bir gerçel ve bir de sanal kısmı olmalıdır.Önce sınıfımızı tanımlayalım; Kod: Kodu kopyalamak için üzerine çift tıklayın!
cfloat sınıfımızı oluşturduktan sonra main() içerisinde cfloat a; dediğmiz zaman a.reel ve a.sanal adında 2 float(ondalıklı) değişkene sahip olacağız.Kod içerisinde yeşil renkte gördüğünüz kısım işlemimizin en önemli noktası.Operator Overload diye isimlendirilen bir aşırı yükleme işlemi.Yani dediğimiz üzere kompleks sayılarda işlem yapmak gerçel sayılar gibi değil bu yüzden gerçel sayılarda kullandığımız operatörleri(+,-,*,/) yukarıda yazdığımız kurallara göre uygulamalıyız.cfloat operator+(cfloat); tanımını yaparak programa 2 tane cfloat türünde değiken geldiğinde + işaretinin yeni anlamını tanımlıyoruz.Bu tanımları inceleyecek olursak, Kod: Kodu kopyalamak için üzerine çift tıklayın!
Kodlar incelenecek olursa her bir operator için cfloat(operator)cfloat değişkenleri ile kullanıldığında hesaplaması gereken değerler tanımlanmıştır.4 işleme ek olarak kompleks sayılarda bir += işlemide tanımlanmıştır. Bu işlem ile gerçel sayılarda kullandığımız += işlemi sanal sayılarda da uygulanabilir hale getirilmiştir.(int a=a+5 ifadesi int a+=5 ifadesine eşittir) Kod içerisinde kırmızı ile yazdığım kısım diğer overload işlemlerinden biraz farklı görünebilir ancak return *this ifadesi burada = anlamı yerine geçerek işlemin sonucundaki iki değerin çağrıldığı iki değere atandığını(yani atandığı değeri) döndürür. Bu işlemlere ek olarak bir karmaşık sayılarda genlik bulma hesabı da yapalım. Genlik, koordinat ekseninde x-eksenini gerçel sayılar,y-eksenini sanal sayılar diye düşünürsek a+ib sayısı için (a,b) noktasının orijine olan uzaklığıdır.Buda x=sqrt(a.a+b.b) (Pisagor Teoremi) orijine olan uzaklıktır ve gerçel bir pozitif sayıdır. Kod: Kodu kopyalamak için üzerine çift tıklayın!
Son olarak bir örnekle bitirelim main() içerisine aşağıdaki kodları yazarsak; Kod: Kodu kopyalamak için üzerine çift tıklayın!
Programın ekran çıktısı aşağıdaki gibi olacaktır. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Alıntı | |
|
Etiketler |
4, ile, kompleks, sayılarda, İşlem |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Sayılarda Mutlak Değer | Liaaa | Matematik | 0 | 14 Mayıs 2012 02:17 |
Kompleks nedir? ve kompleks depresyona kadar gider mi? | Ay | Felsefe | 0 | 11 Kasım 2011 11:18 |