Sayisal Analiz Toolkit

1-ana2-menu

3-biSection 13-gaussEliminasyon

Bu dönem aldığımız sayisal analiz dersinde gördüğümüz yöntemlerden bazılarını içeren bir program yazmamız istenildi. Başlarda yapmak konusunda pek istekli değildim, ancak son bir kaç gün kala uğraşmaya karar verdim. Uğraşlarım sonucunda yeni şeyler öğrendim, projeyi yapmış oldum. Bir de en önemlisi kayıplara karışmış çalışma hevesime tekrar kavuştum. Bu blog yazısında ve devamı olacak yazılarda bu projeyi yaparken öğrendiklerimi paylaşmayı düşünüyorum.

Projeye başlamadan önce grafiksel arayüzü olan bir program yazmamıştım. Java, Eclipse ve Window Builder ile bu çok kolay oldu. Kendim için yeni bir alan keşfetmiş gibi oldum. C’nin karanlık siyah ekranından bir süreliğine uzaklaşmış olacağım. Arayüzü oluştururken iki türlü durum söz konusuydu. Yaklaşık 12 tane yöntem vardı. Önce, bu 12 yöntem için ayrı ayrı pencereler(JFrame) tasarladım. Bunları da en son tek pencerede, tıklandığında o yöntemin penceresini açacak şekilde butonlar içeren bir pencere yaptım. Ancak bu yöntem tatmin edici bir şey olmayacaktı. Hem de kullacının canını sıkacaktı. O yüzden CardLayout denen şeyin peşine düştüm biraz. Bu yöntem ile tek bir pencerede hangi yöntem seçilmiş ise o yöntemi görüntülüyorsunuz. Bir sürü araştırdıktan sonra ufak bir kod parçası bulup üzerinde denemeler yaparak istediğim hale getirdim ve kullandım. CardLayout kullanımının detaylı bir anlatımını ayrı bir yazıda yapacağım.

Projeyi kafamda tasarlarken bir diğer sorun ise fonksiyonların,denklemlerin kullanıcıdan alınması kısmıydı. Aklıma gelen iki yöntem ya fonksiyon derecesini aldıktan sonra katsayıları istemekti, ya da direkt kutucuğa yazılmış stringi anlamlı parçalara ayırmaktı(parsing). İkinci yöntem kullanıcının işini kolaylaştıracak, geliştiriciyi de mutlu edecekti. Bir süre bu şekilde hazır bir kütüphane bulabilir miyim diye araştırdıktan sonra buldum. Zaman sıkıntım olmasaydı aramaktan vazgeçip kendim daha amatörce bir şeyler yapardım belki. Ama böylesi daha iyi oldu. O işi yapan kütüphaneyi başka bir blog yazısında zaten anlatmıştım.

Fonksiyonları o kütüphane sayesinde kolayca alıp bilinmeyen yerine değer yerleştirebiliyordum. Ama yöntemlerin içinde matrisler üzerinde işlem yapanları da vardı. Bu durumda kullanıcıdan matris almak gerekecekti. Ancak bu sefer yaptığım araştırmalar bana hazır bir sonuç sunmadı/bulamadım. Bu yüzden kullanıcıdan matris boyutunu isteyen(üzerinde işlem yapılanlar kare matris) ve ona göre arayüzü tekrardan şekillendiren bir yol izledim. Matrislerin kullanıcıdan alınmasıyla ilgili de bir blog yazısı yazacağım.

Sayısal analiz yöntemlerinin kodlanmasından bahsetmeye gerek yok bence. Kağıt üzerinde adım adım yapılan çözümleri bir programlama diliyle yapmak gayet basit. Projenin ekran görüntülerine, kaynak kodlarına ve JAR haline şu adresten ulaşabilirsiniz :

https://dl.dropboxusercontent.com/u/44525056/Toolkit.rar [Bağlantının sorunlu olması halinde mail ile ulaşıp isteyebilirsinz.]

Projeyi biraz daha geliştirmek gerektiğinde şunların yapılabileceğini düşünüyorum :

Aynı başlık altındaki yöntemlerin arayüz yapıları aynı. Bu durum için Java’nın katılım özelliğini kullanabilir miyiz?

Kullanıcıdan alının hiçbir veri kontrol edilmedi. Bunlar kontrol edilebilir.

Diğer sayısal analiz yöntemleri eklenebilir. Daha bir sürü var.

Yöntemler bir seferden fazla kullanım için uygun değil. Mesela bir yöntemi açıp işlem yaptıktan sonra, bir işlem daha yapayım derseniz matrisli yöntemler istenildiği gibi çalışmayabilir.

Eleştirilerinizi ve farklı fikirlerinizi paylaşabilirsiniz. İyi çalışmalar.

Comments

comments powered by Disqus