
8 Заключение
В результате проведения курсовой работы была разработана на языке Turbo Pascal программа по расчёту и построению графика интерполяционного полинома.
При выполнении задания, я уяснил постановку задачи, построил математическую модель задачи, составил алгоритм и перевел его на язык программирования Turbo Pascal.
Знакомство и практические навыки выполнения курсовой работы позволили мне лучше освоить и понять весь материал курса.
9 Список литературы
-
ГОСТ 19.701-90. Единая система программной документации. Схемы алгоритмов, программ, данных и систем.
-
ГОСТ 19.002-80. Единая система программной документации. Схемы алгоритмов и программ. Правила выполнения.
-
ГОСТ 19.003-80. Единая система программной документации. Схемы алгоритмов и программ. Обозначения условные графические.
-
ГОСТ 19.402-78. Единая система программной документации. Описание программы.
-
Фараонов, В. В. Турбо Паскаль. Наиболее полный курс: учеб. пособие для опытных программистов / В. В. Фараонов. – М.: Нолидж, 2001. – 1033 с.
-
Волков Е. А. Численные методы, М.: Наука, 1982г.
-
Самарский А. А. Введение в численные методы, М.: 1982 г.
-
Д. Каханер, К. Моулер, С. Нэш Численные методы и программное обеспечение (перевод с английского), М.: 1998 г.
-
Буслов В. А., Яковлев С. Л. Численные методы I и II, Санкт-Петербург: 2001 г.
Приложение А
program Kursovaja;
uses crt, graph;
var
i,a,b,n:integer;
x,x1,x2,x3,x4,x5,x0: real;
y,y1,y2,y3,y4,y5,y0: real;
t1:string;
procedure init; {процедура подключение графического модуля}
var gr_driver, gr_mode, error_code:integer;
begin
Gr_driver:=detect; {Автоматически определяем графический драйвер}
initgraph(gr_driver,gr_mode,''); {Инициализация графического режима - файл с дравером должен располагаться в текущем каталоге}
error_code:=graphresult; {Проверяем ошибки}
if error_code<>0 then {установление правильности графика}
begin
writeln('сообщение об ошибке',grapherrormsg(error_code));
halt; { Выход из программы}
end;
end;
procedure linii; {процедура постройки линий для таблицы}
begin
n:=0;
for i:=1 to 8 do
begin
line(40+n,100,40+n,160); {рисует параллельные линии по вертикали}
n:=n+75; {расстояние между линиями}
end;
line(40,100,565,100); {рисует линию по горизонтали}
line(40,130,565,130); {рисует линию по горизонтали}
line(40,160,565,160); {рисует линию по горизонтали}
end;
procedure zapol_st; {процедура заполнения таблицы, данными по заданию значениями}
begin
setcolor(3); {задаём цвет (Cyan- бирюзовый)}
x0:=110;x1:=120;x2:=130;x3:=140;x4:=150;x5:=160;
y0:=0.23;y1:=0.56;y2:=0.15;y3:=0.1;y4:=0.27;y5:=0.2;
outtextxy(125,150,'0.23'); {заполнение таблицы значениями Y}
outtextxy(200,150,'0.56'); {заполнение таблицы значениями Y}
outtextxy(275,150,'0.15'); {заполнение таблицы значениями Y}
outtextxy(350,150,'0.1'); {заполнение таблицы значениями Y}
outtextxy(425,150,'0.27'); {заполнение таблицы значениями Y}
outtextxy(500,150,'0.2'); {заполнение таблицы значениями Y}
outtextxy(125,120,'110'); {заполнение таблицы значениями Х}
outtextxy(200,120,'120'); {заполнение таблицы значениями Х}
outtextxy(275,120,'130'); {заполнение таблицы значениями Х}
outtextxy(350,120,'140'); {заполнение таблицы значениями Х}
outtextxy(425,120,'150'); {заполнение таблицы значениями Х}
outtextxy(500,120,'160'); {заполнение таблицы значениями Х}
outtextxy(70,120,'x'); {заполнение таблицы значениями Х}
outtextxy(70,150,'y'); {заполнение таблицы значениями Y}
end;
procedure gr; {процедура построения графика интерполяционного полинома}
begin
x:=110; {координата начала для 1вой линии}
a:=380; {выравнивание по координатам на оси ОY}
b:=90; {выравнивание по координатам на оси ОY}
repeat
y:=(x-x1)/(x0-x1)*y0+(x-x0)/(x1-x0)*y1; {формула линейной интерполяции }
PutPixel (191+round(x), round(a+(y*(-b))),1); {строим прямую по точкам синим (Blue) цветом}
Delay (30); {приостанавливает программу на 30 миллисекунд}
x:=x+1; {скорость рисования одной точки}
until x>160;
x:=160; {координата начала для 2вой линии}
a:=120; {выравнивание по координатам на оси ОY}
b:=85; {выравнивание по координатам на оси ОY}
repeat
y:=(x-x2)/(x1-x2)*y1+(x-x1)/(x2-x1)*y2; {формула линейной интерполяции }
PutPixel (191+round(x), round(a+(y*(-b))),2); {строим прямую по точкам зелёным (Green) цветом}
Delay (30); {приостанавливает программу на 30 миллисекунд}
x:=x+1; {скорость рисования одной точки}
until x>210;
x:=210; {координата начала для 3ий линии}
a:=363; {выравнивание по координатам на оси ОY}
b:=90; {выравнивание по координатам на оси ОY}
repeat
y:=(x-x3)/(x2-x3)*y2+(x-x2)/(x3-x2)*y3; { формула линейной интерполяции }
PutPixel (191+round(x),round(a+(y*(-b))),4); {строим прямую по точкам красным (Red) цветом}
delay(30); {приостанавливает программу на 30 миллисекунд}
x:=x+1; {скорость рисования одной точки}
until x>260;
x:=260; {координата начала для 4ой линии}
a:=590; {выравнивание по координатам на оси ОY}
b:=85; {выравнивание по координатам на оси ОY}
repeat
y:=(x-x4)/(x3-x4)*y3+(x-x3)/(x4-x3)*y4; {формула линейной интерполяции }
PutPixel (191+round(x),round(a+1+(y*(-b))),5); {строим прямую по точкам фиолетовым (Magenta) цветом}
delay(30); {приостанавливает программу на 30 миллисекунд}
x:=x+1; {скорость рисования одной точки}
until x>308;
x:=308; {координата начала для 5ой линии}
a:=280; {выравнивание по координатам на оси ОY}
b:=70; {выравнивание по координатам на оси ОY}
repeat
y:=(x-x5)/(x4-x5)*y4+(x-x4)/(x5-x4)*y5; {формула линейной интерполяции }
PutPixel (191+round(x),round(a+(y*(-b))),6); {строим прямую по точкам коричневым (Brown) цветом}
delay(30); {приостанавливает программу на 30 миллисекунд}
x:=x+1; {скорость рисования одной точки}
until x>358;
end;
procedure risosei; {продцедура построения координатной сетки, и координатных осей}
var dx,dy,lx,ly,hx,hy:integer;
begin
SetLineStyle(1,0,0); {задаём текущие параметры линий}
SetColor(3); {задаём цвет линий (Cyan- бирюзовый)}
dx:=Round((600-250)/7); {количество линий по горизонтали}
dy:=Round((450-200)/7); {количество линий по вертикали}
line(250,200,250,450); {рисовании оси ОY по координатам}
line(250,450,600,450); {рисовании оси ОХ по координатам}
lx:=250; {расстановка линий координатной сетки по вертикали с данной координаты}
ly:=200; {расстановка линий координатной сетки по горизонтали с данной координаты}
for i:=1 to 7 do
begin {построение координатной сетки}
lx:=lx+dx; {соединяет линии построенные по горизонтали и вертикали}
line(lx,200,lx,450); {ограничивает линии в данных диапазонах (по вертикали)}
line(250,ly,600,ly); {ограничивает линии в данных диапазонах (по горизонтали)}
ly:=ly+dy; {расстояние между линиями координатной сетки}
end;
setcolor (7); {задаём цвет значений на осях координатной сетки (LightGray - светло-серый)}
hx:=225; {координата начала координатной сетки по Ox}
x:=100; {начальное значение Х-ов}
for i:=1 to 8 do
begin { построение оси Ох}
Str(x:5:0,t1); {записывает результат в строку t1 с установленным типом Х-ов}
OutTextXY(hx,460,t1); {выравнивание по вертикали все значения Х-ов }
x:=x+10; {увеличивает значение Х-ов на 10}
hx:=hx+50; {расстояние между иксами на координатной сетке}
end;
hy:=447; {координата начала координатной сетки по Oy}
y:=0; {начальное значение Y-ов}
for i:=1 to 8 do
begin { построение оси Оy}
Str(y:5:2,t1); {записывает результат в строку t1 с установленным типом Y-ов}
OutTextXY(210,hy,t1); {выравнивание по горизонтали все значения Y-ов }
y:=y+0.1; {увеличивает значение Y-ов на 0.1}
hy:=hy-dy; {расстояние между игреками на координатной сетке}
end;
end;
begin {вызов процедур используемых в программе}
init;
linii;
zapol_st;
risosei;
gr;
readln;
end.
Приложение Б