c + + php dönüşüm

2 Cevap

Ben c + + Writed bir LU wroted ve ben bunu en woarks yaptım php için aynı kodu eklemek gerek ama php i diffrent sonuçlar var. C + + ana hesapla şunlardır:

 for (int i=0;i<m;i++)
    {
         for (int j=0;j<m;j++)
         {
             cout << tab1[i][j]<<"\t";    
         }   
         cout <<endl;
    }

      for (int i=0;i<m;i++)
    {
         for (int j=0;j<m;j++)
         {

             if (i==j) 
              {
                       tab2[i][j]=1;
                       tab3[i][j]=0;
                       }
              else
              {
                       tab3[i][j]=0;
                       tab2[i][j]=0;
                       }

         }   
    }
       //glowne dzielenie tego co mamy do rozlozenia
    for (int i=0;i<m;i++)
    {   

        for (int j=0;j<m;j++)
        {
            for (int k=0;k<m;k++)
            {
                pom+=tab2[i][k]*tab3[k][j];   
                pomoc+=tab2[j][k]*tab3[k][i];    
            }    
           if (i<=j)
            tab3[i][j]=tab1[i][j]-pom;

           if (j>=i)
            tab2[j][i]=(tab1[j][i]-pomoc)/tab3[i][i];

            pom=0;
            pomoc=0;
        }    
    }

ve php görünüyor:

 $w= sizeof($this->input['macierz_1']);
    	$pom=0; 		$pomoc=0;

    	      		 		for ($i=1;$i<=$w;$i++)
        		{
            	for ($j=1;$j<=$w;$j++)
            		{

                		if ($i==$j) 
                		{
                            	$tab2[$i][$j]=1;
                            	$tab3[$i][$j]=0;
                            	}
                	else
                		{
                            	$tab3[$i][$j]=0;
                            	$tab2[$i][$j]=0;
                            	}

            		}   
        		}

        //glowne dzielenie tego co mamy do rozlozenia
        for ($i=1;$i<=$w;$i++)
        	{   
            for ($j=1;$j<=$w;$j++)
            	{
                	for ($k=1;$k<=$w;$k++)
                		{
                    	$pom+=$tab2[$i][$k]*$tab3[$k][$j];  
                    	$pomoc+=$tab2[$j][$k]*$tab3[$k][$i];


    					}    
                	if ($i<=$j)
    		 			$tab3[$i][$j]=($this->input['macierz_1'][$i][$j])-$pom;


                	if ($j>=$i)

                	$tab2[$j][$i]=(($this->input['macierz_1'][$i][$j])-$pomoc)/$tab3[$i][$i];


                	$pom=0;
                	$pomoc=0;

            	}    
        	}
     		echo '<b>Macierz wynikowa L:<br> </b>';
    	$this->formularz($w,$w,'macierz_L',$tab2);
    	 		echo '<b>Macierz wynikowa U: <br> </b>';
    	$this->formularz($w,$w,'macierz_U',$tab3);
    	 		}

Ben onun ok algorym php şeklinde 1 0 değil ve tüm ARRY başladığını biliyoruz. I mastake maskeli veya woarks php algorytm LU vermek nerede herhangi biri bana söyleyebilir?

2 Cevap

  1. Bir LU nedir?
  2. Eğer hata ile tam olarak ne demek istiyorsun. Runtime hatası, beklenmedik çıktı, programı sonlandırmak değil?

İlk bakışta, PHP kodu benim için doğru arar.

Aksi takdirde insanlar size yardımcı olmak için bir güçlük çekiyoruz, biraz daha net olması gerekiyor.

Bu örnekte yardımcı olur mu? http://au.php.net/manual/en/function.array.php#49054

gmail michael nokta bommarito nokta com

15 Oca 2005 03:14

Başkasının bir LU ayrıştırma işlevi yazma bazı yardım arıyordum sadece durumda, burada basit bir örnek.

N.B. Tüm diziler Bu değiştirmek zor değildir. Değildir indeksi 1, 0 ile başlayan varsayılır, fakat (1 => ...) sen dizisi belirtirseniz emin olun ki, sadece array (...).

Ayrıca, bu fonksiyon sadece matrislerin değişken unsurları dikkate optimize edilmiştir. $ L daha düşük bir üçgen matris gibi, çapraz ya da üst üçgen ya da elemanlarını hesaplamak için gerek yoktur; aynı şekilde $ U.

Bu fonksiyon aynı zamanda girdi matrisi tekil olmayan olduğunu doğrulamak için kontrol etmez.

/*
 * LU Decomposition
 * @param $A initial matrix (1...m x 1...n)
 * @param $L lower triangular matrix, passed by reference
 * @param $U upper triangular matrix, passed by reference
*/
function LUDecompose($A, &$L, &$U) 
{
    $m = sizeof($A);
    $n = sizeof($A[1]);

    for ( $i = 1; $i <= $m; $i++ ) {
        $U[$i][$i] = $A[$i][$i];

        for ( $j = $i + 1; $j <= $m; $j++ ) {
            $L[$j][$i] = $A[$j][$i] / $U[$i][$i];
            $U[$i][$j] = $A[$i][$j];
        }
        for ( $j = $i + 1; $j <= $m; $j++ ) {
            for ( $k = $i + 1; $k <= $m; $k++ ) {
              $A[$j][$k] = $A[$j][$k] - ($L[$j][$i] * $U[$i][$k]);
            }
        }
    }

    return;
}