p align="center">3.4 Блок-схема алгоритма
3.5Текст программы Файл исходных данных Пункт #1(Хутор) Направление({Градусы}пробел{Минуты}пробел{Секунды}): 0 0 0 Координата X: 11327.11 Координата Y: 9315.82 Пункт #2(Крутик) Направление({Градусы}пробел{Минуты}пробел{Секунды}): 75 46 14 Координата X: 11588.28 Координата Y: 11619.02 Пункт #3(Юрьево) Направление({Градусы}пробел{Минуты}пробел{Секунды}): 168 7 51 Координата X: 8901.34 Координата Y: 11230.33 Пункт #4(Локно) Направление({Градусы}пробел{Минуты}пробел{Секунды}): 278 52 25 Координата X: 9054.58 Координата Y: 7892.42 Program Zadacha3; Uses CRT; Var g1,m1,s1,g2,m2,s2,g3,m3,s3,g4,m4,s4:integer; {описание используемых переменных} x1,y1,x2,y2,x3,y3,x4,y4,vm1,vn1,vm2,vn2:real; ra1,ra2,ra3,ra4,yg21,yg32,yg43,ct21,ct32,ct43:real; Fi1,Fi2,Fi3,Fi4,De1,De2,De3,De4:real; kipX1,kipX2,CredX,kipY1,kipY2,CredY:real; t1,t2:text; Begin ClrScr; {очистка экрана} Assign (t1,'data.txt'); {связывание переменной с именем файла} Assign (t2,'result.txt'); {связывание переменной с именем файла} Reset (t1); {обозначения файла для чтения} Rewrite (t2); {обозначения файла для записи} {чтение из фаила исходных значений} Readln(t1); Readln(t1); Readln(t1,g1,m1,s1); Readln(t1); Readln(t1,x1); Readln(t1); Readln(t1,y1); Readln(t1); Readln(t1); Readln(t1,g2,m2,s2); Readln(t1); Readln(t1,x2); Readln(t1); Readln(t1,y2); Readln(t1); Readln(t1); Readln(t1,g3,m3,s3); Readln(t1); Readln(t1,x3); Readln(t1); Readln(t1,y3); Readln(t1); Readln(t1); Readln(t1,g4,m4,s4); Readln(t1); Readln(t1,x4); Readln(t1); Readln(t1,y4); Begin {Данные в радианах} ra1:=((Pi)/180)*(g1+(m1/60)+(s1/3600)); ra2:=((Pi)/180)*(g2+(m2/60)+(s2/3600)); ra3:=((Pi)/180)*(g3+(m3/60)+(s3/3600)); ra4:=((Pi)/180)*(g4+(m4/60)+(s4/3600)); End; Writeln(t2); Writeln(t2); Writeln(t2); Writeln(t2,'Reshenie:'); Writeln(t2); Writeln('Reshenie:'); Writeln(t2,'Napravlenie 1 v radianah:',ra1:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'Napravlenie 2 v radianah:',ra2:6:2,';'); Writeln(t2,'Napravlenie 3 v radianah:',ra3:6:2,';'); Writeln(t2,'Napravlenie 4 v radianah:',ra4:6:2,' .'); Writeln('Napravlenie 1 v radianah:',ra1:6:2,';'); Writeln('Napravlenie 2 v radianah:',ra2:6:2,';'); Writeln('Napravlenie 3 v radianah:',ra3:6:2,';'); Writeln('Napravlenie 4 v radianah:',ra4:6:2,' .'); Begin {Углы} yg21:=ra2-ra1; yg32:=ra3-ra2; yg43:=ra4-ra3; End; Writeln(t2); Writeln(t2,'ugol 2-1 (v radianah)=',yg21:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'ugol 3-2 (v radianah)=',yg32:6:2,';'); Writeln(t2,'ugol 4-3 (v radianah)=',yg43:6:2,' .'); Writeln; Writeln('ugol 2-1 (v radianah)=',yg21:6:2,';'); Writeln('ugol 3-2 (v radianah)=',yg32:6:2,';'); Writeln('ugol 4-3 (v radianah)=',yg43:6:2,' .'); Begin {Котангенсы углов} ct21:=(cos(yg21)/sin(yg21)); ct32:=(cos(yg32)/sin(yg32)); ct43:=(cos(yg43)/sin(yg43)); End; Writeln(t2); Writeln(t2,'kotangens ugla 2-1 =',ct21:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'kotangens ugla 3-2 =',ct32:6:2,';'); Writeln(t2,'kotangens ugla 4-3 =',ct43:6:2,' .'); Writeln; Writeln('kotangens ugla 2-1 =',ct21:6:2,';'); Writeln('kotangens ugla 3-2 =',ct32:6:2,';'); Writeln('kotangens ugla 4-3 =',ct43:6:2,' .'); Begin {Вспомогательные величины} vm1:=y1*ct21+y2*(-(ct21)-(ct32))+y3*ct32+x1-x3; vm2:=y2*ct32+y3*(-(ct32)-(ct43))+y4*ct43+x2-x4; vn1:=x1*ct21+x2*(-(ct21)-(ct32))+x3*ct32-y1+y3; vn2:=x2*ct32+x3*(-(ct32)-(ct43))+x4*ct43-y2+y4; End; Writeln(t2); Writeln(t2,'Vspomogatelnayaя velichina m1 = ',vm1:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'Vspomogatelnayaя velichina n1 = ',vn1:6:2,';'); Writeln(t2,'Vspomogatelnayaя velichina m2 = ',vm2:6:2,';'); Writeln(t2,'Vspomogatelnayaя velichina n2 = ',vn2:6:2,' .'); Writeln; Writeln('Vspomogatelnayaя velichina m1 = ',vm1:6:2,';'); Writeln('Vspomogatelnayaя velichina n1 = ',vn1:6:2,';'); Writeln('Vspomogatelnayaя velichina m2 = ',vm2:6:2,';'); Writeln('Vspomogatelnayaя velichina n2 = ',vn2:6:2,' .'); Begin Fi1:=arctan(vm1/vn1); Fi2:=(sin(Fi1)/cos(Fi1)); Fi3:=arctan(vm2/vn2); Fi4:=(sin(Fi3)/cos(Fi3)); De1:=Fi1-yg21; De2:=(sin(De1)/cos(De1)); De3:=Fi3-yg32; De4:=(sin(De3)/cos(De3)); End; Writeln(t2); Writeln(t2,'Фи 1 = ',Fi1:6:2,'; Делта 1 = ',De1:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'Фи 2 = ',Fi2:6:2,'; Делта 2 = ',De2:6:2,';'); Writeln(t2,'Фи 3 = ',Fi3:6:2,'; Делта 3 = ',De3:6:2,';'); Writeln(t2,'Фи 4 = ',Fi4:6:2,'; Делта 4 = ',De4:6:2,' .'); Writeln; Writeln('Фи 1 = ',Fi1:6:2,'; Делта 1 = ',De1:6:2,';'); Writeln('Фи 2 = ',Fi2:6:2,'; Делта 2 = ',De2:6:2,';'); Writeln('Фи 3 = ',Fi3:6:2,'; Делта 3 = ',De3:6:2,';'); Writeln('Фи 4 = ',Fi4:6:2,'; Делта 4 = ',De4:6:2,' .'); Begin {Координаты искомого пункта} kipX1:=(x1*De2-x2*Fi2+y2-y1)/(De2-Fi2); kipX2:=(x2*De4-x3*Fi4+y3-y2)/(De4-Fi4); {Среднее для X} CredX:=(kipX1+kipX2)/2; kipY1:=(kipX1-x2)*Fi2+y2; kipY2:=(kipX2-x3)*Fi4+y3; {Среднее для Y} CredY:=(kipY1+kipY2)/2; End; Writeln(t2); Writeln(t2,'Координата X искомого пункта 1: ',kipX1:6:2,';'); {вывод значений на экран и в файл} Writeln(t2,'Координата X искомого пункта 2: ',kipX2:6:2,';'); Writeln(t2,' Среднее значение X: ',CredX:6:2,';'); Writeln(t2,'Координата Y искомого пункта 1: ',kipY1:6:2,';'); Writeln(t2,'Координата Y искомого пункта 2: ',kipY2:6:2,';'); Writeln(t2,' Среднее значение Y: ',CredY:6:2,' .'); Writeln; Writeln('Координата X искомого пункта 1: ',kipX1:6:2,';'); Writeln('Координата X искомого пункта 2: ',kipX2:6:2,';'); Writeln(' Среднее значение X: ',CredX:6:2,';'); Writeln('Координата Y искомого пункта 1: ',kipY1:6:2,';'); Writeln('Координата Y искомого пункта 2: ',kipY2:6:2,';'); Writeln(' Среднее значение Y: ',CredY:6:2,' .'); Writeln;Writeln;Writeln; writeln(t2);writeln(t2);writeln(t2); writeln('All rights are reserved'); {добавление личной подписи} writeln('Made by MOISEEV ANDREI GG-09-2'); writeln(t2,'All rights are reserved'); writeln(t2,'Made by MOISEEV ANDREI GG-09-2'); Close (t1); Close (t2); Readkey; End.
3.6 Результаты работы программы
Рис.3.3 Результат работы программы Reshenie: Napravlenie 1 v radianah: 0.00; Napravlenie 2 v radianah: 1.32; Napravlenie 3 v radianah: 2.93; Napravlenie 4 v radianah: 4.87 . ugol 2-1 (v radianah)= 1.32; ugol 3-2 (v radianah)= 1.61; ugol 4-3 (v radianah)= 1.93 . kotangens ugla 2-1 = 0.25; kotangens ugla 3-2 = -0.04; kotangens ugla 4-3 = -0.38 . Vspomogatelnayaя velichina m1 = 1857.73; Vspomogatelnayaя velichina n1 = 1959.03; Vspomogatelnayaя velichina m2 = 3781.82; Vspomogatelnayaя velichina n2 = -3895.39 . Фи 1 = 0.76; Делта 1 = -0.56; Фи 2 = 0.95; Делта 2 = -0.63; Фи 3 = -0.77; Делта 3 = -2.38; Фи 4 = -0.97; Делта 4 = 0.95 . Координата X искомого пункта 1: 10026.34; Координата X искомого пункта 2: 10026.69; Среднее значение X: 10026.51; Координата Y искомого пункта 1: 10137.84; Координата Y искомого пункта 2: 10137.79; Среднее значение Y: 10137.82 . All rights are reserved Made by MOISEEV ANDREI GG-09-2 3.7 Проверка в MS Excel Рис. 3.4 Проверка в MS Excel Рис. 3.5 Лист Excel в режиме отображения формул Рис. 3.6 Лист Excel в режиме отображения формул Рис. 3.7 Проведение промежуточных расчетов
3.8 Проверка в MathCad Рис.3.8 Проверка в MathCad 3.9 Анализ результатов Сравнивая результаты работы программы с проверкой в табличном редакторе Excel и математическом пакете MathCad, можно удостовериться в правильности работы программы и выборе алгоритма ее работы. 4. Решение СЛАУ методом Гаусса 4.1 Теоретические сведения Рассмотрим один из наиболее известных и широко применяемых прямых методов решения систем линейных уравнений. Обычно этот метод называют методом исключения или методом Гаусса. Чтобы проиллюстрировать этот метод, рассмотрим сначала систему из трех уравнений с тремя неизвестными: (4.1) В такой системе по крайней мере один из коэффициентов ,,должен быть отличен от нуля, иначе бы мы имели бы дело в этих трех уравнениях только с двумя неизвестными. Если , то можно переставить уравнения так, чтобы коэффициент при в первом уравнении был отличен от нуля. Очевидно, что перестановка уравнений оставляет систему неизменной: ее решение остается прежним. Теперь введем множитель . Умножим первое уравнение системы (4.1) на и вычтем его из второго уравнения системы. («Первое» и «второе» уравнения берем уже после перестановки, если она была необходима). Результат вычитания равен: Так как , фактически исключается из второго уравнения (именно для достижения такого результата и было выбрано значение ). Определим теперь новые коэффициенты Тогда второе уравнение системы приобретает вид (4.2) Заменим второе из первоначальных уравнений уравнением (4.2) и введем множитель для третьего уравнения . Умножим первое уравнение на этот множитель и вычтем его из третьего. Коэффициент при снова становится нулевым, и третье уравнение приобретает вид (4.3) где . Если теперь в исходной системе уравнений (4.1) заменить третье уравнение на (4.3), то новая система выглядит так: (4.4) Эти новые уравнения полностью эквивалентны исходным уравнениям с тем преимуществом, что входит только в первое уравнение и не входит ни во второе, ни в третье. Таким образом, два последних уравнения представляют собой систему из двух уравнений с двумя неизвестными; если теперь найти решение этой системы, т.е. определить и , то результат можно подставить в первое уравнение и найти . Иначе говоря, задача сведена к решению системы из двух уравнений с двумя неизвестными. Попытаемся теперь исключить из двух последних уравнений. Если, то снова мы переставим уравнения так, чтобы было отлично от нуля (если и , то система вырождена и либо вовсе не имеет решения, либо имеет бесчисленное множество решений). Введем новый множитель . Умножим второе уравнение полученной системы (4.4) на и вычтем его из третьего. Результат вычитания равен В силу выбора . Полагая, что окончательно получим (4.5) Третье уравнение полученной системы (4.4) можно заменить уравнением (4.5), после чего система уравнений приобретает следующий вид: (4.6) Такая система уравнений (4.6) иногда называется треугольной из-за своего внешнего вида. Для решения необходимо определить из третьего уравнения системы (4.6), подставить этот результат во второе уравнение и определить. Полученные значения и подставить в первое уравнение и определить. Этот процесс, который обычно называется обратной подстановкой (обратный ход), определяется формулами: (4.7) . Необходимо отметить, если , то система уравнений вырождена. Теперь можно обобщить этот метод на случай системы из n - уравнений с n-неизвестными. Ниже записана система уравнений, приведенная к треугольному виду (4.8). (4.8) Формулы для вычисления неизвестных (обратный ход) будут иметь вид: (4.9) 4.2 Постановка задачи Решение системы линейных алгебраических уравнений методом Гаусса.
4.3 Исходные данные 4.4 Блок-схема алгоритма Блок-схема процедуры «Gaus»: Рис. 4.2 Блок-схема процедуры «Gaus» 4.5 Текст программы Файл исходных данных 1 -1 1 -3 2 18 0 5 1 5 2 6 0 1 1 2 15 83 18 8 Program Zadacha6; Uses CRT; Type matrix=array [1..10,1..10] of real; vector=array [1..10] of real; Var i,j:integer; a:matrix; x,b:vector; t1,t:text; Procedure Gaus (Var a:matrix; Var b:vector; x:vector); Var k,i,j,q:integer; d:real; t:text; Begin For i:=1 to 4 do a[i,5]:=B[i]; Assign(t,'reshenie.txt'); Rewrite(t); Writeln('Reshenie sistemy lineinygh algebraicheskigh uravneniy'); Writeln('(kolichestvo uravneniy 4)'); Writeln('Sistema uravneniy:'); Writeln(t,'Reshenie sistemy lineinygh algebraicheskigh uravneniy'); Writeln(t,'(kolichestvo uravneniy 4)'); Writeln(t,'Sistema uravneniy:'); For i:=1 to 4 do Begin For j:=1 to 4 do Write(t,a[i,j]:6:1,'x[',j,'] '); Writeln(t,b[i]:6:1); End; For i:=1 to 4 do Begin For j:=1 to 4 do Write(a[i,j]:6:1,'x[',j,'] '); Writeln(b[i]:6:1); End; For i:=1 to 4 do Begin d:=a[i,i];{Поиск максимума в столбце} q:=i; For j:=i to 4 do If abs(a[j,i])>abs(d) then Begin D:=a[j,i]; q:=j; End; {Обмен строк} If i<>q Then Begin For j:=i to 5 do Begin D:=a[i,j]; a[i,j]:=a[q,j]; a[q,j]:=d; End; End; {Создание строки} For j:=5 downto i do a[i,j]:=a[i,j]/a[i,i]; {зануление столбцов, вычисление А} For k:=i+1 to 4 do For j:=5 downto i do a[k,j]:=a[k,j]-a[i,j]*a[k,i]; End;{Обратный ход} x[4]:=a[4,5]; For i:=4-1 downto 1 do begin D:=0; For j:=4 downto i+1 do d:=d+a[i,j]*x[j]; x[i]:=a[i,5]-d; end; Writeln(t,'Vector X:'); Writeln('Vector X:'); For i:=1 to 4 do Write(t, x[i]:5:3,' '); Writeln(t); close(t); Begin For i:=1 to 4 do Write(x[i]:5:3,' '); Writeln; End; End; Begin Clrscr; assign(t1,'clay.txt'); reset(t1); For i:=1 to 4 do For j:=1 to 4 do Read(t1,a[i,j]); For i:=1 to 4 do read(t1,b[i]); Gaus(a,b,x); Readkey; End.
4.6 Результаты работы программы
Рис.4.3 Результат работы программы Reshenie sistemy lineinygh algebraicheskigh uravneniy (kolichestvo uravneniy 4) Sistema uravneniy: 1.0x[1] -1.0x[2] 1.0x[3] -3.0x[4] 15.0 2.0x[1] 18.0x[2] 0.0x[3] 5.0x[4] 83.0 1.0x[1] 5.0x[2] 2.0x[3] 6.0x[4] 18.0 0.0x[1] 1.0x[2] 1.0x[3] 2.0x[4] 8.0 Вектор Х: -7.671 7.063 12.456 -5.759 4.7 Проверка в MS Excel Рис.4.4 Проверка в MS Excel Рис.4.5 Лист Excel в режиме отображения формул
4.8 Проверка в MathCad Рис.4.6 Проверка методом Гаусса Рис.4.7 Проверка методом Крамера Рис.4.8 Проверка методом приведения матрицы к треугольному виду Рис.4.9 Проверка с использованием обратной матрицы 4.9 Анализ результатов На рис. 4.5 - 4.10 Выполнена проверка решения системы линейных алгебраических уравнений разными методами. Сравнивая полученные результаты с результатами работы программы и ее проверки в табличном редакторе MS Excel, можно сделать вывод о правильности работы программы и правильности выбора алгоритма решения поставленной задачи. Заключение В ходе выполнения курсовой работы было выполнено четыре задания: три типовые геодезические задачи («Обратная геодезическая задача», «Прямая угловая засечка», «Обратная геодезическая засечка»), и одна математическая задача «Решение системы линейных алгебраических уравнений методом Гаусса». Поставленные задачи решались с помощью языка программирования Turbo Pascal с последующей проверкой в математическом пакете MathCad 14.0 и табличном процессоре MS Excel 2007. Судя по полученным результатам и их проверки можно удостовериться в правильности работы предложенных программ. Библиографический список 1. Информатика: Программа и методические указания по выполнению курсовой работы для студентов специальности "Маркшейдерское дело" дневной формы обучения / Санкт-Петербургский горный ин-т. Сост.: А.П. Кондрашов, Т.Р. Косовцева, В.В. Петров, - СПб, 2004 . 51 с. 2. Информатика. Учебник. Под редакцией Н.В. Макаровой. М., 2001. 3. Правила оформления курсовых и квалификационных работ / Санкт-Петербургский горный ин-т. Сост. И.О. Онушкина, П.Г. Талалай, - СПб, 2004, 50 стр. 4. Информатика. Работа в пакете MathCad. / СПГГИ(ТУ), Сост. О.Г. Быкова, СПб, 2005, 46 стр. 5. Ян Белицкий Turbo Pascal с графикой для персональных компьютеров. М.:1991г.
Страницы: 1, 2, 3, 4
|