Смекни!
smekni.com

Численные методы решения типовых математических задач (стр. 8 из 8)

line(i,j,i,j1);

{Сам график}

setcolor(14);

setlinestyle(0,0,3);

t:=(b-a)/n;

k:=0;

j1:=trunc(480*(-y2)/(y1-y2));

for i:=0 to 640 do begin

x:=(x2-x1)*i/640+x1;

y:=f(x);

j:=trunc(480*(y-y2)/(y1-y2));

if j>479 then j:=479;

if j<0 then j:=0;

setcolor(14);

setlinestyle(0,0,3);

if i=0 then moveto(i,j) else lineto(i,j);

setcolor(8);

if (x>t*k+a) then begin

k:=k+1;

setcolor(15);

end;

k:=0;

j1:=trunc(480*(-y2)/(y1-y2));

for i:=0 to 640 do begin

x:=(x2-x1)*i/640+x1;

y:=f(x);

j:=trunc(480*(y-y2)/(y1-y2));

if j>479 then j:=479;

if j<0 then j:=0;

setcolor(14);

setlinestyle(0,0,3);

if i=0 then moveto(i,j) else lineto(i,j);

setcolor(8);

if (x>t*k+a) then begin

k:=k+1;

setcolor(15);

end;

setlinestyle(0,0,1);

if (x>=a) and (x<=b) then line(i,j,i,j1);

end;

setcolor(15);

y:=f(b);

i:=trunc(640*(b-x1)/(x2-x1));

j:=trunc(480*(y-y2)/(y1-y2));

line(i,j,i,j1);

setlinestyle(0,0,1);

setcolor(12);

{Подписи}

setcolor(13);

str(a:6:6,s);

s:='a='+s;

i:=trunc(640*(a-x1)/(x2-x1));

outtextxy(i,j1+2,s);

str(b:6:6,s);

s:='b='+s;

i:=trunc(640*(b-x1)/(x2-x1));

outtextxy(i-10,j1+2,s);

setcolor(15);

y:=0;

j:=trunc(480*(y-y2)/(y1-y2));

outtextxy(5,j+3,'y=0');

readkey;

end;

procedure equateit(eps:real);

var integral,a,b:real;i,j:integer;

begin

a:=0;b:=1;

Integral:=gauss(a,b,eps,gauss_calc(a,b));

writeln('Интеграл = ',integral:0:6);

readkey;

i:=vga;j:=vgahi;

initgraph(i,j,'..&bsol;bgi');

outputgraph(a,(b+a)/2,a,b,1);

outputgraph((b+a)/2,b,a,b,1);

outputgraph(a,b,a,b,1);

closegraph;

end;

var sel:integer;

eps:real;

begin

repeat

clrscr;

sel:=main_menu;

case sel of

1:begin

aaa:=0.1;bbb:=1.2;kkk:=10;

eps:=1e-4;

equateit(eps);

end;

2:begin

inputnum('a',aaa,0,1000);

inputnum('b',bbb,-1000,1000);

inputnum('k',kkk,-1000,1000);

inputnum('точность',eps,0.000000001,1);

equateit(eps);

end;

end;

until sel=0;

end.

i:=vga;j:=vgahi;

initgraph(i,j,'..&bsol;bgi');

outputgraph(a,(b+a)/2,a,b,1);

outputgraph((b+a)/2,b,a,b,1);

outputgraph(a,b,a,b,1);

closegraph;

end;

var sel:integer;

eps:real;

begin

repeat

clrscr;

sel:=main_menu;

case sel of

1:begin

aaa:=0.1;bbb:=1.2;kkk:=10;

eps:=1e-4;

equateit(eps);

end;

2:begin

inputnum('a',aaa,0,1000);

inputnum('b',bbb,-1000,1000);

inputnum('k',kkk,-1000,1000);

inputnum('точность',eps,0.000000001,1);

equateit(eps);

end;

end;

until sel=0;

end.

4.7 Тестовый пример

Используя семиточечную формулу вычислить интеграл

.

(Точное решение - 2,3201169227)


Заключение

В данной работе описаны и реализованы с помощью блок-схем и языка программирования Turbo Pascal базовые задачи вычислительной математики: решение систем линейных алгебраических уравнений, полиномиальная интерполяция, среднеквадратичное приближение функции, численное интегрирование функций. Представленные методы и реализованные алгоритмы достаточно просты, но в тоже время эффективны для большого количества задач.


Список использованных источников

1. Бахвалов Н., Жидков Н., Кобельков Г. Численные методы. М.: Лаборатория базовых знаний, 2001. 632 с.

2. Вержбицкий В.М., Численных методы. Линейная алгебра и нелинейные уравнения. М.: Высшая школа, 2000. 266 с.

3. Вержбицкий В.М., Основы численных методов. М.: Высшая школа, 2002. 840 с.

4. Пирумов У.Г. Численные методы . М.: Дрофа, 2003. 224 с.

5. Буслов В.А., Яковлев С.Л. Яисленные методы и решение уравнений. Санкт-Петербург, 2001. 44 с.

6. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: Нолидж, 1997. – 616 с.