Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Текст программы. type matr=array[0..c,0..c] of real;






program newton;

uses crt, graph;

const c=10;

type matr=array[0..c, 0..c] of real;

mas=array[0..c] of real;

var x, y, koef_polinoma: mas;

a: matr;

b: mas;

d1: real;

n: integer;

fail, fail1, ekran: text;

procedure Vvod(var kolvo: integer; var uzel, fun: mas);

{Процедура осуществляет ввод данных: пользователь вводит с клавиатуры

узлы интерполяции и значения функции в них. Также определяется количество узлов.}

var code, i: integer; s: string;

begin

writeln('введите количество узлов');

readln(kolvo);

kolvo: =kolvo-1;

for i: =0 to kolvo do

begin

repeat

writeln('введите ', i, '-й узел интерполирования');

readln(s);

val(s, uzel[i], code);

until code=0;

repeat

writeln('введите значение функции, соответствующее данному узлу');

readln(s);

val(s, fun[i], code);

until code=0;

end;

end;

procedure newt(var kolvo: integer; D: real; var koef, uzel, fun: mas)

var L, P: real;

begin

L: =fun[0];

P: =1;

for i: =1 to kolvo do

begin

P: =P*(D-uzel[i-1]);

for j: =1 to kolvo-i do

begin

fun[j]: =(fun[j-1]-fun[j])/(uzel[j+i]-uzel[i])

end;

koef[i]: =fun[0];

L: =L+P*fun[0];

end;

end;

procedure newt(var kolvo: integer; D: real; var koef, uzel, fun: mas) {процедура интерполяции функции методом Ньютона}

var L, P: real;

begin

L: =fun[0];

P: =1;

for i: =1 to kolvo do

begin

P: =P*(D-uzel[i-1]);

for j: =1 to kolvo-i do

begin

fun[j]: =(fun[j-1]-fun[j])/(uzel[j+i]-uzel[i])

end;

koef[i]: =fun[0];

L: =L+P*fun[0];

end;

end;

procedure zapisb(koef: mas; uzel, fun: mas; kolvo: integer; var f: text);

{В данной процедуре осуществляется запись в файл данных и результата}

var i: integer;

begin

assign(f, 'interpol.txt');

rewrite(f);

for i: =0 to kolvo do writeln(f, 'x= ', uzel[i]: 8: 4, ' f(x)=', fun[i]: 8: 4);

writeln(f, 'Интерполяционный полином');

write(f, 'p(x)=', koef[0]: 8: 4);

for i: =1 to kolvo do if i> 1 then write (f, '+(', koef[i]: 8: 4, ')*x^', i)

else write (f, '+(', koef[i]: 8: 4, ')*x');

close(f);

end;

procedure vblvod(var f1, f2: text);

{Вывод содержимого записанного файла на экран}

var s1: string;

begin

clrscr;

assign(f1, 'interpol.txt');

reset(f1);

assigncrt(f2);

rewrite(f2);

while not eof(f1) do

assigncrt(f2);

rewrite(f2);

while not eof(f1) do

begin

Readln(f1, s1);

writeln(f2, s1);

end;

close(f2);

close(f1);

end;

procedure grafik(kolvo: integer; uzlbl, funktsiya: mas; c: mas);

{Построение графика полученной функции}

var driver, mode, Err, a1, b1, z, i, j: integer; s: string; xt, yt: real;

begin

driver: =detect;

InitGraph(driver, mode, 'd: \tp7\bp\bgi');

err: =graphresult;

if err< > grok then writeln('Ошибка при инициализации графического режима')

else

begin

Setcolor(9);

line(320, 0, 320, 480);

line(0, 240, 640, 240);

settextstyle(smallfont, horizdir, 3);

setcolor(10);

outtextxy(320, 245, '0');

a1: =0;

b1: =480;

z: =-10;

for i: =0 to 20 do

begin

if z< > 0 then

begin

str(z, s);

setcolor(10);

outtextxy(a1, 245, s);

outtextxy(325, b1, s);

setcolor(8);

line(0, b1, 640, b1);

line(a1, 0, a1, 480);

end;

outtextxy(325, b1, s);

setcolor(8);

line(0, b1, 640, b1);

line(a1, 0, a1, 480);

end;

a1: =a1+32;

b1: =b1-24;

z: =succ(z);

end;

setcolor(5);

for i: =0 to kolvo do

begin

xt: =uzlbl[i];

yt: =funktsiya[i];

putpixel(round(320+xt*32), round(240-yt*24), 5);

end;

moveto(round(320+uzlbl[0]*32), round(240-funktsiya[0]*24));

setcolor(11);

for i: =0 to kolvo do

begin

xt: =uzlbl[i];

yt: =0;

for j: =0 to kolvo do yt: =yt+c[j]*vozvedenie_v_stepenb(uzlbl[i], j);

lineto(round(320+xt*32), round(240-yt*24));

moveto(round(320+xt*32), round(240-yt*24));

end;

readln;

closegraph;

end;

end;

{Основная часть программы}

BEGIN

CLRSCR;

Writeln('Программа осуществляет интерполирование функции, заданной в узлах');

Vvod(N, X, Y);

writeln(‘введите значение промежуточной точки’);

readln(d1);


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал