Favorilerine Ekle | Giriş Sayfan Yap | Tavsiye Et

 

Kurs Tanıtım Sayfası | Süper Üye Kimdir? | Menü Tasarımı Konulu Örnek Ders
Kod İndir| Hazır Kodlar | Makaleler| İpuçları | VB .NET Kursu | Dersler | Forum | Alt Bölümler | Servisler
    Merhaba Misafir
    anasayfa » visual basic makaleleri » Gauss Eliminasyon Yöntemi Algoritması
Üye Girişi
Kullanıcı Adı:  
Şifre : 
Kaydet ?
Siteden tam olarak faydalanabilmek için üye olmalısınız.
Unuttuğunuz şifrenizi öğrenebilmek için kayıt sırasında verdiğiniz Hatırlatma Cevabı'nı bilmeniz gereklidir.
Şifre hatırlatma işlevini sadece 3 defa kullanma hakkınız vardır.
Kullanıcı adını ve şifresini unutan üyelere email ile yardım verilmez.

Aktivasyon Gelmedi mi?Aktivasyon mesajınız email adresinize gelmedi mi?
Buraya tıklayarak bir kez daha aktivasyon mesajı gönderilmesini sağlayabilirsiniz.
Lütfen email hesabınızın BULK ve SPAM klasörlerini de kontrol ediniz.
Rastgele Makale

DATAGRID İÇİNDEKİ SÜTUNLARI İSTE?E GÖRE SIRALAMA

Yazar: balbasy

Webmasterlar
Sitenize Ekleyin!
Sitenizde "Son Eklenen 10 Visual Basic Yazısı"'nı göstermek ve içeriğini zenginleştirmek için buraya tıklayınız.

Vbasicmaster.com'a link verin!
Aşağıdaki minik banneri sitenize eklemek için tıklayın!

Üye Sayısı:
Ziyaretçiler nerede?
Yayın № : 7928
Yayın Tar:16.10.2006
Yazar : pegamen
Hit :9389

Bu Yazarın Yazıları Sadece bu yazarın  göster
Bu Yazıyı Tavsiye Et

Lineer Denklem takımlarının çözümünde kullanılan yöntemlerden biri Gauss Eliminasyon Yöntemidir. Burada bu yöntemin sınırlı değişken için modellenmiş algoritması verilmiştir. Belki günün birinde birinin işine yarar...

Lineer denklem takımı : hatırlarsanız sanırım lisede birinci dereceden 3 bilinmeyenli 3 denklem verilip çözdürülürdü. birini çekip diğerinde yerine koy falan. işte bu denklemlerin tümüne lineer denklem takımı deniyor. Değişken sayısı 3 değilde 10 veya daha büyük olunca bu denklem takımlarının elle çözümü mantıklı değildir.

Burada bir form üzerine denklemlerin katsayılarının girileceği örnek bir matris giriş arayüzü oluşturup bunun üzerinden çözüme gideceğiz. Çok büyük denklem takımlarında sayılar elle girilmez bir text dosyadan okunur mantığı ile buradaki değişken sayısını 12 ile sınırlandıralım. combo1 ile kullanıcı tarafından beyan edilen değişken sayısına uygun olarak ister textbox'larla ister msflexgrid ile ekranda görsel bir matrisi enable edelim. matrisin satır sayısı değişken sayısı/denklem sayısı ile aynı iken sütun sayısı bir fazla olacaktır. bu sütuna denklemlerde eşitliğin sağ tarafındaki sabit sayı yazılacak.

Gauss Eliminasyon Yönteminde temel mantık değişken katsayılarından oluşan matriste her satırı sıra ile ele alıp önce pivotun (diagonal üzerindeki eleman) 1 yapılması ardından da diğer satırlarda pivot altındaki elemanların 0 yapılmasıdır. sonuçta ortaya çıkan matriste tüm pivotlar 1 ve pivot altındaki elemanlar 0 olacaktır. burada en alttan başlanarak satırlar denklem şeklinde yazıldığında kolayca sonuca gidilir.

Aşağıda arayüzdeki katsayı değerlerinin maksimum 13'e 13 olacak bir matrise aktarılmış hali üzerinde Gauss algoritması verilmiştir. bu nokta öncesinde katsayıların bazı kontrolleri yapılmalıdır. determinantı 0 olan bir matriste denklemler bağımsız değildir, çözüm yoktur.


Dim x As Integer
Dim y As Integer
Dim z As Integer

Dim carpan As Single

Dim pivot As Single

Dim dsay As Integer
dsay = Main.Combo1.Text 'değişken sayısı (matris satır/sütun sayısı)

Dim w(13, 13) As Single 'örnekte maksimum değişken 12 olabilir. en sağ sütunda denklemlerin sağındaki değer var.

For x = 1 To dsay
pivot = w(x, x)
If pivot <> 1 Then
For y = 1 To dsay + 1
w(x, y) = w(x, y) / pivot 'satır pivota bölünüp pivot=1 yapıldı.
Next
End If
For y = x + 1 To dsay 'pivotun altındaki elemanlar sıfırlandı.
carpan = -w(y, x) / w(x, x)
For z = 1 To dsay + 1
w(y, z) = (carpan * w(x, z)) + w(y, z)
Next
Next
Next

'burada w matrisi çözümden önceki son şekle geldi.

Dim q(12) As Single 'bulunacak değişkenler...

For x = 1 To 12
q(x) = 0
Next

For x = dsay To 1 Step -1 'buradaki döngü ile sondan başa denklemler açılıp bilinmeyenler bulunur ve q(?) lara yerleştirilir.
q(x) = w(x, dsay + 1) / w(x, x)
If x <> dsay Then
For y = x To dsay + 1
If y = 12 Then Exit For
q(x) = q(x) - ((w(x, y + 1) * q(y + 1)) / w(x, x))
Next
End If
Next
onaylayan: Webmaster




Yorumlar, eklemeler ve düşünceler
        w(x,x)<>0 oldugu durumda bu islem yapılabilir, w(x,x)=0 ise uygun rotastonlar yapılarak asal kosegen uzerinde 0 olmayacak sekilde matris duzenlenmelidir.

   Ramci, 07.11.2006 15:44
   Evet - doğru.
Program parçacığı bütünden kopya olduğundan orasını almamışım, teşekkürler.

Matriste satırların yerini değiştirdiğinizde denklem takımı çözümü açısından bir farklılık olmaz.
Oluşan farklılık matrisin determinantının işaretinin değişmesidir.
Aşağıda determinant hesabında kullanılmak üzere bir işaretçi eklenmiş kontrol döngüsü yer almaktadır. İlgilenenlerin lineer denklem takımı çözümlerinde kullanılan bir diğer yöntem; Cholesky Ayrıştırma Algoritmasına da bakmasını tavsiye ederim. Henüz onaydan çıkmadığından adres veremiyorum, tarihi yazayım bari --> 24 Kasım 2006

Dim DetNeg As Integer
DetNeg = 0

PivCo:
Dim araci As Double
Dim yon As Integer
'Pivot=0 kontrolü
For m = 1 To dsay
If w(m, m) = 0 Then
For a = m To dsay
b = a + 1
If b = dsay + 1 Then
For n = 1 To m
b = n
If w(b, m) <> 0 Then Exit For
Next
Exit For
End If
If w(b, m) <> 0 Then Exit For
Next

For x = 1 To dsay + 1
araci = w(m, x)
w(m, x) = w(b, x)
w(b, x) = araci
Next
If DetNeg = 0 Then
DetNeg = 1 'Determinant hesabında işaret değişecek.
Else
DetNeg = 0
End If
End If
Next

For m = 1 To dsay 'aman kaçırmayalım.
If w(m, m) = 0 Then GoTo PivCo
Next

   pegamen, 24.11.2006 14:07
   kodları yazdım ve dsay= main.combo1.text te main de hata veriyor...
vb den pek bir şey anlamam,ödev olduğu için bi çaba içerisindeym.bi yardım ederseniz sevinirim..

   deniz1172, 08.05.2007 14:35
   güzel olmuş da w(x,x)=0 olma durumunu anlamadım...çok karışık :( bu algoritmayı acilen yazmam lazım biri bana yardım edebilirmi?...lütfennn...desem?

   encaisajika, 02.12.2007 20:49
© Hakan Ersöz 2000-2013| Üyelik Sözleşmesi | | Ödeme Bildirimi
Sitemizden yenilikleri hemen öğrenin, pop upları engelleyin, chat yapın... ToolBarımızı indirin:
Vasicmaster Toolbar'ı indirin