Автор работы: Пользователь скрыл имя, 16 Марта 2011 в 21:09, курсовая работа
Дана розробка повинна автоматизувати процес розрахунку аргументів функцій та власне їх значень у заданих рівновіддалених точках, збереження вхідної та вихідної інформації та розпізнавання введеної у відповідному вікні формули.
Програма виконує такі основні функції:
•Розпізнавання формули, яку введено у відповідному вікні;
•Пошук мінімального та максимального значення функції у певному діапазоні зміни аргументу, який вводиться у вікні програми;
•Побудова графіку функції у відповідному діапазоні;
•Розрахунок аргументів функцій та значень функцій у рівновіддалених точках, кількість яких вводиться у вікні програми та занесення розрахованих величин у відповідну таблицю;
•Проведення кускової інтерполяції кубічними многочленами Бесселя та побудова відповідної кривої.
ЗАВДАННЯ НА ДИПЛОМНУ РОБОТУ СТУДЕНТУ 3
АНОТАЦІЇ 5
ЗМІСТ 7
ТЕОРЕТИЧНА ЧАСТИНА 9
1. ТЕХНІЧНЕ ЗАВДАННЯ 10
1.Підстави для розробки 10
2.Призначення розробки 10
3.Аналіз вимог до програмного забезпечення 10
1.Функціональні вимоги 10
2.Вимоги до складу та параметрів технічних засобів 11
3.Вимоги до інтерфейсу 11
4.Вимоги до інформаційної та програмної сумісності 12
5.Вимоги до тестування програмного забезпечення 12
1.4.Вимоги до програмної документації 12
1.4.1. Склад супроводжувальної документації 12
1.4.2. Вимоги до супроводжувальної документації 13
1.5. Стадії та етапи розробки 13
1.6. Порядок контролю і приймання 14
ПРАКТИЧНА ЧАСТИНА 15
2. АРХІТЕКТУРА, ФУНКЦІОНАЛЬНІ ТА ТЕХНІЧНІ ПОКАЗНИКИ 16
2.1. Призначення та область застосування 16
2.2. Опис та обґрунтування обраної архітектури 16
2.3. Функціональна специфікація 18
1.Опис функціональних можливостей 18
2.Опис інтерфейсу користувача 18
2.4.Технічна специфікація 23
2.4.1. Опис діаграми модулів 23
2.4.2. Опис і обґрунтування вхідних та вихідних даних 24
2.5. Математичне забезпечення 25
3. КОНСТРУЮВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 29
3.1. Опис і обґрунтування обраних програмних засобів 29
3.2. Опис програми 29
3.2.1. Функціональні можливості 29
3.2.2. Опис логічної структури 30
3.2.3. Виклик і завантаження 32
3.2.4. Використані технічні засоби 32
4. ПРОГРАМА ТА МЕТОДИКА ВИПРОБУВАНЬ 33
4.1. Об‘єкт випробувань 33
4.2. Використані технічні засоби 33
4.3. Порядок та методика випробувань 33
4.4. Результати випробувань 35
5. ВИСНОВКИ 36
6. ВИКОРИСТАНА ЛІТЕРАТУРА 37
7. ДОДАТКИ 38
Додаток А. Код програми 38
if (high(a)-low(a))=(high(b)-low(
begin
if (low(a)>low(b))or(low(a)=low(
begin
c:=low(a)-low(b);
for ch1:=low(a) to high(a) do
begin
q:=a[ch1];
a[ch1]:=b[ch1-c];
b[ch1-c]:=q;
end;
end;
if low(a)<low(b) then
begin
c:=low(b)-low(a);
for ch1:=low(a) to high(a) do
begin
q:=a[ch1-c];
a[ch1-c]:=b[ch1];
b[ch1]:=q;
end;
end;
end;
end;
procedure delnull(var a:string);
var min1:boolean;
begin
min1:=false;
if pos('-',a)=1 then
begin
min1:=true;
delete(a,1,1);
end;
if a='' then
begin
a:='0';
exit;
end;
while a[1]='0' do
begin
delete(a,1,1);
if a='' then
begin
a:='0';
break;
end;
end;
if pos(',',a)<>0 then
while a[length(a)]='0' do
delete(a,length(a),1);
if a[length(a)]=',' then delete(a,length(a),1);
if a='' then a:='0';
if a[1]=',' then a:='0'+a;
if (min1=true)and(a<>'0') then a:='-'+a;
end;
procedure multiply(var a,b:string);
var ch1,ch2,z,la,lb:cardinal;
min1,min2,min:boolean;
a1,b1,c:array of byte;
begin
delnull(a);
delnull(b);
min1:=false;
min2:=false;
z:=0;
if pos('-',a)=1 then
begin
min1:=true;
delete(a,1,1);
end;
if pos('-',b)=1 then
begin
min2:=true;
delete(b,1,1);
end;
min:=false;
if (min1=true)or(min2=true) then min:=true;
if (min1=true)and(min2=true)then min:=false;
if pos(',',a)<>0 then
begin
z:=length(a)-pos(',',a);
delete(a,pos(',',a),1);
end;
if pos(',',b)<>0 then
begin
z:=abs(z+length(b)-pos(',',b))
delete(b,pos(',',b),1);
end;
la:=length(a);
lb:=length(b);
setlength(a1,la);
setlength(b1,lb);
setlength(c,la+lb);
for ch1:=0 to la-1 do
a1[ch1]:=strtoint(a[ch1+1]);
for ch1:=0 to lb-1 do
b1[ch1]:=strtoint(b[ch1+1]);
for ch1:=0 to la+lb do
c[ch1]:=0;
for ch1:=la-1 downto 0 do
for ch2:=lb-1 downto 0 do
begin
c[ch1+ch2+1]:=c[ch1+ch2+1]+a1[
if c[ch1+ch2+1]>9 then
begin
c[ch1+ch2]:=c[ch1+ch2]+c[ch1+
c[ch1+ch2+1]:=c[ch1+ch2+1]-(c[
end;
end;
a:='';
b:='0';
if min=true then a:='-';
for ch1:=0 to la+lb-1 do
a:=a+inttostr(c[ch1]);
if z<>0 then insert(',',a,abs(length(a)-z+
delnull(a);
delnull(b);
finalize(a1);
finalize(b1);
finalize(c);
end;
procedure addition(var a,b:string);
var ch1,z,z2,la:cardinal;
min1,min2:boolean;
a1,b1,c:array of byte;
begin
delnull(a);
delnull(b);
min1:=false;
min2:=false;
z:=0;
z2:=0;
if pos('-',a)=1 then
begin
min1:=true;
delete(a,1,1);
end;
if pos('-',b)=1 then
begin
min2:=true;
delete(b,1,1);
end;
if pos(',',a)<>0 then
begin
z:=length(a)-pos(',',a);
delete(a,pos(',',a),1);
end;
if pos(',',b)<>0 then
begin
z2:=length(b)-pos(',',b);
delete(b,pos(',',b),1);
end;
if z>z2 then
for ch1:=1 to z-z2 do
b:=b+'0';
if z<z2 then
begin
for ch1:=1 to z2-z do
a:=a+'0';
z:=z2;
end;
if length(a)>length(b) then
for ch1:=1 to length(a)-length(b) do
b:='0'+b;
if length(a)<length(b) then
for ch1:=1 to length(b)-length(a) do
a:='0'+a;
la:=length(a);
setlength(a1,la);
setlength(b1,la);
setlength(c,la+1);
for ch1:=0 to la-1 do
begin
a1[ch1]:=strtoint(a[ch1+1]);
b1[ch1]:=strtoint(b[ch1+1]);
c[ch1]:=0;
end;
c[la]:=0;
if (min1=true)and(min2=false) then
begin
swapstr(a,b);
substract(a,b);
exit;
end;
if (min1=false)and(min2=true) then
begin
substract(a,b);
exit;
end;
if (min1=true)and(min2=true) then
begin
a:='-'+a;
substract(a,b);
exit;
end;
for ch1:=la-1 downto 0 do
begin
c[ch1+1]:=c[ch1+1]+a1[ch1]+b1[
if c[ch1+1]>9 then
begin
c[ch1]:=c[ch1+1]div 10;
c[ch1+1]:=c[ch1+1]-10;
end;
end;
a:='';
b:='0';
if min1=true then a:='-';
for ch1:=0 to la do
a:=a+inttostr(c[ch1]);
if z<>0 then insert(',',a,abs(length(a)-z+
delnull(a);
delnull(b);
finalize(a1);
finalize(b1);
finalize(c);
end;
procedure substract(var a,b:string);
var ch1,z,z2,la:cardinal;
min1,min2:boolean;
a1,b1,c:array of shortint;
max:func;
begin
delnull(a);
delnull(b);
min1:=false;
min2:=false;
z:=0;
z2:=0;
if pos('-',a)=1 then
begin
min1:=true;
delete(a,1,1);
end;
if pos('-',b)=1 then
begin
min2:=true;
delete(b,1,1);
end;
if pos(',',a)<>0 then
begin
z:=length(a)-pos(',',a);
delete(a,pos(',',a),1);
end;
if pos(',',b)<>0 then
begin
z2:=length(b)-pos(',',b);
delete(b,pos(',',b),1);
end;
if z>z2 then
for ch1:=1 to z-z2 do
b:=b+'0';
if z<z2 then
begin
for ch1:=1 to z2-z do
a:=a+'0';
z:=z2;
end;
if length(a)>length(b) then
for ch1:=1 to length(a)-length(b) do
b:='0'+b;
if length(a)<length(b) then
for ch1:=1 to length(b)-length(a) do
a:='0'+a;
la:=length(a);
setlength(a1,la);
setlength(b1,la);
setlength(c,la+1);
for ch1:=0 to la-1 do
begin
a1[ch1]:=strtoint(a[ch1+1]);
b1[ch1]:=strtoint(b[ch1+1]);
c[ch1]:=0;
end;
c[la]:=0;
if (min1=true)and(min2=false) then
begin
addition(a,b);
a:='-'+a;
exit;
end;
if (min1=true)and(min2=true) then
begin
swapstr(a,b);
substract(a,b);
exit;
end;
if (min1=false)and(min2=true) then
begin
addition(a,b);
exit;
end;
max:=maxmin(a,b);
if max=less then swaparr(a1,b1);
for ch1:=la-1 downto 0 do
begin
c[ch1+1]:=c[ch1+1]+a1[ch1]-b1[
if c[ch1+1]<0 then
begin
c[ch1]:=c[ch1]-1;
c[ch1+1]:=c[ch1+1]+10;
end;
end;
a:='';
b:='0';
if max=less then a:='-';
for ch1:=0 to la do
a:=a+inttostr(c[ch1]);
if z<>0 then insert(',',a,abs(length(a)-z+
delnull(a);
delnull(b);
finalize(a1);
finalize(b1);
finalize(c);
end;
procedure division(zn:cardinal; var a,b:string);
var ch1:cardinal;
z:longint;
min1,min2,min:boolean;
c:shortint;
a2,b2,c2:string;
temp:string;
label m1;
begin
delnull(a);
delnull(b);
if (a='0')or(b='0') then
begin
Информация о работе Кускова інтерполяція функцій кубічними многочленами Бесселя