Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
“Московский государственный технический университет
имени Н.Э. Баумана”
(МГТУ им. Н.Э.Баумана)
Факультет «Робототехника и комплексная автоматизация» (РК)
Кафедра «Системы автоматизированного проектирования» (РК-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.