Решение геодезических задач с помощью языка программирования Turbo Pascal и табличного процессора Excel

Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.03.2013
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Федеральное агентство образования и науки Российской Федерации

Санкт-Петербургский государственный горный институт им. Г.В. Плеханова

(технический университет)

КУРСОВАЯ РАБОТА

По дисциплине: Информатика

Тема: Решение геодезических задач с помощью языка программирования Turbo Pascal и табличного процессора Excel

Автор: студент гр. ГГ-04-1

Трущелёв А.В.

Проверил:

Руководитель проекта, доцент

Косовцева Т.Р.

Санкт-Петербург 2005

Аннотация

Пояснительная записка представляет собой отчёт по курсовой работе на тему: решение геодезических задач с помощью языка программирования Turbo Pascal и табличного процессора Excel. Отчёт оформлен в текстовом процессоре Microsoft Word.

Страниц 48, рисунков 13.

The summary

The explanatory note represents the report on course work on a theme: the decision of geodesic problems with the help of programming language Turbo Pascal and tabulated processor Excel. The report is made out in word-processor Microsoft Word.

Pages 48, figures 13.

Оглавление

Введение

1. «Обратная геодезическая задача»

1.1 Теоретические сведения

1.2 Постановка задачи

1.3 Исходные данные

1.4 Блок схема для Turbo Pascal

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

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

1.8 Анализ

2. «Прямая угловая засечка»

2.1 Теоретические сведения

2.2 Постановка задачи

2.3 Исходные данные

2.4 Блок схема для Turbo Pascal

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

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

2.7 Вычисления MS Excel

2.8 Анализ

3. «Теодолитный ход»

3.1 Теоретические сведения

3.2 Постановка задачи

3.3 Исходные данные

3.4 Алгоритм для Turbo Pascal

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

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

3.7 Анализ

4. «Решение СЛАУ методом Гаусса»

4.1 Теоретические сведения

4.2 Постановка задачи

4.3 Исходные данные

4.4 Блок-схема для Turbo Pascal

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

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

4.7 Табличные вычисления MS Excel

4.8 Анализ

Заключение

Библиографический список

Введение

Задание:

Составить программы с помощью языка программирования Turbo Pascal для решения геодезических задач: решение обратной геодезической задачи, нахождение прямой угловой засечки, вычисление координат теодолитного хода, решение системы линейных уравнений методом Гаусса.

В настоящее время компьютерные технологии на основе программирования внедряются в различные сферы деятельности человека. Исключением не является и маркшейдерское дело. Основной задачей маркшейдерского дела является составление планов горных выработок. Для их создания маркшейдерам необходимо получать координаты точек опорной сети. Процесс обработки материалов (камеральные работы) становится более быстрым и менее трудоемким с внедрением программ для решения геодезических задач. С помощью языка программирования Turbo Pascal можно составить программы для решения почти всех маркшейдерских задач.

В данной курсовой работе основной целью является закрепление полученного опыта работы с системой Turbo Pascal с помощью создания программ для камеральных работ. Проверка программ проводится в табличном процессоре MS Excel.

1. «Обратная геодезическая задача»

1.1 Теоретические сведения

Обратная геодезическая задача заключается в вычислении дирекционного угла a ?и расстояния R = | AB | по заданным на плоскости декартовым координатам x, y двух точек А и В. Дирекционный угол, в конечном итоге, должен быть представлен в градусной мере, как это принято в геодезии. Расстояние между точками определяется через найденный дирекционный угол.

Рис. 1.1

Пусть даны две точки А и В (рис.1.1), координаты которых соответственно

Согласно схеме, показанной на рис. 1.1., приращения координат определяются:

(1.1)

Затем находят величину румба.

(1.2)

Далее по знакам приращения координат находят название четверти, что, в свою очередь, позволяет определить значение дирекционного угла (см. табл. 1.1).

Табл. 1.1

Знаки приращения координат

Название четверти

Формула дирекционного угла

+

+

I

a--=--r

-

+

II

a--=--p???r

-

-

III

a--=----p--+--r

+

-

IV

a--=--2p-----r

Горизонтальное расстояние между точками может быть определено по формуле:

(1.3)

или по формуле:

(1.4)

Перевод вычисленного дирекционного угла в градусную меру может быть выполнен различными способами. Один из возможных способов следующий:

Переводим величину a--???в градусную меру

;

Выделяем целую часть ;

Вычисляем остаток и переводим его в минуты

;

Вычисляем целое число минут

;

Определяем остаток минут, переводим в секунды и округляем до целого

.

Значение дирекционного угла в градусах, минутах и секундах дают, соответственно, значения переменных ag,--am,--as.

1.2 Постановка задачи

Даны координаты 2-х точек A(х,y) и B(x,y). Определить дирекционный угол прямой AB

1.3 Исходные данные

А) X1=5119.94 Y1=6157.33

X2=7182.27 Y2=4976.39

В) Х1=10932.84 Y1=6112.26

X2=9115.24 Y2=4903.68

1.4 Блок схема для Turbo Pascal

Рис. 1.2

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

program obrgeodzad;

var

x1,x2,y1,y2,dir0,l,d,m,s,temp,r:real;

procedure RadToDeg(var d,m,s,temp:real);

begin

temp:=(temp*180)/pi;

d:=int(temp);

m:=int((temp-d)*60);

s:=round((((temp-d)*60)-m)*60);

end;

begin

writeln('Vvedite koordinaty to4ek');

write('x1=');

readln(x1);

write('y1=');

readln(y1);

write('x2=');

readln(x2);

write('y2=');

readln(y2);

r:=arctan(abs((y2-y1)/(x2-x1)));

if ((y2-y1)>0)and((x2-x1)>0) then dir0:=r;

if ((y2-y1)>0)and((x2-x1)<0) then dir0:=pi-r;

if ((y2-y1)<0)and((x2-x1)<0) then dir0:=pi+r;

if ((y2-y1)<0)and((x2-x1)>0) then dir0:=2*pi-r;

RadToDeg(d,m,s,dir0);

writeln(d:3:0,m:3:0,'`',s:3:0,'"');

l:=sqrt(sqr(x2-x1)+sqr(y2-y1));

writeln('S= ',l:0:2);

readln;

end.

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

A:

Vvedite koordinaty to4ek

x1=5119.94

y1=6157.33

x2=7182.27

y2=4976.39

330 12` 13"

S= 2376.52

B:

Vvedite koordinaty to4ek

x1=10932.84

y1=6112.26

x2=9115.24

y2=4903.68

213 37` 16"

S= 2182.74

1.7 Вычисления MS Excel

Рис. 1.3.a Excel - вычисления

Рис. 1.3.б Excel - вычисления

Рис. 1.4 Excel с открытыми формулами

1.8 Анализ

Обратная геодезическая задача была решена с помощью языка программирования Turbo Pascal и с помощью табличного процессора Excel. Ответы сошлись.

2. «Прямая угловая засечка»

2.1 Теоретические сведения

Прямая угловая (геодезическая) засечка - такое название носит способ определения координат точки местности Р, если на плоскости дана система точек геодезической сети с известными координатами и на этих точках измерены горизонтальные углы (рис.2.1.). Величины углов в геодезии принято задавать в градусной мере.

Рис. 2.1. Схемы прямой геодезической засечки.

Большое значение имеет величина угла при вершине треугольника - угла засечки g, от которого во многом зависит точность определения координат. В инструкциях по проведению геодезической съемки указывается, что угол засечки не должен быть меньше 30о и больше 150о.

Для определения координат точки Р можно использовать формулы Юнга или формулы Гаусса. Чаще используются формулы Юнга, которые еще называют формулами котангенсов внутренних углов треугольника.

(2.1)

(2.2)

Широко используются и формулы Гаусса. В этом случае исходными данными являются не только координаты пунктов А1 и А2 и измеренные горизонтальные углы b1,--b2, но и вычисленный дирекционный угол a? стороны А1 А2.

(2.3)

(2.4)

Если пунктов геодезической сети более двух (рис.2.1 б), то исходные данные являются избыточными, т.к. для определения искомых координат точки Р достаточно знать координаты и углы двух точек одного треугольника. Однако решение прямой засечки только из одного треугольника является бесконтрольным. Достаточно, например, выписать из каталога координату исходной точки с ошибкой, как результат окажется совершенно неверным. По этой причине инструкции по выполнению геодезических работ требуют, чтобы координаты точки Р определялись как минимум из двух треугольников (или был организован какой-либо другой контроль)

Избыточность исходных данных позволяет повысить надежность определения окончательных значений искомых величин за счет применения правила арифметического среднего.

(2.5)

, (2.6)

где XP k, YP k координаты, определенные из k-того треугольника.

2.2 Постановка задачи

Определить координаты точки P по трем точкам с известными координатами и 4 углам. (2 треугольникам)

2.3 Исходные данные

Вариант 9

№ п/п

X, м

Y, м

B1, DDD MM SS

B2, DDD MM SS

1

5935.51

5441.24

98 4 30

2

5687.41

5172.76

63 0 12

41 54 46

3

5142.93

5460.08

54 19 48

2.4 Блок схема для Turbo Pascal

Рис. 2.2.

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

Program Zadacha2;

Var x,y,x1,x2,x3,y1,y2,y3,b11g,b11m,b11s,b12g,b12m,b12s, b21g,b21m, b21s,b22g,

b22m,b22s,b1,b2,b3,b4,xp1,xp2,yp1,yp2,rad:real;

Procedure Gradus_radian(var g,m,s,rad:real);

begin

rad:=(g+(m/60)+(s/3600))*Pi/180;

end;

Procedure x_y(var x1,x2,y1,y2,b1,b2,x,y:real);

begin

x:=(x1*cos(b2)/sin(b2)+x2*cos(b1)/sin(b1)-y1+y2)/(cos(b1)/sin(b1)+cos(b2)/

sin(b2));

y:=(y1*cos(b2)/sin(b2)+y2*cos(b1)/sin(b1)-x2+x1)/(cos(b1)/sin(b1)+cos(b2)/

sin(b2));

end;

Begin

Writeln('**Koordinati tochek**');

Writeln('Vvedite x1,y1');

Readln(x1,y1);

Writeln('Vvedite x2,y2');

Readln(x2,y2);

Writeln('Vvedite x3,y3');

Readln(x3,y3);

Writeln('**Izmerennie ugli pervogo treugolnika**');

Writeln('Pervij ugol');

Writeln('G');

Readln(b11g);

Writeln('M');

Readln(b11m);

Writeln('S');

Readln(b11s);

Writeln('Vtoroj ugol');

Writeln('G');

Readln(b12g);

Writeln('M');

Readln(b12m);

Writeln('S');

Readln(b12s);

Writeln('**Izmerennie ugli vtorogo treugolnika**');

Writeln('Pervij ugol');

Writeln('G');

Readln(b21g);

Writeln('M');

Readln(b21m);

Writeln('S');

Readln(b21s);

Writeln('Vtoroj ugol');

Writeln('G');

Readln(b22g);

Writeln('M');

Readln(b22m);

Writeln('S');

Readln(b22s);

Gradus_radian(b11g,b11m,b11s,b1);

Gradus_radian(b12g,b12m,b12s,b2);

x_y(x1,x2,y1,y2,b1,b2,xp1,yp1);

Gradus_radian(b21g,b21m,b21s,b3);

Gradus_radian(b22g,b22m,b22s,b4);

x_y(x2,x3,y2,y3,b3,b4,xp2,yp2);

Writeln('**Koordinati tochki P**');

x:=(xp1+xp2)/2;

y:=(yp1+yp2)/2;

Writeln('x=',x:4:3);

Writeln('y=',y:4:3);

End.

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

**Koordinati tochek**

Vvedite x1,y1

5935.51

5441.24

Vvedite x2,y2

5687.41

5172.76

Vvedite x3,y3

5142.93

5460.08

**Izmerennie ugli pervogo treugolnika**

Pervij ugol

G

98

M

4

S

30

Vtoroj ugol

G

63

M

0

S

12

**Izmerennie ugli vtorogo treugolnika**

Pervij ugol

G

41

M

54

S

46

Vtoroj ugol

G

54

M

19

S

48

**Koordinati tochki P**

x=5406.999

y=5932.281

2.7 Вычисления MS Excel

Рис. 2.3. Excel - вычисления

Рис. 2.4. Excel с открытыми формулами

2.8 Анализ

Задача №2 (прямая угловая засечка) была решена с помощью языка программирования Turbo Pascal и с помощью табличного процессора Excel. Ответы 2-х разных решений сошлись.

3. «Теодолитный ход»

3.1 Теоретические сведения

Теодолитная съемка относится к числу крупномасштабных и выполняется с целью составления горизонтального плана равнинной местности, когда рельеф на плане не отображается, или для составления кадастрового плана. Применяется при картировании сравнительно небольших застроенных участков. Съемку выполняют с точек геодезической сети, расположенных на участке, и точек съемочного обоснования, координаты которых определяют путем проложения теодолитных ходов.

Теодолитный ход это полигон, представляющий собой систему ломаных линий, в котором горизонтальные расстояния между всеми его смежными вершинами измеряются стальными мерными лентами и рулетками, либо оптическими дальномерами, а горизонтальные углы между смежными сторонами - техническими теодолитами

В зависимости от конструкции полигона, различают разомкнутый теодолитный ход, начало и конец которого опираются на пункты геодезического обоснования (рис.3.1 а), замкнутый теодолитный ход (замкнутый многоугольник), примыкающий к пункту геодезического обоснования (рис.3.1 б) и висячий (рис.3.1 в).

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

а) б) в)

Рис.3.1. Схемы теодолитных ходов.

На рис. 3.1 точки опорной геодезической сети показаны квадратиками, а точки, координаты которых требуется определить - черными кружочками. Отрезок между опорными точками называется исходной (примычной) стороной, а угол между ней и стороной теодолитного хода - примычным углом. На рисунке исходные стороны показаны двойными линиями.

При создании съемочного обоснования теодолитной съемки, как правило, используются разомкнутые ходы, начинающиеся и заканчивающиеся на разных опорных точках. Замкнутые и, особенно, висячие ходы считаются ненадежными, так как остаются незамеченными ошибки исходных данных и не контролируются систематические ошибки линейных измерений.

Разомкнутый теодолитный ход.

Создание съемочного обоснования заключается в закреплении на местности новых точек и определении их координат. Если эти координаты определяются путем проложения теодолитного хода, то работы состоят из нескольких последовательных этапов. В данной курсовой работе будем рассматривать только последний этап - вычисление координат искомых точек.

На рис. 3.2 схематично представлен разомкнутый теодолитный ход. Заданы координаты опорных точек баз AB и CD, длины сторон теодолитного хода и углы при вершинах . Особо подчеркнем, что все углы должны быть правыми.

Размещено на http://www.allbest.ru/

Рис.3.2 Схема разомкнутого теодолитного хода.

Когда определяются прямоугольные координаты некоторой точки по известным координатам другой, горизонтальному расстоянию и дирекционному углу, задачу называют прямой. В нашем случае, для решения прямой задачи необходимо вначале вычислить дирекционные углы a1--...--an. Порядок вычисления дирекционного угла был описан выше.

Из курса геодезии известно (и как следует из рис. 3.2), что разность примычных углов должна быть равна разности дирекционных углов примычных сторон. Однако, в силу ошибок измерения, это равенство практически никогда не выполняется.

Разность между теоретическими положениями и результатами измерений называется невязкой. В случае, когда она меньше допуска, в измеренные величины вводят поправки таким образом, чтобы свести невязку к нулю. Сумма поправок равна невязке по абсолютной величине и противоположна по знаку.

Формула для вычисления угловой невязки для левых по ходу углов записывается следующим образом:

, (3.1)

где aн - дирекционный угол базы AB, ak - дирекционный угол базы CD. Углы при вершинах теодолитного хода представлены в радианах.

Для правых по ходу углов дирекционные углы в формуле меняются местами.

(3.2)

Угловую невязку сравнивают с допустимой f доп, определяют по формуле:

[рад.] (3.3)

Если угловая невязка в пределах допуска, то ее распределяют поровну во все измеренные углы. По исправленным углам вычисляют дирекционные углы сторон теодолитного хода. Для этого можно воспользоваться следующим соотношением:

(3.4)

где - дирекционный угол последующей стороны хода, - дирекционный угол предыдущей стороны, - левый по ходу угол между этими сторонами. Если углы по ходу правые, то угол вычитается.

Далее вычисляются приращения координат:

(3.5)

Приращения координат суммируются и вычисляются абсолютные линейные невязки по соответствующим осям f x и f y.

(3.6)

XH,YH и Xk, Yk - координаты начальной и конечной точек хода.

Общая абсолютная невязка и общая относительная невязка теодолитного хода, соответственно:

(3.7)

Величина допустимой относительной невязки определяется в соответствии с инструкцией по топографической съемке [5]. Если допуски выполняются, абсолютные невязки по осям распределяют пропорционально длинам сторон теодолитного хода и далее определяют искомые координаты новых точек по следующим формулам:

(3.8)

Подтверждением правильности вычисления является совпадение координат вычисленного значения опорной точки в конце теодолитного хода и заданного в исходных данных.

3.2 Постановка задачи

Теодолитный ход. По заданным координатам 4х точек опорной геодезической сети, длинам сторон теодолитного хода и измеренным углам, определить координаты точек теодолитного хода.

3.3 Исходные данные

Вариант 9

3.4 Алгоритм для Turbo Pascal

геодезический уравнение засечка теодолитный

1) Ввод координат известных точек (х1, х2, х3, х4, у1, у2, у3, у4.), длин сторон и измеренных горизонтальных углов(вручную или из файла)

2) Вычисление дирекционных углов (процедура CoordToDirCorner)

3) Перевод измеренных горизонтальных углов в радианы(Grad_to_rad)

4) Вычисление углов хода и невязки хода

5) Вычисление дирекционных углов

6) Вычисление приращения координат

7) Вычисление абсолютной линейной невязки и ее распределение

8) Вывод х и у точек теодолитного хода

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

program teodxod;

var

sumx,sumy,fabs,fotn,sl,sx,sy,fx,fy,x1,x2,x3,x4,y1,y2,y3,y4,s1,s2,s3,s4,s5,AB,CD,dd,mm,ss,rad,fb :real;

i,j:integer;

name:string;

dir:array[1..6,1..3] of real;

corners:array[1..7]of real;

points:array[0..5,1..2] of real;

s:array[1..5]of real;

f:text;

{Процедура перевода градусов в радианы}

procedure v_rad (var a,b,rad:real);

begin

rad:=(a+(b/60))*Pi/180;

end;

{Процедура вычисления дирекционных углов твердых сторон по их координатам}

procedure dir_ugol(var x1,x2,y1,y2,r:real);

begin

r:=arctan((y2-y1)/(x2-x1));

if ((y2-y1)>0)and((x2-x1)>0) then r:=r;

if ((y2-y1)>0)and((x2-x1)<0) then r:=pi-r;

if ((y2-y1)<0)and((x2-x1)<0) then r:=pi+r;

if ((y2-y1)<0)and((x2-x1)>0) then r:=2*pi-r;

end;

{Вводим данные с клавиатуры}

Writeln(`Koordinaty tochek');

Writeln(' koordinaty tochek 9505 "xxxxx.xx yyyyy.yy"');

Readln(x1,y1);

Writeln(' koordinaty tochek 9506 "xxxxx.xx yyyyy.yy"');

Readln(x2,y2);

Writeln(' koordinaty tochek 9507 "xxxxx.xx yyyyy.yy"');

Readln(x3,y3);

Writeln(' koordinaty tochek 9508 "xxxxx.xx yyyyy.yy"');

Readln(x4,y4);

Writeln('Vvedite dliny izvestnyh storon');

Writeln('9506 - 1');

Readln(s[1]);

Writeln('1 - 2');

Readln(s[2]);

Writeln('2 - 3');

Readln(s[3]);

Writeln('3 - 4');

Readln(s[4]);

Writeln('4 - 9508');

Readln(s[5]);

Writeln(`Vvedite ugly');

Writeln('Stoim na tochke 9506');

writeln(' na 9505 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[1,1]:=rad;

writeln(' na 1=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[1,2]:=rad;

Writeln(' Stoim na tochke 1');

writeln(' na 9506 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[2,1]:=rad;

writeln('to 2=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[2,2]:=rad;

Writeln(' Stoim na tochke 2');

writeln(' на 1 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[3,1]:=rad; writeln(' на 3=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[3,2]:=rad;

Writeln(Stoim na tochke 3');

writeln(' na 2 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[4,1]:=rad;

writeln(' na 4=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[4,2]:=rad;

Writeln(`Stoim na tochke 4');

writeln(' na 3 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[5,1]:=rad;

writeln(' na 9508=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[5,2]:=rad;

Writeln(' Stoim na tochke 9508');

writeln(' na 4 =');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[6,1]:=rad;

writeln('na 9507=');

readln(dd,mm);

v_rad (dd,mm,rad);

dir[6,2]:=rad;

{конец ввода данных с клавиатуры}

dir_ugol (x1,x2,y1,y2,AB);

dir_ugol (x3,x4,y3,y4,CD);

Corners[1]:=AB;

Corners[7]:=CD;

{вычисление углов и невязки хода}

for i:=1 to 6 do

dir[i,3]:=dir[i,2]-dir[i,1];

fb:=(dir[1,3]+dir[2,3]+dir[3,3]+dir[4,3]+dir[5,3]+dir[6,3])-(corners[7]-corners[1]);

if fb<((pi*sqrt(6))/(60*180)) then for i:=1 to 6 do dir[i,3]:=dir[i,3]-fb/6;

{Вычисление дирекционных углов сторон теодолитного хода}

for i:=1 to 5 do

corners[i+1]:=corners[i]+dir[i,3]-pi;

points[0,1]:=x2;

points[0,2]:=y2;

for i:=1 to 5 do {Вычисление приращения координат}

begin

points[i,1]:=s[i]*cos(corners[i+1]);

sx:=sx+points[i,1];

points[i,2]:=s[i]*sin(corners[i+1]);

sy:=sy+points[i,2];

end; {Вычисление абсолютной линейной невязки}

fx:=sx-(x3-x2);

fy:=sy-(y3-y2);

for i:=1 to 5 do

sl:=sl+s[i];

fabs:=sqrt(sqr(fx)+sqr(fy));

fotn:=fabs/sl;

{распределение невязки пропорционально приращениям по осям}

for i:=1 to 5 do

begin

points[i,1]:=points[i,1]-(points[i,1]*fx/sx);

points[i,2]:=points[i,2]-(points[i,2]*fy/sy);

end;

for i:=1 to 5 do {Вычисление координат искомых точек}

begin

points[i,1]:=points[i,1]+points[i-1,1];

points[i,2]:=points[i,2]+points[i-1,2];

end;

Writeln(`Iskomye velichiny');

for i:=1 to 5 do

begin

writeln(i,'-aya tochka x=',(points[i,1]):0:2,' y=',(points[i,2]):0:2);

end;

end.

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

Koordinaty tochek

koordinaty tochek 9505 "xxxxx.xx yyyyy.yy"

38123.69 28100.17

koordinaty tochek 9506 "xxxxx.xx yyyyy.yy"

38478.82 28100.76

koordinaty tochek 9507 "xxxxx.xx yyyyy.yy"

38124.11 29568.25

koordinaty tochek 9508 "xxxxx.xx yyyyy.yy"

392056.16 29216.14

Vvedite dliny izvestnyh storon

9506 - 1

324.93

1 - 2

430.03

2 - 3

290.78

3 - 4

295.99

4 - 9508

472.43

Vvedite ugly

Stoim na tochke 9506

na 9505 =

0

0

na 1=

258

4.1

Stoim na tochke 1

na 9506 =

0

0

to 2=

187

39.7

Stoim na tochke 2

na 1 =

0

na 3=

84

57.9

Stoim na tochke 3

na 2 =

0

0

na 4=

178

30.5

Stoim na tochke 4

na 3 =

0

0

na 9508=

274

24.2

Stoim na tochke 9508

na 4 =

0

0

na 9507=

258

17.1

Iskomye velichiny

1-aya tochka x=38446.33 y=28519.32

2-aya tochka x=38431.07 y=29083.81

3-aya tochka x=38291.15 y=29022.55

4-aya tochka x=38149.37 y=28950.21

5-aya tochka x=38124.11 y=29568.25

3.7 Анализ

Теодолитный ход был решен с помощью языка программирования Turbo Pascal. Использованные в решении обязательные геодезические методы контроля ошибок (допуски угловой и линейной невязок), позволяют не сомневаться в правильности приведенного решения, т.к. ошибка, допущенная в процессе вычислений, привела бы к неверному результату, дающему сразу о себе знать.

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)

.

Необходимо отметить, если , то система уравнений вырождена.

Пример.

Дана система уравнений:

Найти решение системы уравнений.

Решение.

Легко убедиться, что множители для второго и третьего уравнений равны 2 и 1. После исключения из второго и из третьего уравнений, новый множитель, исключающий из третьего уравнения, равен -2. Треугольная система уравнений имеет вид

Из последнего уравнения , из второго , из первого. Можно подставить эти значения в исходные уравнения и убедиться, что они точно удовлетворяютcя. Теперь можно обобщить этот метод на случай системы из n - уравнений с n-неизвестными. Ниже записана система уравнений, приведенная к треугольному виду (4.8).

(4.8)

Формулы для вычисления неизвестных (обратный ход) будут иметь вид:

(4.9)

4.2 Постановка задачи

Решение системы линейных алгебраических уравнений методом Гаусса

4.3 Исходные данные

4.4 Блок-схема для Turbo Pascal

Размещено на http://www.allbest.ru/

Рис.4.1

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

program gauss;

uses crt;

const

n=4;

a:array[1..n,1..n+1] of real=((4,-7,-5,-5,47),(14,-24,-6,-5,129),(0,1,4,2,-10), (2,-3,1,0,14));

var

k,i,j:integer;

s:real;

x:array[1..n] of real;

Begin

clrscr;

writeln('vvedite koefficienty uravnenii');

for i:=1 to n do

begin

for j:=1 to n+1 do

write(' ',a[i,j]:5:2);

writeln;

end;

for k:=1 to n do

begin

for j:=k+1 to n+1 do

a[k,j]:=a[k,j]/a[k,k];

for i:=1 to n do

begin

if i<>k then

begin

for j:=k+1 to n+1 do

a[i,j]:=a[i,j]-a[i,k]*a[k,j];

end;

end;

writeln('rezultat');

for i:=1 to n do

writeln('x',i,'=',a[i,n+1]:8:3);

readln;

end.

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

vvedite koefficienty uravnenii

1.00 -2.00 2.00 0.00 13.00

0.00 2.00 5.00 5.00 29.00

7.00 5.00 4.00 9.00 50.00

3.00 2.00 1.00 3.00 17.00

rezultat

x1= 3.000

x2= -0.500

x3= 4.500

x4= 1.500

4.7 Табличные вычисления MS Excel

Рис. 4.2 Excel - вычисления

Рис. 4.3. Excel - с открытыми формулами

4.8 Анализ

Задача №6 (решение СЛАУ методом Гаусса) решена с помощью языка программирования Turbo Pascal, причем составленная программа позволяет решать СЛАУ с любым количеством неизвестных (здесь до 30).

Заключение

В данной курсовой работе я решил с помощью языка программирования Turbo Pascal несколько задач, входящих в камеральные работы маркшейдера. Попутно проверял правильность написания программ в табличном процессоре Excel. В написании программ мне помогли знания, полученные из курса информатики и геодезии.

Библиографический список

1. Информатика: Программа и методические указания по выполнению курсовой работы для студентов специальности "Маркшейдерское дело" дневной формы обучения / Санкт-Петербургский горный ин-т. Сост.: А.П. Кондрашов, Т.Р. Косовцева, В.В. Петров, - СПб, 2004. 51 с.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.