Example #1
0
 void CikanSatir()
 {
     gecicists = double.MaxValue;
     if (gecici > 0)
     {
         for (int i = 1; i < denklemler.Count; i++)
         {
             for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
             {
                 if (denklemler[i].degiskenler[j].adi == degisken.adi)
                 {
                     if ((denklemler[i].sts / denklemler[i].degiskenler[j].katsayi) > 0 && (denklemler[i].sts / denklemler[i].degiskenler[j].katsayi) <= gecicists)
                     {
                         gecicists = (denklemler[i].sts / denklemler[i].degiskenler[j].katsayi);
                         row       = denklemler[i];
                         degisken  = denklemler[i].degiskenler[j];
                         x         = j;
                     }
                 }
             }
         }
         //   GirenEkle(degisken.adi, 2);
         Console.WriteLine("cikan degisken  {0}  {1}  ", row.rows, row.sts);
     }
 }
Example #2
0
        }//giren degişkeni listeye atıp cıkan degişkeni listeden sildim

        void IlkAsama()// Min r oluşturuldu
        {
            r.rows    = "r";
            r.esitlik = "N";
            r.sts     = 0;
            foreach (var item in denklemler[0].degiskenler)
            {
                degisken = item;
                if (degisken.adi.Contains("R"))
                {
                    degisken.katsayi = -1;
                }
                else
                {
                    degisken.katsayi = 0;
                }
                r.degiskenler.Add(degisken);
            }
            for (int i = 0; i < r.degiskenler.Count; i++)
            {
                if (r.degiskenler[i].adi.Contains("R"))
                {
                    s++;
                }
            }
            if (s != 0)
            {
                RSıfırla();
                foreach (var item in r.degiskenler)
                {
                    Console.Write(item.adi + " " + item.katsayi + "\n");
                }
                Console.WriteLine(r.sts);
                Console.WriteLine("r yazıldı");
                BirinciAsamaGaussJordan();
                Console.WriteLine("birinci asama bitti");
                foreach (object item in girencikanD)
                {
                    Console.WriteLine(item.ToString());
                }
                RYokSay();
                ZSatiriDonusum();
                Console.Write("İstenilen iterasyon sayisini girin= ");
                iter = Convert.ToInt32(Console.ReadLine());
                IkinciAsamaGaussJordan();
            }
            else
            {
                Console.Write("İstenilen iterasyon sayisini girin= ");
                iter = Convert.ToInt32(Console.ReadLine());
                IkinciAsamaGaussJordan();
                foreach (object item in girencikanD)
                {
                    Console.WriteLine(item.ToString());
                }
            }
        }
Example #3
0
 void AralikDuzen()//gelen degişkenlerin minlerini ve maxlarını düzenler
 {
     for (int i = 0; i < denklemler.Count; i++)
     {
         for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
         {
             if (denklemler[i].degiskenler[j].min < 0)
             {
                 degisken           = denklemler[i].degiskenler[j];
                 denklemler[i].sts -= (degisken.katsayi) * (degisken.min * -1);
                 // Console.WriteLine(degisken.adi+" "+degisken.katsayi * (degisken.min * -1));
                 string sifirla = degisken.adi;
                 aralikDegiskeniK.Add(sifirla);
                 degisken.max += (degisken.min * -1);
                 mindegri.Add((degisken.min));
                 degisken.min = 0;
                 denklemler[i].degiskenler[j] = degisken;
             }
             else
             {
                 if (denklemler[i].degiskenler[j].min > 0)
                 {
                     degisken           = denklemler[i].degiskenler[j];
                     denklemler[i].sts -= degisken.katsayi * (degisken.min);
                     string sifirla = degisken.adi;
                     aralikDegiskeniB.Add(sifirla);
                     degisken.max -= (degisken.min);
                     mindegri1.Add(degisken.min);
                     degisken.min = 0;
                     denklemler[i].degiskenler[j] = degisken;
                 }
             }
         }
     }
     foreach (var item in denklemler)
     {
         Console.WriteLine(item.rows + " " + item.sts);
         foreach (var item2 in item.degiskenler)
         {
             Console.Write(item2.adi + " " + item2.katsayi + " " + "Min=" + item2.min + " " + "Max=" + item2.max + "\n");
         }
     }
     Console.WriteLine("Degişken aralıkları normalleştirilerek yazıldı ");
 }
Example #4
0
        void ZSatiriDonusum()
        {
            for (int i = 1; i < denklemler.Count; i++)
            {
                for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
                {
                    if (!denklemler[i].degiskenler[j].adi.Contains("S"))
                    {
                        if (denklemler[i].degiskenler[j].katsayi == 1)
                        {
                            denklemler[i].sts           *= (denklemler[0].degiskenler[j].katsayi * -1);
                            denklemler[0].sts           += denklemler[i].sts;
                            degisken                     = denklemler[i].degiskenler[j];
                            degisken.katsayi             = degisken.katsayi * (denklemler[0].degiskenler[j].katsayi * -1);
                            denklemler[i].degiskenler[j] = degisken;
                            degisken2                    = denklemler[0].degiskenler[j];
                            degisken2.katsayi           += degisken.katsayi;
                            denklemler[0].degiskenler[j] = degisken2;
                            for (int k = 0; k < denklemler[i].degiskenler.Count; k++)
                            {
                                if (degisken.adi != denklemler[i].degiskenler[k].adi)
                                {
                                    degisken2                    = denklemler[i].degiskenler[k];
                                    degisken2.katsayi           *= degisken.katsayi;
                                    denklemler[i].degiskenler[k] = degisken2;

                                    degisken3                    = denklemler[0].degiskenler[k];
                                    degisken3.katsayi           += degisken2.katsayi;
                                    denklemler[0].degiskenler[k] = degisken3;
                                }
                            }
                        }
                    }
                }
            }
            foreach (var item in denklemler)
            {
                Console.WriteLine("{0}  {1}", item.rows, item.sts);
                foreach (var item2 in item.degiskenler)
                {
                    Console.WriteLine("{0}  {1}    ", item2.adi, item2.katsayi);
                }
            }
        }
Example #5
0
        }//Dolgu ve artık ve yapay  degişken eklendi

        void Free()
        {
            for (int i = 0; i < denklemler.Count; i++)
            {
                for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
                {
                    if (denklemler[i].degiskenler[j].free == true)
                    {
                        degisken      = denklemler[i].degiskenler[j];
                        degisken.adi += "+";
                        denklemler[i].degiskenler[j] = degisken;
                        degisken.adi  = degisken.adi.Remove(degisken.adi.Length - 1);
                        degisken.adi += "-";
                        denklemler[i].degiskenler.Insert(j + 1, degisken);
                        j++;
                    }
                }
            }
        }//sınırlandırılmamış degişken iki parcayla denkleme yazıldı
Example #6
0
 void RsizGirenSutun()
 {
     gecici = 0;
     if (tur == "MIN")
     {
         for (int i = 0; i < denklemler[0].degiskenler.Count; i++)
         {
             if (denklemler[0].degiskenler[i].katsayi > 0)
             {
                 if (denklemler[0].degiskenler[i].katsayi > gecici)
                 {
                     gecici   = denklemler[0].degiskenler[i].katsayi;
                     degisken = denklemler[0].degiskenler[i];
                 }
             }
         }
     }
     else
     {
         for (int i = 0; i < denklemler[0].degiskenler.Count; i++)
         {
             if (denklemler[0].degiskenler[i].katsayi < 0)
             {
                 if (Math.Abs(denklemler[0].degiskenler[i].katsayi) > gecici)
                 {
                     gecici   = Math.Abs(denklemler[0].degiskenler[i].katsayi);
                     degisken = denklemler[0].degiskenler[i];
                 }
             }
         }
     }
     //   GirenEkle(degisken.adi, 1);
     if (degisken.katsayi == 0)
     {
         Console.WriteLine("Problemin uygun cözümü yok");
     }
     else
     {
         Console.WriteLine("giren degisken  " + degisken.adi + " " + degisken.katsayi);
     }
 }
Example #7
0
 void RSıfırla()//oluşturulan r nin R degerleri sıfırlandı
 {
     for (int i = 1; i < denklemler.Count; i++)
     {
         for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
         {
             if (denklemler[i].degiskenler[j].adi.Contains("R"))
             {
                 if (denklemler[i].degiskenler[j].katsayi == 1)
                 {
                     r.sts += denklemler[i].sts;
                     for (int k = 0; k < r.degiskenler.Count; k++)
                     {
                         degisken          = r.degiskenler[k];
                         degisken.katsayi += denklemler[i].degiskenler[k].katsayi;
                         r.degiskenler[k]  = degisken;
                     }
                 }
             }
         }
     }
 }
Example #8
0
 void RliGirenSutun()
 {
     gecici = 0;
     for (int i = 0; i < r.degiskenler.Count; i++)
     {
         if (r.degiskenler[i].katsayi > 0)
         {
             if (r.degiskenler[i].katsayi > gecici)
             {
                 gecici   = r.degiskenler[i].katsayi;
                 degisken = r.degiskenler[i];
             }
         }
     }
     GirenEkle(degisken.adi, 1);
     if (degisken.katsayi == 0)
     {
         Console.WriteLine("Problemin uygun cözümü yok");
     }
     else
     {
         Console.WriteLine("giren degisken  " + degisken.adi + " " + degisken.katsayi);
     }
 }
Example #9
0
        void COLUMNS(StreamReader O)
        {
            while ((tut = O.ReadLine().Trim()) != "RHS")
            {
                tut = tut.Replace('.', ',');
                string[] satir = tut.Split(bosluk, StringSplitOptions.RemoveEmptyEntries);
                if (satir.Length == 3)
                {
                    foreach (var item in denklemler)
                    {
                        if (item.rows == satir[1])
                        {
                            degisken.adi     = satir[0];
                            degisken.katsayi = Convert.ToDouble(satir[2]);
                            item.degiskenler.Add(degisken);
                        }
                    }
                }
                else if (satir.Length == 5)
                {
                    foreach (var item in denklemler)
                    {
                        if (item.rows == satir[1])
                        {
                            degisken.adi     = satir[0];
                            degisken.katsayi = Convert.ToDouble(satir[2]);
                            item.degiskenler.Add(degisken);
                        }
                        if (item.rows == satir[3])
                        {
                            degisken.adi     = satir[0];
                            degisken.katsayi = Convert.ToDouble(satir[4]);
                            item.degiskenler.Add(degisken);
                        }
                    }
                }
            }
            foreach (var item in denklemler)
            {
                if (item.esitlik == "N")
                {
                    for (int i = 0; i < item.degiskenler.Count; i++)
                    {
                        degisken            = item.degiskenler[i];
                        degisken.katsayi   *= -1;
                        item.degiskenler[i] = degisken;
                        foreach (var item2 in denklemler)
                        {
                            if (i < item2.degiskenler.Count)
                            {
                                if (item.degiskenler[i].adi != item2.degiskenler[i].adi)
                                {
                                    degisken.adi     = item.degiskenler[i].adi;
                                    degisken.katsayi = 0;
                                    item2.degiskenler.Insert(i, degisken);
                                }
                            }

                            if (i >= item2.degiskenler.Count)
                            {
                                degisken.adi     = item.degiskenler[i].adi;
                                degisken.katsayi = 0;
                                item2.degiskenler.Add(degisken);
                            }
                        }
                    }
                }
            }
        }
Example #10
0
        void BOUNDS(StreamReader O)
        {
            int sayac = 0;

            while ((tut = O.ReadLine().Trim()) != "ENDATA")
            {
                sayac++;
                tut = tut.Replace('.', ',');
                string[] satir = tut.Split(bosluk, StringSplitOptions.RemoveEmptyEntries);
                if (satir[0] == "FR")
                {
                    for (int i = 0; i < denklemler.Count; i++)
                    {
                        for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
                        {
                            if (denklemler[i].degiskenler[j].adi == satir[2])
                            {
                                degisken      = denklemler[i].degiskenler[j];
                                degisken.free = true;
                                denklemler[i].degiskenler[j] = degisken;
                            }
                        }
                    }
                }

                else
                {
                    for (int i = 0; i < denklemler.Count; i++)
                    {
                        for (int j = 0; j < denklemler[i].degiskenler.Count; j++)
                        {
                            if (satir[0] == "UP")
                            {
                                if (denklemler[i].degiskenler[j].adi == satir[2])
                                {
                                    degisken     = denklemler[i].degiskenler[j];
                                    degisken.max = Convert.ToDouble(satir[3]);
                                    denklemler[i].degiskenler[j] = degisken;
                                }
                                else// Eger adi yok ise max en yuksek olsun
                                {
                                    if (denklemler[i].degiskenler[j].max == 0)//ama önceden bir deger atıldıysa degişmesin
                                    {
                                        degisken     = denklemler[i].degiskenler[j];
                                        degisken.max = double.MaxValue;
                                        denklemler[i].degiskenler[j] = degisken;
                                    }
                                }
                            }
                            if (satir[0] == "LO")
                            {
                                if (denklemler[i].degiskenler[j].adi == satir[2])
                                {
                                    degisken     = denklemler[i].degiskenler[j];
                                    degisken.min = Convert.ToDouble(satir[3]);
                                    denklemler[i].degiskenler[j] = degisken;
                                }
                                else
                                {
                                    if (degisken.min == 0)//eger daha once bir deger atıldıysa degiştirilmesin diye
                                    {
                                        degisken     = denklemler[i].degiskenler[j];
                                        degisken.min = 0;
                                        denklemler[i].degiskenler[j] = degisken;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (sayac == 0)//BOUNDS bölümüne birşey yazılmamış ise while çalışmaz sayaç sıfır isedegişkenlerin hepsine min ve max degeri atılır
            {
                if (tut != "FR" || tut != "UP" || tut != "LO")
                {
                    foreach (var item in denklemler)
                    {
                        for (int i = 0; i < item.degiskenler.Count; i++)
                        {
                            degisken            = item.degiskenler[i];
                            degisken.min        = 0;
                            degisken.max        = double.MaxValue;
                            item.degiskenler[i] = degisken;
                        }
                    }
                }
            }
        }