Отчет по дисциплине: "Информатика"
Вид материала | Отчет |
СодержаниеВывод теории Вывод консультации ВЫХОДОписание программы Введите через пробел значения х(1) и у(1): 1.4 0.9523 |
- Методические указания по выполнению контрольной работы №2 по дисциплине Информатика, 278.17kb.
- Рабочая учебная программа по дисциплине «Информатика» Направление №230100 «Информатика, 91.73kb.
- Методические указания по выполнению курсовой работы по дисциплине "Информатика" для, 188.01kb.
- Учебно-методический комплекс по дисциплине б в дв. 01- цифровая обработка сигналов, 603.86kb.
- Методические указания по выполнению контрольной работы №1 по дисциплине Информатика, 390.61kb.
- Учебно-методический комплекс по дисциплине педагогика направление подготовки, 1570.07kb.
- Курс лекций по дисциплине «Информатика», 2088.1kb.
- Аннотация рабочей программы дисциплины информатика Место дисциплины в структуре ооп, 36.46kb.
- Программа вступительных испытаний по дисциплине «Информатика» для абитуриентов образовательного, 140.74kb.
- Лекции по дисциплине «Информатика и математика» Тема 12: Организационные меры, аппаратные, 247.81kb.
Министерство образования Российской Федерации
Алтайский государственный технический университет
Отчет по дисциплине: "Информатика”
Курсовая работа
"Интерполяция каноническим полиномом"
Выполнил:
студент гр. Э-13
Барсуков В.
Проверил:
ст. преподаватель
Деев Ю. В
г. Барнаул 2002 г.
Постановка задачи:
Данная программа предназначена для широко распостраненных в научно-технических расчетах дифференциальных уравнениях, которые часто имеют решения в виде ортогональных многочленов Лагерра, Лежандра, Эрмита и Чебышева. Итерполяция заключается в нахождении значений функции у(х), заданной n узлами, в промежитках между ними. При этом функция заменяется тем или иным полиномом Р(х), значения которого в узлах совпадают со значениями у(х).
Описание метода решения:
В данной программе использовался метод, реализующий интерполяцию с помощью интерполяционного полинома Лагранжа
Y(x)=B0(y)+B1(y)(x-x0)+B2(y)(x-x0)(x-x1)+…
+Bn(y)(x-x0)(x-x1)…(x-xn-1)
где коэффициенты B0(y)%Bn(y) являются функциями ординат у0% уn . Алгоритм их вычисления по схеме Эйткена поясняется таблицей№1. При известных B0(y)%Bn(y) вычисление у(х) для любого х можно произвести по схеме Горнера.
Таблица№1
Блок-схема:
ВХОД
Титульный лист
Выбор варианта работы
Программы
Вывод теории Вывод консультации
N=1 N=3
N
N=4 N=4
Выход N=2
Вывод справки
Основная программа пиот
в которой высчиты-
ваются коэффициенты
ВЫХОД
Описание программы:
Программа состоит из нескольких процедур. В процедуре Proga содержится основная часть программы(2-ой пункт меню), в которой и вычисляются коэффициенты. Процедура Shad используется, как вспомогательная для процедуры SingleRam, в которой создается рамка для пунктов меню.
Процедура Txt нужна для вывода текстов теории, справки и консультации постранично. Файл с именем theory.txt один, но он делится на 3 части, для каждой из которых создана сигнальная строка, которая передается процедуре в качестве параметра. Как только процедура находит строку, совпадающую со строкой, переданной в качестве параметра, то она начинает вывод текста на экран.
В основной программе содержится титульный лист, а так же меню выбора.
Текст программы:
Program Slava;
Uses Crt;
Var
ch :Char;
n,n1 :Integer;
s :array [1..5] Of String;
Procedure Proga;
{Сама программа - 2-ой пункт меню}
Var
n,i,j,k :Integer;
x,y,a,q :Array [1..10] Of Real;
c :Char;
Begin
c:='y';
While (c<>'n')and(c<>'N')Do
Begin
Clrscr;
Writeln(' Интерполяция каноническим полиномом');
Writeln;
TextColor(3);
Write('Введите кол-во узлов функции: ');
Readln(n);
For i:=1 to n do
Begin
Write('Введите через пробел значения х(',i-1,') и у(',i-1,'): ');
Readln(x[i],y[i]);
End;
a[1]:=y[1];k:=2;
For i:=1 to n do q[i]:=y[i];
For i:=2 to n do
Begin
For j:=i-1 to n do
q[j+1]:=(q[j+1]-q[k-1])/(x[j+1]-x[k-1]);
a[i]:=q[i];k:=k+1;
End;
TextColor(2);
Writeln('Коэффициенты полинома:');
For i:=1 to n do writeln('B(',i-1,')=',a[i]:4:4);
Writeln('Еще раз?(y/n)');
c:=readkey;
End;
End;
procedure shad(i,j:byte);
{Процедура для выбора рамки}
type scrarray=array[0..25,1..160] of byte;
var
Fn,Cl:byte;
screen:scrarray absolute $b800:$0000;
begin
Dec(j);
Fn:=trunc(screen[j,i*2]/16);
Cl:=screen[ j,i*2]-Fn*16;
If Fn<8 then Fn:=0 else Fn:=Fn-8;
if Cl<8 then Cl:=8 else Cl:=Cl-8;
screen[j,i*2]:=Fn*16+Cl;
end;
Procedure SingleRam(x1,y1,x2,y2,ch:byte);
{Процедура, создающая рамку, используя данные процедуры shad}
var
i:shortint;
s,p:string[80];
Begin
s:='';
while length(s)<(x2-x1-3) do s:=s+'=';
Gotoxy(x1,y1) ;write (' -',s,'¬ ');
p:='';
while length(p)<(x2-x1-3) do p:=p+' ';
for i:=(y1+1) TO (Y2-1) do
begin
Gotoxy(x1,i);write(' ¦',p,'¦ ');
end;
Gotoxy(x1,y2);
write(' L',s,'- ');
IF CH=1 THEN BEGIN
FOR I:=(X1+2) TO (X2+2) DO SHAD(I,Y2+1);
FOR I:=(Y1+1) TO Y2 DO
BEGIN
SHAD(X2+1,I);
SHAD(X2+2,I);
END;
END;
END;
procedure txt(saw:string);
{Процедура вывода теории, справки и консультации на экран}
label exx2;
var
i,j,qwer,k18 :word;
as :char;
asds :String;
f :Text;
mn :boolean;
begin
Assign(F,'theory.txt');
Reset (F);
TextAttr:=$6F;
For I:=0 to 275 do Write (' ');
GOTOXY(0,0);write('');
TextAttr:=$3C;
SingleRam(3,1,77,5,1);
TextAttr:=$3d;
gotoXY(29,3);write('Текст');
TEXTATTR:=$3c;
SingleRam(3,21,77,23,1);
TextAttr:=$3d;
gotoXY(18,22);write('КОГДА ПРОЧТЕТЕ, НАЖМИТЕ В В О Д');
Window (5,8,77,19);
TextAttr:=$0E;
ClrScr;
Window (5,8,77,18);
J:=0;qwer:=1;asds:='';k18:=0;mn:=false;
while not(mn) do begin
readln(f,asds);
if asds=saw Then k18:=1;
if k18<>0 then mn:=true;
end;
While qwer<72 do
Begin
Read(F,Ch);
Write (Ch);
If Ch=#13 then Inc(J);
If J=2 then
Begin
as:=readkey;
If as=#27 Then goto exx2;
J:=0;
qwer:=qwer+11;
End;
End;
exx2:
close(F);
window(1,1,80,25);
textattr:=$3f;
clrscr;
End;
Begin
clrscr;n:=0;
textattr:=$30;
singleram(2,1,78,25,0);
textattr:=$3f;
gotoxy(17,3);write('Алтайский Государственный Технический Университет');
gotoxy(30,4);write('им. И. И. Ползунова');
gotoxy(20,6);write('Курсовой проект по предмету "Программирование"');
gotoxy(35,9);write('ТЕМА: ');
gotoxy(23,11);write('ИНТЕРПОЛЯЦИЯ КАНОНИЧЕСКИМ ПОЛИНОМОМ');
gotoxy(50,16);write('Выполнил:ст. гр. Э-14');
gotoxy(60,17);write('Барсуков В.');
gotoxy(22,22);write(' ------------------------ ');
gotoxy(22,23);write(' - Нажмите клавишу Ввод - ');
gotoxy(22,24);write(' ------------------------ ');
readln;
textattr:=$3f;
ClrScr;
while n<>5 do begin
window(1,1,80,25);clrscr;
textattr:=$3f;
singleram(2,2,78,24,0);
delay(100);
S[1]:=' ТЕОРИЯ ';
S[2]:=' РАБОТА ПРОГРАММЫ ';
S[3]:=' КОНСУЛЬТАЦИЯ ';
S[4]:=' СПРАВКА ';
S[5]:=' В Ы Х О Д ';
Textattr:=$5f;
For N:=1 to 5 do
Begin
SingleRam(n*5+12,n*2+3,n*5+37,n*2+5,0);
GotoXY (n*5+14,n*2+4);
Write (S[N]);
End;
textattr:=$5f;
singleram(17,18,26,22,0);
singleram(53,18,62,22,0);
singleram(35,18,44,22,0);
gotoxy(21,19);write('_');
gotoxy(19,21);write('вверх');
gotoxy(39,19);write('_');
gotoxy(38,21);write('вниз');
gotoxy(56,20);write('ввод');
N:=1;
N1:=5;
Ch:=#0;
While Ch<>#13 do
Begin
Ch:=ReadKey;
If Ch=#0 then Ch:=ReadKey;
If ch=#27 Then halt(0);
If Ch=#72 then Dec(N);
If Ch=#80 then Inc(N);
If (N<1) or (N>5) then N:=Abs(N-5);
If N1<>N then
Begin
TextAttr:=$5F;
GotoXY (N1*5+14,N1*2+4);
Write (S[N1]);
TextAttr:=$F5;
GotoXY (n*5+14,N*2+4);
Write (S[N]);
N1:=N;
End;
End;
TextAttr:=$02;
ClrScr;
If n=1 Then Txt('theory');
If n=2 Then Proga;
If n=3 Then Txt('kons');
If n=4 Then Txt('spravka');
If n=5 Then Halt(0);
end;
End.
Инструкция пользователю:
Системные требования: монитор SVGA, процессор не ниже 386, оперативная память 1 Мb, клавиатура.
При загрузке программы выбрать нужный вам пункт меню. Остановимся подробнее на 2-ом пункте меню – самой программе. Сначала нужно ввести количество узлов функции(n>=2). Число должно быть натуральным. После чего через пробел вводятся координаты точек у(i) и x(i) . Результатом будет список коэффициентов B0(y)%Bn(y), которые и дополнят формулы интерполяционного полинома Лагранжа.
Заключение:
Данная программа является хорошим подспорьем для инженеров, которые занимаются дифференциальными вычислениями. Простота алгоритма вычисления коэффициентов, а также непритязательность к системным требованиям обеспечат ей, возможно, вполне конкурентоспособное место на рынке аналогичных программ.
Тесты программы:
Введите кол-во узлов функции: 3
Введите через пробел значения х(0) и у(0): 1.3 0.934
Введите через пробел значения х(1) и у(1): 1.4 0.9523
Введите через пробел значения х(2) и у(2): 1.5 0.9661
Коэффициенты полинома:
B(0)=0.9340
B(1)=0.1830
B(2)=-0.2250
Введите кол-во узлов функции: 4
Введите через пробел значения х(0) и у(0): 1.3 0.934
Введите через пробел значения х(1) и у(1): 1.4 0.9523
Введите через пробел значения х(2) и у(2): 1.5 0.9661
Введите через пробел значения х(3) и у(3): 1.6 0.9763
Коэффициенты полинома:
B(0)=0.9340
B(1)=0.1830
B(2)=-0.2250
B(3)=0.1500
Введите кол-во узлов функции: 5
Введите через пробел значения х(0) и у(0): 2.2 0.4860966
Введите через пробел значения х(1) и у(1): 2.3 0.4892759
Введите через пробел значения х(2) и у(2): 2.4 0.4918025
Введите через пробел значения х(3) и у(3): 2.5 0.4937903
Введите через пробел значения х(4) и у(4): 2.6 0.4953388
Коэффициенты полинома:
B(0)=0.4861
B(1)=0.0318
B(2)=-0.0326
B(3)=0.0190
B(4)=-0.0060
Список литературы:
- Дьяконов В.П. Справочник по расчетам на микрокалькуляторах.-2-ое изд., испр. Москва: Наука. Гл. ред. физ.-мат. Лит. 1986 г. – 224с.