Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «Теория механизмов и машин»
Исследование среднего арифметического отклонения профиля
Курсовая работа
по курсу «Информатика»
Исполнитель __________
Группа
Руководитель __________
Минск 2006
Содержание:
1. Введение……………. ……………….……………………………….…...стр.
2. Постановка задачи……..….. …………….…… ………………………. ..стр.
3. Математическая модель задачи……….….…… ………………………...стр.
4. Алгоритм решения задачи.…………… ….………………… ………..….стр.
5. Схема алгоритма…………………………..……..…… …………………..стр.
6. Таблица идентификаторов…………… …………………………………стр.
7. Текст программы на языке Pascal……… ………………….……………стр.
8. Результаты решения задачи…………….… ………………….. ………..стр.
9. Анализ результатов…………………………. …………………………...стр.
Ни одну деталь в машиностроении не возможно сделать абсолютно гладкой, всегда конечная изготовка имеет погрешности. Поэтому невозможно обойтись без анализа шереховатости поверхности при изготовлении какого либо механизма. В соответствии с математической моделью задачи необходимо анализировать шероховатость по длине вала определяя значения отклонения используя интерполяционный множитель Лагранжа.
При анализе шероховатости по длине вала получена таблично заданная зависимость сре5днего арифметического отклонения профиля Ra(l) вида
l |
L1 |
L2 |
... |
Ln |
Ra |
Ra2 |
Ra2 |
… |
Ran |
Определить значения Ra в точке вала с координатами , используя интерполяционный множитель Лагранжа. Построить график зависимости Ra(l).
3. Математическая модель задачи
Интерполяционный многочлен Лагранжа, построенный по n узлам интерполирования, для поставленной задачи запишется в виде
Для вычисления Raj -- среднего арифметического отклонения профиля в точке с координатой воспользуемся соотношением
для каждого j = 1,2, … , k.
Значения исходных данных для тестирования
l,мм |
0 |
6 |
10 |
13 |
15 |
18 |
20 |
24 |
27 |
29 |
Ra,мкм |
1,9 |
1,92 |
1,94 |
1,96 |
1,96 |
1,99 |
1 |
0,98 |
0,97 |
0,96 |
мм, мм, мм, мм, k = 4, n = 10.
4. Алгоритм решения задачи
1. Считываем исходные данные из файла “DANNYE.dan”
1.1 Для i=1..n li;
1.2 Для i=1..n Rai;
1.3 Для i=1..m
2. Для k=1..m
2.1 Для i=1..n
2.1.1 zni=1
2.1.2 Для j=1..n
если i<> j то
2.2
3. Cохраняем результаты в файле REZULTAT.dan
3.1 Для i=1..m
3.1.1
3.1.2
5. Схема алгоритма
Схема головной программы
Процедура SCHITYVANIE
Процедура MyGraphInit
Процедура OSI_KOORDINAT
Процедура SAVE
Процедура Graph_Ra
Процедура RAS4OT
Процедура MaxMinRa
6. Таблица идентификаторов
№ |
идентификатор |
описание |
1 |
l |
массив, содержащий координаты вала |
2 |
Ra |
массив, содержащий отклонения профиля при координатах |
3 |
lin |
массив, содержащий координаты искомых отклонений |
4 |
Ran |
массив, содержащий значения искомых отклонений |
5 |
maxRa, minRa |
мин. и макс. значения из массива Ra |
7. Текст программы на языке Pascal.
program variant3;
uses crt,graph;
const
n=10;
m=4;
type
massl=array[1..n] of integer;
massRa=array[1..n] of real;
massln=array[1..m] of integer;
massRan=array[1..m] of real;
var l:massl;
Ra:massRa;
lin:massln;
Ran:massRan;
maxRa,minRa:real;
{=================================}
procedure s4ityvanie(var l:massL;var Ra:massRa;var ln:massLn);
var
dan:text;
z:integer;
begin
clrscr;
{$I-}
assign(dan,'dannye.dan');
reset(dan);
z:=ioresult;
{I+}
if z<>0 then
begin
writeln('oshibka faila ''dannye.dan'' No:',z);
readkey;
Halt(1);
end;
for z:=1 to n do
read(dan,l[z]);
for z:=1 to n do
read(dan,Ra[z]);
for z:=1 to m do
read(dan,lin[z]);
close(dan);
end;
{==========================================}
procedure MaxMinRa(var maxRa,minRa:real);
var i:integer;
begin
maxRa:=Ra[1];
minRa:=Ra[1];
for i:=1 to n do begin
if maxRa<Ra[i] then maxRa:=Ra[i];
if minRa>Ra[i] then minRa:=Ra[i];
end;
end;
{===========================================}
procedure ras4ot(var Ran:massRan);
var i,k,j:integer;
zn:massRa;
begin
for k:=1 to m do
begin
Ran[k]:=0;
for i:=1 to n do
begin
zn[i]:=1;
for j:=1 to n do
if i<>j then
zn[i]:=zn[i]*(lin[k]-l[j])/(l[i]-l[j]);
end;
for i:=1 to n do
zn[i]:=zn[i]*ra[i];
for i:=1 to n do
Ran[k]:=Ran[k]+zn[i];
end;
end;
{=============================================}
procedure osi_koordinat(l:massl;minRa,maxRa:real);
var i:integer;
dl,dr,x:real;
s:string;
begin
dl:=l[n]/10;
dr:=abs(maxRa-minRa)/10;
setlinestyle(0,1,1);
line(100,20,100,320);
line(100,320,600,320);
for i:=0 to 10 do
begin
line(99,20+30*i,101,20+30*i);
x:=maxRa-i*dr;
str(x:4:3,s);
moveTo(50,15+30*i);
outText(s);
line(100+50*i,319,100+50*i,321);
x:=0+i*dl;
str(x:4:0,s);
outtextXY(80+50*i,324,s);
end;
for I:=1 to 10 do
begin;
setLineStyle(1,1,1);
setColor(8);
line(103,20+30*(i-1), 600,20+30*(i-1));
line(100+50*i,318,100+50*i,20);
setLineStyle(0,1,1);
setColor(15);
end;
end;
{===============================================}
procedure MyGraphInit;
var GraphDriver,ErrorCode,GraphMode:integer;
begin
GraphDriver:=detect;
initGraph(graphdriver,GraphMode,'');
ErrorCode:=graphresult;
if Errorcode<>grOk then
begin
writeln('proizoshla oshibka grafiki: ',grapherrormsg(errorCode));
writeln('rabota programmy prervana');
readln;
Halt(1);
end;
end;
{===============================================}
procedure graph_Ra;
var i:integer;
begin
setColor(red);
moveTo(round(100+l[1]*500/l[n]),round( 320-(Ra[1]-minRa)*300/(maxRa-minRa)));
for i:=2 to n do
lineTo(round(100+l[i]*500/l[n]),round( 320-(Ra[i]-minRa)*300/(maxRa-minRa)));
outtextxy(100,400,'grafik zavisimosti Ra(l)');
end;
{=======================================================}
procedure save;
var i,z:integer;
rez:text;
begin
{$I-}
assign(rez,'rezultat.dan');
rewrite(rez);
z:=ioresult;
{I+}
if z<>0 then
begin
writeln('oshibka faila ''rezultat.dan'' ',z);
readkey;
Halt(1);
end;
writeln(rez,'zna4eniya Ra v tochkah s koordynatomi L1...L4 :');
writeln(rez,' _____________________________');
writeln(rez,'| Ra | L |');
writeln(rez,'`-----------------------------'' ');
for i:=1 to m do
writeln(rez,'|',ran[i]:8:2,' |',lin[i]:8,' |');
writeln(rez,'`-----------------------------''');
close(rez);
end;
{=======================================================}
begin
s4ityvanie(l,Ra,lin);
ras4ot(ran);
MaxMinRa(maxRa,minRa);
MygraphInit;
Osi_koordinat(l,minRa,maxRa);
Graph_Ra;
save;
readkey;
end.
8. Результаты решения задачи
Распечатка файла REZULTAT.DAN
zna4eniya Ra v to4kah s koordynatomi L1...L4 :
_____________________________
| Ra | L |
`-----------------------------'
| 27.17 | 3 |
| 2.11 | 16 |
| 0.19 | 22 |
| -0.34 | 28 |
`-----------------------------'
9. Анализ результатов
выход
ras4ot
s4ityvanie
начало
MaxMinRa
MygraphInit
Osi_koordinat
Graph_Ra
save
readkey
oshibka faila 'dannye.dan' No:, ioresult
Чтение l[z] из dan
Чтение Lin[z] из dan
z=1,n
close(dan)
Завершение работы программы
ioresult≠0
{$I}
assign(dan,'dannye.dan')
reset(dan)
{I+}
вход
да
нет
Чтение Ra[z] из dan
z=1,m
z=1,n
выход
Выход
rabota programmy prervana
нет
proizoshla oshibka grafiki:
да
ErrorCode<>0
ErrorCode = graphresult
InitGraph
GraphDriver = detekt
Вход
readln
Halt(1)
Выход
setColor
setlinestyle
line
line
setColor
setlinestyle
i = 1, 10
outTextXY
str
x = 0 + i*dl
line
utText
moveTo
str
x = maxy i*dr
line
i = 0, 10
line
line
setlinestyle
dr = |(maxRa minRa)|/10
dl = l[n]/10
Вход
L[n],minRa,maxRa
close(rez)
вход
выход
вход
lineTo(round(100+l[i]*500/l[n]),round( 320-(Ra[i]-minRa)*300/(maxRa-minRa)))
grafik zavisimosti Ra(l)
выход
Запись в rez: zna4eniya Ra v tochkah s koordynatomi L1...L4
k=1,m
i=1,4
oshibka faila 'rezultat.dan' No:, ioresult
Завершение работы программы
ioresult≠0
{$I}
assign(dan,'rezultat.dan')
reset(dan)
{I+}
вход
да
нет
setColor(red)
moveTo(round(100+l[1]*500/l[n]),round( 320-(Ra[1]-minRa)*300/(maxRa-minRa)))
Запись в rez:
Ran[i],lin[i]
i=2,n
Ran[k]:=0
i=1,n
zn[i]:=1
j=1,n
i<>j
zn[i]=zn[i]*(lin[k]-l[j])/(l[i]-l[j])
да
нет
A
B
C
A
B
C
i=1,n
i=1,n
zn[i]:=zn[i]*ra[i]
Ran[k]:=Ran[k]+zn[i]
выход
вход
maxRa=Ra[1]
minRa=Ra[1]
i=1,n
maxRa<Ra[i]
maxRa=Ra[i]
да
нет
minRa>Ra[i]
minRa=Ra[i]
да
нет
выход