folder Tahribat.com Forumları
linefolder C - C++
linefolder C İle Matrix-Gauss İşlemi



C İle Matrix-Gauss İşlemi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        float x[9];
     	float B[9];
    	float a[9][9];
        int k,i,j,z;
        float L=0;
        float U=0;							
        
        //G sistem büyüklüğü max 20
        int G;
        float W=1.50;// relax katsayısı
        
        
        cout<<"sistemin boyutunu girinz"<<endl;
      // cin>>G;
       G=9;
        										
        
        		
        
        // başlangıç çözüm vektörü
        
        for(i=1;i<=G;i++)
        {
          x[i] =1;
        }
        
        // b vektörünü giriniz
        cout<<"denkelm sisteminin sag tarafını giriniz"<<endl;
        for (i=1;i<=G;i++)
                 {  cin>>B[i];
                    cout<<endl;
                 }
       
          
        
        cout<<"denkelm sisteminin katsayılarını giriniz giriniz"<<endl;
        
        /* for ( i=1;i<=G;i++)
            {
              for (j=1;j<=G;j++)
              {
                  cout<<endl;
                  cout<<"satir"<<i<<"  sutun"<<j<<"  ";
                  cin>>a[i][j];            
              }
                    
            
            }
            */   
        /* b[1]=18,b[2]=50,b[3]=21,b[4]=16;
        
        a[1][1]=4, a[1][2]=8,  a[1][3]=3,  a[1][4]=0;
        a[2][1]=0, a[2][2]=11, a[2][3]=-6, a[2][4]=20;
        a[3][1]=9, a[3][2]=20, a[3][3]=6,  a[3][4]=14;
        a[4][1]=0, a[4][2]=3,  a[4][3]=8,  a[4][4]=7;
        i=1,j=1;
        
        */
        
       /* B[1]=1;
    	B[2]=2,	B[3]=3,	B[4]=4,	B[5]=5;
     	B[6]=4, B[7]=3, B[8]=2, B[9]=1;*/
         
        a[1][1]=2  ,a[1][2]=1,	a[1][3]=0,	a[1][4]=0,	a[1][5]=0,	a[1][6]=0,	a[1][7]=0,	a[1][8]=0,	a[1][9]=0;
        a[2][1]=1,	a[2][2]=2,	a[2][3]=1, 	a[2][4]=0, 	a[2][5]=0,	a[2][6]=0,	a[2][7]=0,	a[2][8]=0,	a[2][9]=0;
        a[3][1]=0, 	a[3][2]=1,	a[3][3]=2,  a[3][4]=1, 	a[3][5]=0, 	a[3][6]=0, 	a[3][7]=0, 	a[3][8]=0, 	a[3][9]=0;
        a[4][1]=0, 	a[4][2]=0,  a[4][3]=1,  a[4][4]=2,  a[4][5]=1,  a[4][6]=0,  a[4][7]=0,  a[4][8]=0,  a[4][9]=0;
        a[5][1]=0,	a[5][2]=0,	a[5][3]=0,	a[5][4]=1,	a[5][5]=2,	a[5][6]=1,	a[5][7]=0,	a[5][8]=0,	a[5][9]=0;
        a[6][1]=0, 	a[6][2]=0,	a[6][3]=0, 	a[6][4]=0, 	a[6][5]=1, 	a[6][6]=2, 	a[6][7]=1, 	a[6][8]=0, 	a[6][9]=0; 
        a[7][1]=0, 	a[7][2]=0, 	a[7][3]=0, 	a[7][4]=0, 	a[7][5]=0, 	a[7][6]=1, 	a[7][7]=2, 	a[7][8]=1, 	a[7][9]=0;
        a[8][1]=0, 	a[8][2]=0, 	a[8][3]=0, 	a[8][4]=0, 	a[8][5]=0, 	a[8][6]=0, 	a[8][7]=1, 	a[8][8]=2, 	a[8][9]=1;
        a[9][1]=0, 	a[9][2]=0, 	a[9][3]=0, 	a[9][4]=0, 	a[9][5]=0, 	a[9][6]=0, 	a[9][7]=0, 	a[9][8]=1, 	a[9][9]=2;
        
        for(i=1;i<=9;i++)
        {
    		cout<<"B"<<i<<B[i]<<endl;
    	}
        
        
    for (k=1;k<=10;k++)
        {
        
        
         	for(i=1;i<=G;i++)
               
             {
                    //L
                    L=0;
                    cout<<"x"<<i<<endl;
                    for( j=1;j<=i-1;j++)
                        {                                      
                          	L=(a[i][j])*(x[j])+L;
                        }         
                       cout<<"**"<<endl;                      
                    // U
                    U=0;
                         
                    for (j=i+1;j<=G;j++)
                         
                        {
                        	U=(a[i][j])*(x[j])+U;
                        }                     
                  //monitör
                  	cout<<"w="<<W<<"x"<<i<<"="<<x[i]<<" b"<<i<<"="<<B[i]<<" "<<"a"<<a[i][i];
    			 	cout<<"  U"<<U<<"   L"<<L<<endl;
    			 //cout<<(1-W)x[i]
                   	x[i]= (1-W)*x[i]+W*(B[i]-U-L)/a[i][i];
                	cout<<"x"<<i<<"="<<x[i]<<endl;
                              //x[i][k]= (b[i]-U-L)/a[i][i];
             cout<<"ara";
             //cin>>z;
             }
             
        }
        
        cout<<endl;
        for (i=1;i<=G;i++)
        {
            cout<<"cozum vektor"<<endl;
            cout<<x[i]<<"   "<<endl;
        }
        
      
     
          
          
          
          
            
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Arkadaşlar yukarıdaki program Gauss siedel  SOR algoritması için yazdığım bir kod idi güya ..

    Fakat bir türlü doğru sonuç vermiyor..

    Biraz kurcalayınca B [] sabitlerine  yaptığım girdileri almadığını kafasınagöre birşeyler kullandığını gördüm..

    Monitör satırnda siz de görürsünüz..

    Nerde bir yanlışlığım var??


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Meliksah
    Meliksah's avatar
    Kayıt Tarihi: 26/Temmuz/2009
    Erkek

    edit


    aa iyi olmuş lan. güncelleme yapayım imzaya bi ara :W
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    C de arraylerin inde indexi 1 den değil 0 dan başlar. Aşağıda a[9][9] luk arrayine  a[1][1] den başlayarak değer vermeye başlamışşın ve 9 a kadar gitmişssin :) Halbuki a[0][0], a[0][1], a[0][2]... diye gitmen gerekiyordu ve en fazla 8 e kadar gitmen gerekiyordu. Bunu düzelt, belki düzelir ? Yani yaptığın aslında yanlış değil, böyle de çalışır fakat, sen array için ayrılmış 9 luk yere, birincisini boş bırakarak 10. yere veriyi yazıyorsun. Belki a[9] ve sonrası indexler başka programlar veya herhangi birşey tarafından kullanılıyor ? Bu yüzden senin [8][8] den a[9][9] a kadar kullandığın yerler belki de başka birşeyler tarafından değiştirilyordur :)

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    A[10] dediğin zaman A0, A1...A10 açılır.. A0'a değer atama zorunluluğum yok diye biliyorum C++ da..


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Onlara da baktım .. dediğn gibi olsa hiç değilse dizi bir adım kayar...

    giriş döngüsünden sonra yazdırdım B dizisini yine aynı saçma sonuç verdi :((


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek
    Garip ama gerçeklik bir olay.. B vektörü yerine C vektörü kullandım.. ve çalıştı...

    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        
    	
    	float a[10][10];
    	float x[9][21];
    	float C[9];
    	float L,U,W;
    	int k,i,j,z;
    	int G;
    	G=9;
    
    	W=1.5;
    
    	for (i=1;i<=G;i++)
    		{ 
    		cout<<" C vektörünü giriniz"<<endl;
    		cin>>C[i];
    		}
    	
    	cout<<" C vektörü"<<endl;
    	
    	for (i=1;i<=G;i++)
    		{ 
    		
    		cout<<C[i]<<endl;
    		
    		}
    	
     cout<<"****";
    	for (i=1;i<=9;i++)
    		{
    			
    		x[i][0]=1;
    		}
     cout<<"****"<<endl;		
    	/*	for (i=1;i<=9;i++)
    		{
    			
    		cout<<x[i][0]<<endl;
    		}
    	cin>>z;
    */
    		a[1][1]=2,	a[1][2]=1,	a[1][3]=0,	a[1][4]=0,	a[1][5]=0,	a[1][6]=0,	a[1][7]=0,	a[1][8]=0,	a[1][9]=0;
        	a[2][1]=1,	a[2][2]=2,	a[2][3]=1, 	a[2][4]=0, 	a[2][5]=0,	a[2][6]=0,	a[2][7]=0,	a[2][8]=0,	a[2][9]=0;
        	a[3][1]=0, 	a[3][2]=1,	a[3][3]=2,  a[3][4]=1, 	a[3][5]=0, 	a[3][6]=0, 	a[3][7]=0, 	a[3][8]=0, 	a[3][9]=0;
        	a[4][1]=0, 	a[4][2]=0,  a[4][3]=1,  a[4][4]=2,  a[4][5]=1, 	a[4][6]=0, 	a[4][7]=0, 	a[4][8]=0,  a[4][9]=0;
        	a[5][1]=0,	a[5][2]=0,	a[5][3]=0,	a[5][4]=1,	a[5][5]=2,	a[5][6]=1,	a[5][7]=0,	a[5][8]=0,	a[5][9]=0;
        	a[6][1]=0, 	a[6][2]=0,	a[6][3]=0, 	a[6][4]=0, 	a[6][5]=1, 	a[6][6]=2, 	a[6][7]=1, 	a[6][8]=0, 	a[6][9]=0; 
        	a[7][1]=0, 	a[7][2]=0, 	a[7][3]=0, 	a[7][4]=0, 	a[7][5]=0, 	a[7][6]=1, 	a[7][7]=2, 	a[7][8]=1, 	a[7][9]=0;
        	a[8][1]=0, 	a[8][2]=0, 	a[8][3]=0, 	a[8][4]=0, 	a[8][5]=0, 	a[8][6]=0, 	a[8][7]=1, 	a[8][8]=2, 	a[8][9]=1;
        	a[9][1]=0, 	a[9][2]=0, 	a[9][3]=0, 	a[9][4]=0, 	a[9][5]=0, 	a[9][6]=0, 	a[9][7]=0, 	a[9][8]=1, 	a[9][9]=2;
        
    
    
    
    	for (k=1;k<=10;k++)
    	{
    	
    		for(i=1;i<=G;i++)
    		
    		{
    		  
    			L=0;
    			for (j=1;j<=i-1;j++)
    			{
    			  L=(a[i][j])*(x[j][k])+L;
    			}
    
    			
    			U=0;
    			for (j=i+1;j<=G;j++)
    			
    			{
    				U=(a[i][j])*(x[j][k-1])+U;
    			}
    		//	cout<<"L="<<L<<"U="<<U<<endl;
    			x[i][k]=(1-W)*(x[i][k-1])+W*((C[i]-U-L))/(a[i][i]);
    
    		
    		//cout<<"x"<<i<<" L="<<L<<" U="<<U<<" C"<<i<<" "<<C[i]<<endl;
    		//cout<<"x"<<i<<k<<" "<<x[i][k]<<endl;
    
    
    		//cin>>z;
    
    		}
    
    		cout<<endl;
    		cout<<k<<"inci tur sonunda çözüm vektörü"<<endl;
    		
    		for (i=1;i<=G;i++)
    		{
    		 cout<<"x"<<x[i][k]<<"   "<<endl;
    		}
    
    	}
      			/*for (j=1;j<=9;j++)
    				{
    					for(i=1;i<=9;i++)
    					{
    				 		cout<<a[i][j]<<endl;
    					}
    				cin>>z;
    				}
    				*/	
    	 
    	system("PAUSE");
        return EXIT_SUCCESS;
    }
     
    

    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek
    Bir de arkadaşlar .. Bu iterasyon yönteminin çalışması için katsayılar matrisiin özdeğerlerinin 1den küçük olması gerekiyormuş.. Yoksa çözüm yakınsamaz...

    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hipokondriyak
    hipokondriyak's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    yarın bı bakaayım 


    Homo sapiens, yaşamak için, diğer canlıların yaşamasına muhtaç; obligat parazit türüdür. "Sen olursan boş bardak , sana olur koyan çok su. a.g."
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    ltcelik bunu yazdı:
    -----------------------------

    A[10] dediğin zaman A0, A1...A10 açılır.. A0'a değer atama zorunluluğum yok diye biliyorum C++ da..


    -----------------------------

    Yok abi A10 açılmıyor. Daha doğrusu belki açılıyordur da, senin arrayinin bittiğini filan anlamak için kullanılıyordu galiba. O yüzden hani iyi bir c++ sı gibi, indexlere 0 dan başla istersen abi. Döngülerde kullandığın i, j, k gibi index değerlerini yine döngü için de 1 den başlat ama,   a[i-1] gibi kullan, inan bana ileride c++ kullanırım diyorsan, buna alış, yoksa ilerde çok külfetini çekersin :/

Toplam Hit: 2055 Toplam Mesaj: 12