- •Программа:
- •Б Начало лок-схема:
- •S методом прямоугольников
- •Нахождение центра окружности
- •Нахождение центра эллипса
- •S методом трапеции
- •Вывод в Табличной форме
- •Нахождение необходимым точек для закрашенной области а
- •S методом прямоугольников
- •Ввод количества разбиений n1, n2, n3
- •S методом трапеции
- •S методом Симпсона
- •Сумма всех результатов формулы, нахождение площади
- •S методом Симпсона
Лабораторная работа №5.
Выполнил: Остальцев П.В. ТК-11. Вариант №77.
Задания:
1. Разработать программу подсчёта площади фигуры методом « Прямоугольников».
2. Разработать программу подсчёта площади фигуры методом «Трапеции».
3. Результаты вывести в виде таблицы.
Описание выполнимых действий:
Вычисление площади методом прямоугольников.
Вычислим площадь закрашенной области А
Выбираем в качестве параметра сканирования переменную x1.
Определяем её начальное значение xA1 и конечное xa2 значения. В нашей задаче xa1=0 , xa2 мы должны вычислить, как левый корень уравнения эллипса при y=0.Ещё у нам нужна точка пересечения окружности и эллипса xb2 и её нам необходимо найти, т.к. после это точки вычесление плозади пойдёт по уравнению эллипса.
{tochki oblasti A}
ba:=Bel*Bel;
bb:=-2*X0el*Bel*Bel;
bc:=((Yel-Y0el)*(Yel-Y0el)*Ael*Ael)-(Ael*Ael*Bel*Bel)+(X0el*X0el*Bel*Bel);
xa2:=(-1*bb-sqrt(bb*bb-4*ba*bc))/(2*ba);
xa1:=0;
c
Вариант 77
a:=1;cb:=-2*Y0ok;
cc:=Y0ok*Y0ok+(xa1-X0ok)*(xa1-X0ok)-(Rok*Rok);
ya1:=(-1*cb-sqrt(cb*cb-4*ca*cc))/(2*ca);
da:=(-4*Ael*Ael*Bel*Bel-4*Ael*Ael*Ael*Ael);
db:=(8*X0el*Bel*Bel*Ael*Ael-8*X0ok*Ael*Ael*Ael*Ael);
dc:=(-4*X0el*X0el*Bel*Bel*Ael*Ael+4*Ael*Ael*Ael*Ael*Bel*Bel+4*X0ok*X0ok*Ael*Ael*Ael*Ael-4*Rok*Rok*Ael*Ael*Ael*Ael);
xb2:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
ea:=1;
eb:=-2*Y0ok;
ec:=Y0ok*Y0ok+(xb2-X0ok)*(xb2-X0ok)-(Rok*Rok);
yb2:=(-1*eb-sqrt(eb*eb-4*ea*ec))/(2*ea);
Задаем переменной начальное значение x1=xA2.
x1:=xa2;
Прописываем ввод переменных, где пользователю предстоит задать число разбиений, N1, N2, N3
Вычисляем величину шага сканирования Dx или ширину элементарного прямоугольника. В нашем случае Dx1=(xB-xA)/N.
dx1:=(xb1-xa1)/N1;
Задаём начальное значение 0 переменной, в которой мы будем суммировать площади прямоугольников разбиения: Spr=0.
Так же находим другие неизвестные но нужные нам величины- число разбиений до и после точки пересечения окружности и эллипса.
N1xb2:=((N1/(xa1-xa2))-(N1/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N1+i3;
На этом подготовительные операции можно считать завершёнными. В нашем случае обозначим площадь за Spr.
SprN1 := 0;
Входим в цикл. Подставим текущее значение x в формулу окружности и вычисляем значение y. Естественно, формулу для этого требуется преобразовать. Вычисляем площадь текущего i-го прямоугольника: Ds=Dx*y. И не забываем про точку перехода из одной функции в другую.
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
s1N1:=abs(dx1*y1);
Добавляем площадь S вычисляем площадь s1n1:
SprN1:=SprN1+s1N1;
Делаем шаг в цикле. Для этого параметр x увеличиваем на Dx1.
x1:=x1+dx1;
Выполняем программу до тех пор пока x не достигнет конечного значения. Т.К. количество шажков на отрезке [xA1, xB1] нам известно из dX1 := (Xa1-Xa2) / N1, то выполним ровно это количество шагов. Данное условие записывается в условии оператора повтора.
for i1 := 0 to N1 do
сохраняем полученный результат в независимую переменную.
SprN1s:=SprN1;
Нам не обходимо так же проделать эти действия и с остальным количеством разбиений.
Полученные результаты площадей являются приближёнными решениями задач. Далее используем это значение для дальнейшей обработки – вывода данных в соответствующих ячейках таблицы.
Вычисление площади методом прямоугольников.
Вычислим площадь закрашенной области А.
Действия повторяются до самого вычисления плозади i той трапеции
Задаём начальное значение переменной yP, в которой будем хранить значение функции y=f(x), вычисленное на предыдущем шаге. Это освобождает нас от необходимости повторных вычислений на каждом шаге итерации.
yp:=y2;
Входим в цикл
Находим значение средней линии трапеции.
Yt := (Yp + Y1) / 2;
Вычисляем площадь текущей i-й трапеции:
S1:=dx1*yt;
Добавляем в переменную S вычисленную площадь Ds:
StrN1:=StrN1+s1;
Выполняем программу до тех пор пока x не достигнет конечного значения. Т.К. количество шажков на отрезке [xA2, xB2] нам известно из dX2 := (XB2-XA2) / N2, то выполним ровно это количество шагов. Данное условие записывается в условии оператора повтора.
for i2 := 0 to N2 do
Вычисление площади методом Симпсона.
Вычислим площадь закрашенной области А.
Используем ранее полученные данные такие как N1, N2, N3, dx1, xa1, xa2, xb2 и т.д.
А так же сбросим переменные и повторим некоторые действия.
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N1;
Simp:=0;
SimpN1s:=0;
N1xb2:=((N1/(xa1-xa2))-(N1/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N1+i3;
Входим в цикл
for i1:=0 to (i3) do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f1a:=Ael*Ael;
f1b:=-2*Y0el*Ael*Ael;
f1c:=(((x1-1)-X0el)*((x1-1)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y11:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f2a:=Ael*Ael;
f2b:=-2*Y0el*Ael*Ael;
f2c:=(((((x1-1)+x1)/2)-X0el)*((((x1-1)+x1)/2)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y21:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
Находим площадь i-ой координаты методом Сипсона
si1:=abs(y11+4*y21+y1);
делаем шаг
x1:=x1+dx1;
сохраняем в переменную
Simp:=Simp+si1;
Далее после точки пересечения по функции окружности
for i2:=0 to N11 do
begin
Точно так же но для круга.
Находим площаль
si1:=abs(y11+4*y21+y1);
Simp:=Simp+si1;
И завершаем метод симпсона домножаю сумму всех координат на dx1/6 (h)
SimpN1s:=(dx1/6)*simp;
Выводи в табличной форме виде
-----------------------------------------------
| Число разбиений | Результаты |
| |---------------------------|
| n | C | D | E |
| --------------- |---------------------------|
| n1 | C1 | D1 | E1 |
| n2 | C2 | D2 | E2 |
| n3 | C3 | D3 | E3 |
-----------------------------------------------
C - метод прямоугольников;
D - метод трапеций;
E - метод Симпсона.
Программа:
program laba5ost;
const Rok=23;Ael=25;Bel=35;Xok=-28;Yok=0;Xel=30;Yel=0;Y1ok=-29;Y1el=-39;
Var x1,y1,xa1,xb1,dx1,s1N1,SprN1,xa2,xb2,yp,yt,Str,X0ok,Y0ok,X0el,Y0el,aa,ab,ac,ba,bb,bc,ca,
cb,cc,da,db,dc,ea,eb,ec,fa,fb,fc,ga,gb,gc,ya1,yb2,N1xb2,SprN1s,SprN2s,SprN3s,StrN1,StrN1s,StrN2s,StrN3s,
Simp,si1,SimpN1s,SimpN2s,SimpN3s,f1a,f1b,f1c,f2a,f2b,f2c,y11,y21,g1a,g1b,g1c,g2a,g2b,g2c:real;
N1,N2,N3,i1,i2,i3,N11:integer;
begin
{centr okr}
Y0ok:=Y1ok+Rok;
X0ok:=(-1*(-2*Xok)+sqrt(sqr(-2*Xok)-4*(sqr(Yok-Y0ok)-sqr(Rok)+sqr(Xok))))/2;
{centr elipsa}
Y0el:=Y1el+Bel;
aa:=Bel*Bel;
ab:=-2*Xel*Bel*Bel;
ac:=Xel*Xel*Bel*Bel+(Yel-Y0el)*(Yel-Y0el)*Ael*Ael-Ael*Ael*Bel*Bel;
x0el:=(-ab-sqrt(ab*ab-4*aa*ac))/(2*aa);
{tochki oblasti A}
ba:=Bel*Bel;
bb:=-2*X0el*Bel*Bel;
bc:=((Yel-Y0el)*(Yel-Y0el)*Ael*Ael)-(Ael*Ael*Bel*Bel)+(X0el*X0el*Bel*Bel);
xa2:=(-1*bb-sqrt(bb*bb-4*ba*bc))/(2*ba);
xa1:=0;
ca:=1;
cb:=-2*Y0ok;
cc:=Y0ok*Y0ok+(xa1-X0ok)*(xa1-X0ok)-(Rok*Rok);
ya1:=(-1*cb-sqrt(cb*cb-4*ca*cc))/(2*ca);
da:=(-4*Ael*Ael*Bel*Bel-4*Ael*Ael*Ael*Ael);
db:=(8*X0el*Bel*Bel*Ael*Ael-8*X0ok*Ael*Ael*Ael*Ael);
dc:=(-4*X0el*X0el*Bel*Bel*Ael*Ael+4*Ael*Ael*Ael*Ael*Bel*Bel+4*X0ok*X0ok*Ael*Ael*Ael*Ael-4*Rok*Rok*Ael*Ael*Ael*Ael);
xb2:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
ea:=1;
eb:=-2*Y0ok;
ec:=Y0ok*Y0ok+(xb2-X0ok)*(xb2-X0ok)-(Rok*Rok);
yb2:=(-1*eb-sqrt(eb*eb-4*ea*ec))/(2*ea);
{pryamougolnik N1}
x1:=xa2;
writeln('Vvedite N1');readln(N1);
writeln('Vvedite N2');readln(N2);
writeln('vvedite N3');readln(N3);
dx1:=(xa1-xa2)/N1;
SprN1:=0;
N1xb2:=((N1/(xa1-xa2))-(N1/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N1+i3;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
SprN1s:=SprN1;
end;
{N2}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N2;
SprN1:=0;
N1xb2:=((N2/(xa1-xa2))-(N2/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N2+i3;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
SprN2s:=SprN1;
end;
{N3}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N3;
SprN1:=0;
N1xb2:=((N3/(xa1-xa2))-(N3/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N3+i3;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
s1N1:=abs(dx1*y1);
SprN1:=SprN1+s1N1;
x1:=x1+dx1;
SprN3s:=SprN1;
end;
{trapecii}
{N1}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N1;
Str:=0;
N1xb2:=((N1/(xa1-xa2))-(N1/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N1+i3;
yp:=y1;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
yp:=y1;
Str:=Str+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
Str:=Str+s1N1;
yp:=y1;
x1:=x1+dx1;
StrN1s:=Str;
end;
{N2}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N2;
Str:=0;
N1xb2:=((N2/(xa1-xa2))-(N2/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N2+i3;
yp:=y1;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
yp:=y1;
Str:=Str+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
Str:=Str+s1N1;
yp:=y1;
x1:=x1+dx1;
StrN2s:=Str;
end;
{N3}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N3;
Str:=0;
N1xb2:=((N3/(xa1-xa2))-(N3/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N3+i3;
yp:=y1;
for i1:=0 to i3 do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
yp:=y1;
Str:=Str+s1N1;
x1:=x1+dx1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
yt:=(yp+y1)/2;
s1N1:=abs(dx1*yt);
Str:=Str+s1N1;
yp:=y1;
x1:=x1+dx1;
StrN3s:=Str;
end;
{simpson}
{N1}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N1;
Simp:=0;
SimpN1s:=0;
N1xb2:=((N1/(xa1-xa2))-(N1/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N1+i3;
for i1:=0 to (i3) do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f1a:=Ael*Ael;
f1b:=-2*Y0el*Ael*Ael;
f1c:=(((x1-1)-X0el)*((x1-1)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y11:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f2a:=Ael*Ael;
f2b:=-2*Y0el*Ael*Ael;
f2c:=(((((x1-1)+x1)/2)-X0el)*((((x1-1)+x1)/2)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y21:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
si1:=abs(y11+4*y21+y1);
x1:=x1+dx1;
Simp:=Simp+si1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g1a:=1;
g1b:=-2*Y0ok;
g1c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y11:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g2a:=1;
g2b:=-2*Y0ok;
g2c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y21:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
x1:=x1+dx1;
si1:=abs(y11+4*y21+y1);
Simp:=Simp+si1;
SimpN1s:=(dx1/6)*simp;
end;
{N2}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N2;
Simp:=0;
SimpN2s:=0;
N1xb2:=((N2/(xa1-xa2))-(N2/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N2+i3;
for i1:=0 to (i3) do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f1a:=Ael*Ael;
f1b:=-2*Y0el*Ael*Ael;
f1c:=(((x1-1)-X0el)*((x1-1)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y11:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f2a:=Ael*Ael;
f2b:=-2*Y0el*Ael*Ael;
f2c:=(((((x1-1)+x1)/2)-X0el)*((((x1-1)+x1)/2)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y21:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
si1:=abs(y11+4*y21+y1);
x1:=x1+dx1;
Simp:=Simp+si1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g1a:=1;
g1b:=-2*Y0ok;
g1c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y11:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g2a:=1;
g2b:=-2*Y0ok;
g2c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y21:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
x1:=x1+dx1;
si1:=abs(y11+4*y21+y1);
Simp:=Simp+si1;
SimpN2s:=(dx1/6)*simp;
end;
{N3}
x1:=xa2;
y1:=0;
s1N1:=0;
i3:=0;
i1:=0;
i2:=0;
N11:=0;
dx1:=0;
dx1:=(xa1-xa2)/N3;
Simp:=0;
SimpN3s:=0;
N1xb2:=((N3/(xa1-xa2))-(N3/(xa1-xb2)))*(xb2-xa2);
i3:=round(N1xb2);
N11:=N3+i3;
for i1:=0 to (i3) do
begin
fa:=Ael*Ael;
fb:=-2*Y0el*Ael*Ael;
fc:=((x1-X0el)*(x1-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y1:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f1a:=Ael*Ael;
f1b:=-2*Y0el*Ael*Ael;
f1c:=(((x1-1)-X0el)*((x1-1)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y11:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
f2a:=Ael*Ael;
f2b:=-2*Y0el*Ael*Ael;
f2c:=(((((x1-1)+x1)/2)-X0el)*((((x1-1)+x1)/2)-X0el)*Bel*Bel)-(Ael*Ael*Bel*Bel)+(Y0el*Y0el*Ael*Ael);
y21:=(-1*db+sqrt(db*db-4*da*dc))/(2*da);
si1:=abs(y11+4*y21+y1);
x1:=x1+dx1;
Simp:=Simp+si1;
end;
for i2:=0 to N11 do
begin
ga:=1;
gb:=-2*Y0ok;
gc:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y1:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g1a:=1;
g1b:=-2*Y0ok;
g1c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y11:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
g2a:=1;
g2b:=-2*Y0ok;
g2c:=sqr(Y0ok)+sqr(x1-X0ok)-sqr(Rok);
y21:=(-1*cb+sqrt(sqr(cb)-4*ca*cc))/(2*ca);
x1:=x1+dx1;
si1:=abs(y11+4*y21+y1);
Simp:=Simp+si1;
SimpN3s:=(dx1/6)*simp;
end;
writeln('------------------------------------------------------------------');
writeln('| chislo razbienii | rezultati |');
writeln('| |-----------------------------------------');
writeln('| N | pramoug | trapecia | simpson |');
writeln('------------------------------------------------------------------');
writeln('| ',N1,' | ',SprN1s:10:5,' | ',StrN1s:10:5,' | ',SimpN1s:10:5,' |');
writeln('| ',N2,' | ',SprN2s:10:5,' | ',StrN2s:10:5,' | ',SimpN2s:10:5,' |');
writeln('| ',N3,' | ',SprN2s:10:5,' | ',StrN3s:10:5,' | ',SimpN3s:10:5,' |');
writeln('------------------------------------------------------------------');
end.