Цель: Разработать алгоритм и программу решения прикладной задачи – вычисления определённого интеграла или площади, ограниченной двумя линиями.
Задание: Проиллюстрировать один из численных методов вычисления определенного интеграла. Численные методы вычисления определенных интегралов
Математическая модель: Разработать алгоритм и программу решения прикладной задачи – моделирование движения брошенных с земли объектов.
1) Метод прямоугольников
- левых частей Ii = f(xi)dx
I = (f(x0) + f(x1) + ... + f(xn-1)) dx
Алгоритм: блок-схема
Программа:

Код программы:
const n = 200;
var h2,w2, a, b, xmin, xmax, ymin, ymax, n1, j:integer;
kx,ky, x, y, xsc, ysc, dx, s:real;
begin
h2:= round(Image1.Height/2);
w2:= round(Image1.Width/2);
Val(Edit5.Text, a);
Val(Edit6.Text, b);
//n1 for graph, n2 for a - b
Val(Edit7.Text, n1);
//Val(Edit8.Text, n2);
Val(Edit1.Text, xmin);
Val(Edit2.Text, xmax);
Val(Edit3.Text, ymin);
Val(Edit4.Text, ymax);
Image1.Canvas.Rectangle(0,0,w2*2,h2*2);
kx:=w2*2/(xmax-xmin);
ky:=h2*2/(ymax-ymin);
//ox, oy
Image1.Canvas.Pen.Color:=clgreen;
Image1.Canvas.MoveTo(0, round(h2*2+ymin*ky));
Image1.Canvas.LineTo(w2*2, round(h2*2+ymin*ky));
Image1.Canvas.MoveTo(round(-xmin*kx), 0);
Image1.Canvas.LineTo(round(-xmin*kx), h2*2);
x:=xmin;
dx:=(xmax-xmin)/n;
Image1.canvas.Pen.Color:=clRed;
while x '<' xmax do
begin
y:=(2*x*x+5*x)/(7+abs(pi*x));
xsc:= (x-xmin)*kx;
ysc:= h2*2-(y-ymin)*ky;
Image1.Canvas.ellipse(round(xsc),round(ysc),round(xsc+2),round(ysc+2));
x:=x+dx;
end;
Image1.Canvas.Pen.Color:=clgreen;
dx:=(b-a)/n1;
x:=a;
while (x<=(b-dx)) do
begin
y:=(2*x*x+5*x)/(7+abs(pi*x));
xsc:=(x-xmin)*kx;
ysc:=h2*2-(y-ymin)*ky;
Image1.Canvas.Rectangle(round(xsc), round(ysc), round((x-xmin+dx)*kx),round(h2));
x:=x+dx;
end;
x:=a;s:=0;
while x<=b-dx do
begin
s:=s+(2*x*x+5*x)/(7+abs(pi*x));
x:=x+dx;
end;
j:=round(dx*s);
Edit8.Text := IntToStr(j);
end;
Комментариев нет:
Отправить комментарий