program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
function func(x,k,d,R:real):real; {определение функции в точке x}
begin
if x<=-2*R+d then
func:=R
else
if x<d then
func:=-SQRT(abs(sqr(R)-sqr(x+(-R+d))))
else
if x<k then
func:=-x+2
else
if x<k+2*R then
func:=-sqrt(abs(sqr(R)-sqr(x+k+R)))
else
func:=0;
end;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=1 to n do
begin
x:=a+i*h; {приращение аргумента}
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
writeln(in1, in2, ' ');
end until (abs(In1-In2)<E);
writeln('Определенный интеграл функции, заданной графически, на интервале {',a,';',b,')');
writeln('Найдено и равно ',in1:0:2);
end.
program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
function func(x,k,d,R:real):real; {определение функции в точке x}
begin
if x<=-2*R+d then
func:=R
else
if x<d then
func:=-(R+SQRT(sqr(x+(-R+d))-sqr(R)))
else
if x<k then
func:=-x+2
else
if x<k+2*R then
func:=-(R+sqrt(sqr(x+k+R)-sqr(R)))
else
func:=0;
end;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=1 to n do
begin
x:=a+i*h; {приращение аргумента}
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
writeln(in1, in2, ' ');
end until (abs(In1-In2)<E);
end.
uses GraphABC;
var
r,d,k:real;
x:integer;
function F(x:real):real; {îïðåäåëåíèå ôóíêöèè â òî÷êå x}
begin
if x<=-2*R+d then f:=R
else
if x<d then f:=-(R+SQRT(sqr(x+(-R+d))-sqr(R)))
else
if x<k then f:=-x+k
else
if x<k+2*R then f:=-(R+sqrt(sqr(x+k+R)-sqr(R)))
else f:=0;
end;
begin
r:=20{write('enter R');readln(r)};
k:=10{write('enter K');readln(k)};
d:=k-r;
line(0,200,400,200);
line(200,0,200,400);
for x:=-100 to 100 do
SetPixel(200+x,200-round(F(x)),clRed)
end.
uses GraphABC;
var
r,d,k:real;
x:integer;
function F(x:real):real; {??????????? ??????? ? ????? x}
begin
if x<=-2*R+d then f:=R
else
if x<d then f:=-(R+SQRT(sqr(x+(-R+d))-sqr(R)))
else
if x<k then f:=-x+k
else
if x<k+2*R then f:=-(R+sqrt(sqr(x+k+R)-sqr(R)))
else f:=0;
end;
begin
r:=20{write('enter R');readln(r)};
k:=10{write('enter K');readln(k)};
d:=k-r;
line(0,200,400,200);
line(200,0,200,400);
circle(round(200-r+d),round(200-r),round(r));
circle(round(200+r+k),200,round(r));
for x:=-100 to 100 do
SetPixel(200+x,200-round(F(x)),clRed)
end.
function F(x:real):real; {??????????? ??????? ? ????? x}
begin
if x<=-2*R+d then f:=R
else if x<d then f:=R-sqrt(r*r-(x+r-d)*(x+r-d))
else if x<k then f:=-x+k
else if x<k+2*R then f:=-sqrt(r*r-(x-r-k)*(x-r-k))
else f:=0;
end;
for i:=1 to n do
begin
x:=a+i*h; {приращение аргумента}
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
function F(x:real):real;
begin
if x<=-2*R+d then f:=R
else if x<d then f:=R-sqrt(r*r-(x+r-d)*(x+r-d))
else if x<k then f:=-x+k
else if x<k+2*R then f:=-sqrt(r*r-(x-r-k)*(x-r-k))
else f:=0;
end;
function func(x,k,d,R:real):real;
begin
if x<=-2*R+d then func:=R
else
if x<d then func:=-(R+SQRT(sqr(x+(-R+d))-sqr(R)))сравните строчку
else
if x<k then func:=-x+k
else
if x<k+2*R then func:=-(R+sqrt(sqr(x+k+R)-sqr(R)))и эту строчку
else func:=0;
end;
program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
function func(x,k,d,R:real):real; {определение функции в точке x}
begin
if x<=-2*R+d then f:=R
else if x<d then f:=R-sqrt(r*r-(x+r-d)*(x+r-d))
else if x<k then f:=-x+k
else if x<k+2*R then f:=-sqrt(r*r-(x-r-k)*(x-r-k))
else f:=0;
end;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=0 to n-1 do
begin
x:=a+i*h; {приращение аргумента}
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E);
writeln('Результат rez=',rez);
end.
program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
function func(x,k,d,R:real):real; {определение функции в точке x}
begin
if x<=-2*R+d then func:=R
else if x<d then func:=R-sqrt(r*r-(x+r-d)*(x+r-d))
else if x<k then func:=-x+k
else if x<k+2*R then func:=-sqrt(r*r-(x-r-k)*(x-r-k))
else func:=0;
end;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=0 to n-1 do
begin
x:=a+i*h; {приращение аргумента}
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E);
writeln('Результат rez=',in1);
end.
program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1,fc:real;
i:integer;
n:longint;
if x<=-2*R+d then func:=R
else
if x<d then func:=R-SQRT(sqr(R)-sqr(x+R-d))
else
if x<k then func:=-x+k
else
if x<k+2*R then func:=-sqrt(sqr(R)-sqr(x-k-R))
else func:=0;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=0 to n-1 do
begin
x:=a+i*h; {приращение аргумента}
if x<=-2*R+d then fc:=R
else
if x<d then fc:=R-SQRT(sqr(R)-sqr(x+R-d))
else
if x<k then fc:=-x+k
else
if x<k+2*R then fc:=-sqrt(sqr(R)-sqr(x-k-R))
else fc:=0;
s:=s+func(x,k,d,r); {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E);
writeln('Результат rez=',In1);
end.
program p184598;
var
E,a,b,s,h,R,k,x,d,In2,In1,fc:real;
i:integer;
n:longint;
begin {ввод исходных данных}
In1:=0;
write('Введите величину разбиения n=');
readln(n);
write('Введите границы интервала вычислений a и b (a<b): ');
readln(a,B);
write('Введите радиус R (R>0): ');
readln(r);
write('Введите d (d<0): ');
readln(d);
write('Введите k (k>0): ');
readln(k);
write('Введите точность вычисления интеграла E (E>0): ');
readln(E);
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0;
for i:=0 to n-1 do
begin
x:=a+i*h; {приращение аргумента}
if x<=-2*R+d then fc:=R
else
if x<d then fc:=R-SQRT(sqr(R)-sqr(x+R-d))
else
if x<k then fc:=-x+k
else
if x<k+2*R then fc:=-sqrt(sqr(R)-sqr(x-k-R))
else fc:=0;
s:=s+fс; {сумма значений функции на отрезке [a,b]}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E);
writeln('Результат rez=',In1);
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.