За последние 24 часа нас посетили 18059 программистов и 1652 робота. Сейчас ищет 1561 программист ...

Метод оптимального исключения

Тема в разделе "Сделайте за меня", создана пользователем rubotss, 23 ноя 2014.

  1. rubotss

    rubotss Новичок

    С нами с:
    30 сен 2014
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, уважаемые программисты, помогите пожалуйста со скриптом, требуется организовать метод оптимального исключения. Вот мои наработки:
    Код (Text):
    1. <HTML>
    2. <HEAD><TITLE>Метод Гаусса опт искл.</title> </HEAD>
    3. <body>
    4. Матрица составляется рандомно<br>
    5. <FORM METHOD="POST" action="Gus.php">
    6. <input type="text" name="string" size="5" >Кол-во строк x столбцов<br>
    7. <!--<input type="text" name="rowing" size="5">Кол-во столбцов<br>-->
    8. <input type="submit" value="Расчет">
    9. </FORM>
    10. </body>
    11. </HTML>
    12. <?php
    13. print"Изначальная матрица:<br> (a11 != 0) <br>";
    14. $str = $_POST['string'];
    15. // Забиваем матрицу из файла matrix.txt
    16. $f1 = fopen('matrix.txt','r+');
    17. $Gaus_tmp = file('matrix.txt');print "<br>";
    18. //echo count ($Gaus_tmp);print"<br>";
    19. //Находим количество итераций посредством нахождения корня из общего числа эл-ов
    20. $str = sqrt(count($Gaus_tmp));
    21. $str = floor($str);
    22. $f2 = fopen('rightPath.txt','r+');
    23. $y = 0;
    24. $e = 0;
    25. $kf =1;
    26. print"<table border=1 width=200 height=140>";
    27. //Считываем файл до конца///////////////////////////////////////////////////////
    28. while(!FEOF($f1))
    29.      {
    30.      print"<tr>";
    31.        for($e=0;$e<=$str; $e++)
    32.            {
    33.              $GausArr[$y][$e] = fgets($f1);
    34.              if($GausArr[$y][$e] == "\n")
    35.                 {
    36.                  unset($GausArr[$y][$e]);
    37.                  $GausArr[$y][$e] = $GausArr[$y][$e+1];
    38.                 }
    39.              echo "<td>".$GausArr[$y][$e]."</td>";
    40.            }
    41.        print"</tr>";
    42.        $y++;
    43.      }
    44.      print"</table>";
    45. fclose($f1);
    46. // Цикоы обработки матрицы//////////////////////////////////////////////////////
    47. // Определяем 1ую строку(Делим на ведущий эл-т)/////////////////////////////////
    48. print"<br>Конечная матрица:<br>";
    49. for($i = 0;$i < $str; $i++)
    50.     {
    51.      $v = $GausArr[$i][$i];
    52.      for($j=0;$j<=$str; $j++)
    53.          {
    54.             $m[$i][$j] = $GausArr[$i][$j] / $GausArr[$i][$i];
    55.          }
    56.          if($i>0)
    57.          {
    58.             for($j=0;$j<=$str; $j++)
    59.              {
    60.                 $m[$i][$j] =($m[$i][$j]-$m[$i-1][$j]*$m[$i][$i-1]);
    61.                 if ($i >= 2)
    62.                 {
    63.                  for($i = $i; $i >= 0; $i--)
    64.                      for($j =0; $j<=$str; $j++)
    65.                         {
    66.                              $m[$i][$j] = $m[$i][$j] -($m[$i-1][$j]*$m[$i][$i]);
    67.                         }
    68.                 }
    69.              }
    70.             /* for($j=$i;$j<=$str; $j++)
    71.              {
    72.                 $m[$i-1][$j] = $m[$i-1][$j]-$m[$i][$j]*$m[$i-1][$i];
    73.              } */
    74.            }
    75.     }                                                  /*
    76. for($i =2 ;$i<$str;$i++)
    77.     {
    78.             for($j=0;$j<$i;$j++)
    79.                 $m[$i][$j] = $m[1][0]*$m[$i][$j];
    80.                 //$m[$i][$j] = $m[$i][$j]/$GausArr[$i][$i];
    81.     }                                                    */
    82. echo "<table border=1 width=200 height=140>";
    83. for($i = 0;$i < $str; $i++)
    84.     {
    85.      echo "<tr>";
    86.      for($j=0;$j<=$str; $j++)
    87.          {
    88.           echo "<td>".round($m[$i][$j],02)."</td>";
    89.          }
    90.      print"</tr>";
    91.      }
    92. print"</table>";
    Вот файл matrix.txt
    Код (Text):
    1. 0.0002
    2. 3.4
    3. -1.8
    4. 2.1  
    5. 2.3561
    6. 3.7  
    7. -0.9  
    8. 0.7  
    9. 5.7  
    10. 7.556
    11. -1.9  
    12. -27  
    13. 5.3  
    14. 2.9  
    15. -3.051
    16. 18  
    17. 4.1  
    18. 7.3  
    19. -0.1  
    20. 12.334