Отчет по лабораторной работе 5 по курсу Разработка программных систем Выполнила- Митина Е.



Работа добавлена на сайт TXTRef.ru: 2019-10-29

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

высшего профессионального образования

“Московский государственный технический университет

имени Н.Э. Баумана”

(МГТУ им. Н.Э.Баумана)

Факультет «Робототехника и комплексная автоматизация» (РК)

Кафедра «Системы автоматизированного проектирования» (РК-6)

Отчет по лабораторной работе №5

по курсу

«Разработка программных систем»

 

Выполнила: Митина Е.В.

группа РК6-112

Проверил: Федорук В.Г.

Подпись_________________

Дата___________________

Москва 2011

Вариант №1

Разработать web-программу решения системы линейных алгебраических уравнений методом Гаусса (запрос размерности системы на стартовой странице -> форма для ввода значений элементов матрицы и вектора правых частей -> форма с найденным вектором неизвестных). В качестве прототипа рекомендуется использовать http://tester.comcor.ru/gauss.php.

Текст программы

<?php

// print_r($_POST);

   if(is_array($_POST) && (count($_POST) > 0) && ($_POST['submit1']))  {

       $N = intval( $_POST['N'] );

       if($N <= 0) {

         echo "<CENTER> <span style=\"color: red\">Размерность должна быть > 0 ! </span></CENTER>";

         showForm1();

       }

         else {

       showForm2( $N );}

 }

 else if ($_POST['submit2']) {

   $N = intval( $_POST['N'] );

   $A = $_POST['a'];

   $F = $_POST['b'];

   $X = solveSystem( $N, $A, $F );

   if( is_array($X)  && sizeof( $X ) > 0 ) {

     showResults( $N, $X );

   }

   else {

     showError( "Нули!" );              

   }

   showForm2( $N, $A, $F );  

   }

 else  {

   showForm1();

 }                                 

 //function1  

 function showForm1()

 {

?>

<CENTER>

   <form action="logic1.php" method="post">

 <b>Введите число уравнений в системе!</b><br>

   Число уравнений:<br>

 <input type="text" name="N" size="5" maxlength="5" value="5"><br>

 <input type="submit" name="submit1" value="Далее">

 </form>

</CENTER>

<?php

 }  

//function2  

 function showForm2($N, $A = false, $F = false)

 {           

?>

<CENTER>

<FORM ACTION="/logic1.php" METHOD="POST">

<TABLE>

 <TR>

   <TD>

      <TABLE BORDER="1">

<?php       

         $k = 0;

   if( is_array($A) && sizeof( $A ) > 0 ){

//         echo "A is array";  

         for ($i=0; $i < $N; $i++ ) {

           echo "<TR>";

//            $bound_left =    max (0, $i - 1);

//            $bound_right =     min ($N-1 , $i + 1);

            for($j = 0; $j < $N; $j++) {

 //            if(($j >= $bound_left) && ($j <= $bound_right))  {

               echo "<TD><INPUT TYPE=\"text\" NAME=\"a[" . ($k) . "]\" SIZE=\"4\" ALIGN=\"RIGHT\" VALUE=\"";

               echo $A[ $k ];

               echo "\"></TD>";

               $k++;

             }

   //          else

   //            echo "<TD><B>0</B></TD>";

   //        }   

           echo "</TR>";          

          }

   }

   else   {

           //echo "A is false";

           for ($i=0; $i < $N; $i++ ) {

           echo "<TR>";

//            $bound_left =    max (0, $i - 1);

//            $bound_right =   min ($N-1 , $i + 1);

             for($j = 0; $j < $N; $j++) {

//             if(($j >= $bound_left) && ($j <= $bound_right))  {

               echo "<TD><INPUT TYPE=\"text\" NAME=\"a[" . ($k++) . "]\" SIZE=\"4\" ALIGN=\"RIGHT\" VALUE=\"";

               echo ($i == $j)?1:0;

               echo "\"></TD>";

             }

  //           else

  //             echo "<TD><B>0</B></TD>";

  //         }   

           echo "</TR>";          

         }

   }

 ?>        

     </TABLE>           

   </TD>     

   <TD ALIGN="CENTER">

     <B>x</B>

   </TD>

   <TD>

     <TABLE BORDER="1">

<?php       

               for ($i=0; $i < $N; $i++ ) {

?>

                 <TR><TD><B><I>x<SUB><?php echo $i;?></SUB></I></B></TD></TR>

<?php                 

               }        

?>        

   </TABLE>  

   </TD>

       <TD ALIGN="CENTER">      <B>=</B>   </TD>

                               <TD>      <TABLE BORDER="1">

<?php                       

                           if( is_array($F) && sizeof( $F ) > 0 ) {

                            //echo "F is array"  ;

                                  for ($i=0; $i < $N; $i++ ) {

                                     echo "<TR>";

                                     echo "<TD><INPUT TYPE=\"text\" NAME=\"b[" . ($i) . "]\" SIZE=\"2\" ALIGN=\"RIGHT\" VALUE=\"";

                                     echo $F[ $i ];

                                     echo "\"></TD>";

                                     echo "</TR>";          

                                  }                               

                           }

                           else {

                               //echo "F is false";

                                  for ($i=0; $i < $N; $i++ ) {

                                     echo "<TR>";

                                     echo "<TD><INPUT TYPE=\"text\" NAME=\"b[" . ($i) . "]\" SIZE=\"2\" ALIGN=\"RIGHT\" VALUE=\"1\"></TD>";

                                     echo "</TR>";          

                                  }                             

                           }

?>        

                                          </TABLE>  

                                </TD>

   </TR>

</TABLE>

<INPUT TYPE="HIDDEN" VALUE="<?php echo $N;?>" NAME="N">   

<input type="submit" name="submit2" value="Решить">

   </FORM>  

</CENTER>

  <?php

 }  

//function3

 function solveSystem($N, $A, $F)

 {

    if(0 == $A[0]) {

    return false;

   }

     // pryamoj hod

   for($k=0; $k<$N; $k++)

     {

    for($i=$k+1; $i<$N; $i++)

    {

      if($A[$k*$N+$k]==0) {

     return false;

   }

   $M=$A[$i*$N+$k]/$A[$k*$N+$k];

      for($j=$k; $j<$N; $j++) {

       $A[$i*$N+$j]-=$M*$A[$k*$N+$j];

   }

   $F[$i]-=$M*$F[$k];

    }

  }

     /*    echo "<br>array A[i]:<br>";

    print_r($A);

    echo "<br>array F[i]:<br>";

    print_r($F); */

 $X = array();

    $X[$N-1]=$F[$N-1]/$A[($N-1)*$N+$N-1];

   for($i=$N-2; $i>=0; $i--)

      {

     $X[$i]=$F[$i]/$A[$i*$N+$i];

           for($k=$i; $k<$N-1; $k++)

     {

       $X[$i]-=$X[$k+1]*$A[$i*$N+$k+1]/$A[$i*$N+$i];    

     }

   }

/*    echo "<br>array X[i]:<br>";

    print_r($X); */

 return $X;

 }   

 function showResults( $N, $X )

 {  

?>

<CENTER>

<a href="/logic1.php">В начало</a><BR>

<BR>

Решения

<?php       

               for ($j=0; $j < $N; $j++ ) {             

?>

<BR><B><I>x<SUB><?php echo $j;?></SUB></I> = <?php printf("%.2f", $X[$j]);?></B>

<?php                                  

               }                         

?>        

</CENTER>     

<?php    

 }

 function showError( $msg )

 {

     echo "<CENTER> <span style=\"color: red\">Error: ";

     echo $msg;

     echo "</span></CENTER><br>";

 }

?>

Результат работы программы

Рис. 1 – Ввод числа уравнений системы

Рис. 2 – Ввод значений коэффициентов и правых частей

Рис. 3 – Решение системы

Корректность работы программы проверена при помощи системы Octave.

Другие работы

Начальные этапы развития полиграфии Первая т...


Начальные этапы развития полиграфии Первая технология печати а следовательно и полиграфия зародилась еще в древнем Китае в конце 2 века. Предмето...

Подробнее ...

Контрольная работа состоит из трех частей ~ 1...


Тематика практических работ Задание: Создать презентацию по основным вопросам темы дисциплины Информатика. Темы для создания презентации: Тема 1...

Подробнее ...

Тема- Гликогенозы и агликогенозы.


Гликогеноз II типа проявляется поражением многих органов и систем генерализованная форма или только мышц. нескольких типов например I и III типа...

Подробнее ...

Вариант 4 Вопрос 1- Философские концепции утв...


плюрализм монизм деизм дуализм пантеизм гилозоизм Вопрос 2: Представление о Боге как о мировом разуме сотворившем природу но не вмешивающемся в ...

Подробнее ...