Вычисление значения функции при помощи полинома Лагранжа

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



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

procedure out;i:integer; a:mas;(1,1,80,25);(7);(black);;(f);(' Данные для расчета');;('X');i:=1 to filesize(f) do begin(f,a);(' ',a[1]:5:2);;(f); reset(f);;;('Y');i:=1 to filesize(f) do begin(f,a);(' ',a[2]:5:2);;(f);;;;(n); rewrite(t);(' Resultat');('X'); write(t,'X');i:=1 to filesize(n) do begin(n,a);(' ',a[1]:5:2); write(t,' '); write(t,a[1]:5:2);;; writeln; writeln(t);(n); reset(n);('Y'); write(t,'Y');i:=1 to filesize(n) do begin(n,a);(' ',a[2]:5:2); write(t,' '); write(t, a[2]:5:2);;(n); close(t);;

end;

Процедура zastavka использует стандартный модуль graph и при помощи графического режима выводит на экран сообщение о том, что данная работа является курсовой, фамилию и группу студента, и фамилию преподавателя. Эта процедура не имеет параметров и появляется один раз при запуске программы.

procedure zastavka;gd,gm:integer;;:=detect;(gd,gm,'');(lightgray);(red);(0,0,3);(160,180,'Yearly project');(60000);(20000);(0,0,1);(300,210,'Студент Бусыгина Нина, гр.Н202');(300,223,'Преподователь Лазарева Т.И.);

delay(60000);(60000);;;.

Модуль для основных действий

Модуль count cодержит процедуры для выполнения основного задания - вычисления значения функции у(х), заданной таблично при помощи полинома Лагранжа и построения графика функции. Модуль использует стандартные модули crt и graph, а также библиотечный модуль inout, в котором содержатся описания массива для хранения значений функции и файла для хранения данных.

unit count;graph,inout;m=array[1..1] of real;=^m;=array[1..2] of pm;schet(var f:fm; var y:real; x:real);result (var f,n:fm);grafik(var f,n:fm);

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

procedure schet;i,j:integer; m:z; c,u,d:real; w:mas;(f);(m[1],6*filesize(f)); getmem(m[2],6*filesize(f));i:= 1 to filesize(f) do begin(f,w);[1]^[i]:=w[1];[2]^[i]:=w[2];;:=0;i:= 1 to filesize(f) do begin-вычисление у(х)по формуле полинома Лагранжа:=1; d:=1; c:=1;j:=1 to filesize(f) doi<>j then begin:=u*(x-m[1]^[j]);:=d*(m[1]^[i]-m[1]^[j]);;:=(u/d);:=y+c*m[2]^[i];;(m[1],6*filesize(f)); freemem(m[2],6*filesize(f));(f);

end;

Процедура result имеет своими параметрами оба файла - для хранения данных для вычисления и файл со значениями х, для которых и производится вычисление. Эта процедура считает значение у(х) и записывает его в соответствующий файл. Именно эта процедура используется в главной программе. Предыдущая является вспомогательной.

procedure result;i:integer; m:mas;(n);i:=1 to filesize(n) do begin(n,m);(f,m[2],m[1]);(n,filepos(n)-1);(n,m);;

close(n);

end;

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

программа функция полином лагранж

procedure grafik;m:z; i,j,k,gd,gm,cx,cy,xo,yo:integer; koefy,koefx:integer;,buf2,q,p:real; w,e:mas; s:string[7];(f); reset(n);:=filesize(f)+filesize(n);(m[1],6*k); getmem(m[2],6*k);i:= 1 to filesize(f) do begin(f,w);[1]^[i]:=w[1];[2]^[i]:=w[2];;i:= filesize(f)+1 to k do begin(n,w);[1]^[i]:=w[1];[2]^[i]:=w[2];;i:=1 to k-1 doj:=i+1 to k doabs(m[1]^[i])>abs(m[1]^[j]) then begin:=m[1]^[i];:=m[2]^[i];[1]^[i]:=m[1]^[j];[2]^[i]:=m[2]^[j];[1]^[j]:=buf1;[2]^[j]:=buf2;;:=m[2]^[1]; p:=m[2]^[1]; xo:=0; yo:=0;i:=1 to k do begin -

определение количества отрицательных чисел для сохранения правильности расстановки осей

if m[1]^[i]q then q:=m[2]^[i];m[2]^[i]<p then p:=m[2]^[i];;(f,0); read(f,e);(f); close(n);:=round(400/(q-p)); -определение коэффициента по осям:=round(550/(m[1]^[k]-m[1]^[1]));:=40+xo*koefx; -определение центра координат

cy:=450-yo*koefy;:=detect;(gd,gm,'');(red);(40,cy,640,cy);{os' x}(cx,450,cx,0); {os' y}(640,cy,620,cy-2);(640,cy,620,cy+2);(cx,0,cx-2,20);(cx,0,cx+2,20);(white);(0,0,3);(cx+10+round((m[1]^[1]-m[1]^[1])*koefx),cy-10-round((m[2]^[1]-)*koefy));i:=2 to k do lineto(cx+10+round((m[1]^[i]-m[1]^[1])*koefx),cy-10-((m[2]^[i]-p)*koefy)); -рисование графика

moveto(cx,cy);(0,0,1);:=1;i<k do begin(cx+10+round((m[1]^[i]-m[1]^[1])*koefx),cy-2,cx+10+round((m[1]^[i]-[1]^[1])*koefx), cy+2);(m[1]^[i]:4:2,s);(cx+10+round((m[1]^[i]-m[1]^[1])*koefx)-8,cy+10,s);:=i+3;;:=1;i<k do begin(cx-2,cy-10-round((m[2]^[i]-p)*koefy),cx+2,cy-10-round((m[2]^[i]-)*koefy));(m[2]^[i]:4:2,s);(cx-35,cy-10-round((m[2]^[i]-p)*koefy),s);:=i+3;;(f);(yellow);(1,yellow);i:= 1 to filesize(f) do begin(f,w);(cx+10+round((w[1]-m[1]^[1])*koefx),cy-10-round((w[2]-)*koefy),3,3);;(f);(n);(red);(1,red);i:= 1 to filesize(n) do begin(n,w);(cx+10+round((w[1]-m[1]^[1])*koefx),cy-10-round((w[2]-)*koefy),2,2);;(n);(cx+450,cy-40);(getx,gety,2,2);(getx+5,gety-2,'-вычислено'); -изображение легенды(yellow);(1,yellow);(cx+450,cy-20,2,2);(getx+5,gety+18,'-дано');;;;.

Главная программа

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

Program main;crt,graph,inout,count;f,n:fm; a:char; c:integer; t:text; y:real;(f,'ish.pas');(n,'schet.pas');(t,'result.pas');;(1,1,80,25);(0);;(20,5,60,20);(7);(0);;;(' 1.Ввести данные вручную');

writeln(' 2.Считать из файла');

writeln(' 3.Просмотр данных');

writeln(' 4.Изменить данные');

writeln(' 5.Выполнить расчет');

writeln(' 6.Показать график');

writeln(' 7.Показать результат и записать в файл');

writeln(' 8. Выход');

writeln(' Выберите пункт меню');

readln(c);c of

:vvodklav(f,n);

:readfile(f,n);

:prosmotr(f,n);

:izmenenie(f,n);

:result(f,n);

:grafik(f,n);

:out(f,n,t);

:halt;;c=8;;.

Общие принципы работы программы

Данная программа предлагает пользователю ввести данные вручную или из файла, имя которого указывает сам пользователь. Данные можно корректировать, выбрав соответствующий пункт меню. После этого пользователь может просмотреть начальные данные. Вычисление происходит при выборе пункта 5 в меню программы. Просмотр вычисленных данных может быть произведен при помощи 7-го пункта меню программы. При выполнении этого пункта происходит также запись вычислений в текстовый файл result.pas. Пункт 6-ой переводит экран в графический режим и выводит изображение графика функции, заданной таблично, с отмеченными на нем точками. Пункт 8 осуществля