program graf_fun;
uses crt;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
clrscr;
writeln ('Программа предназначена для вычисления значения интеграла');
writeln ('на интервале [a,b], для функции заданной графически');
writeln;
In1:=0;
repeat
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите радиус R (R>0): '); readln(r);
if R<=0 then writeln ('R должно быть больше 0. Повторите ввод! ');
until (R>0);
repeat
write('Введите d (d<0): '); readln(d);
if d>=0 then writeln ('d должно быть меньше 0. Повторите ввод! ');
until (d<0);
repeat
write('Введите k (k>0): '); readln(k);
if k<=0 then writeln ('k должно быть больше 0. Повторите ввод! ');
until (k>0);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
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 s:=s+R{сумма значений функции на отрезке [a,b]}
else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
else if x<k then s:=s-x+k
else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
else s:=s+0;
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2;
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E);
writeln('Результат rez=',In1);
end.
program graf_fun;
uses crt;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
clrscr;
writeln ('Программа предназначена для вычисления значения интеграла');
writeln ('на интервале [a,b], для функции заданной графически');
writeln;
In1:=0; {считаем что значение интеграла 0}
repeat
{далее следует блок кода ввода корректных данных в программу}
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите радиус R (R>0): '); readln(r);
if R<=0 then writeln ('R должно быть больше 0. Повторите ввод! ');
until (R>0);
repeat
write('Введите d (d<0): '); readln(d);
if d>=0 then writeln ('d должно быть меньше 0. Повторите ввод! ');
until (d<0);
repeat
write('Введите k (k>0): '); readln(k);
if k<=0 then writeln ('k должно быть больше 0. Повторите ввод! ');
until (k>0);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
{----------------------------------------------------------}
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0; {интеагральная сумма}
for i:=0 to n-1 do {расчет функции y=f(x) }
begin
x:=a+i*h; {приращение аргумента}
if x<=-2*R+d then s:=s+R{сумма значений функции на отрезке [a,b]}
else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
else if x<k then s:=s-x+k
else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
else s:=s+0;
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2; {наращиваем шаг}
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E); {проверка точности вычисления}
writeln('Результат rez=',In1);
end.
program graf_fun;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
writeln;
In1:=0; {считаем что значение интеграла 0}
repeat
{далее следует блок кода ввода корректных данных в программу}
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
{----------------------------------------------------------}
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0; {интеагральная сумма}
for i:=0 to n-1 do {расчет функции y=f(x) }
begin
x:=a+i*h; {приращение аргумента}
s:=cos(x)+s; {вот наша функция новая....не стал выность в отдельную процедуру}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2; {наращиваем шаг}
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E); {проверка точности вычисления}
writeln('Результат rez=',In1,' rez sin(1)=', sin(1));
end.
Введите величину разбиения n=10
Введите границу интервала вычислений a: 0
Введите границу интервала вычислений b: 1
Введите точность вычисления интеграла E (E>0): 0.000001
Результат rez=0.841471686250257 rez sin(1)=0.841470984807897
program graf_fun;
const k=2;
var
E,a,b,s,h,R,x,d,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
writeln;
In1:=0; {считаем что значение интеграла 0}
repeat
{далее следует блок кода ввода корректных данных в программу}
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
{----------------------------------------------------------}
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0; {интеагральная сумма}
for i:=0 to n-1 do {расчет функции y=f(x) }
begin
x:=a+i*h; {приращение аргумента}
s:=s-x+2; {вот наша функция новая....не стал выность в отдельную процедуру}
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2; {наращиваем шаг}
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E); {проверка точности вычисления}
writeln('Результат rez=',In1);
end.
Введите величину разбиения n=10
Введите границу интервала вычислений a: 0
Введите границу интервала вычислений b: 1
Введите точность вычисления интеграла E (E>0): 0.01
Результат rez=1.50625
begin
x:=a+i*h; {приращение аргумента}
if x<=-(2*R+abs(d)) then s:=s+R{сумма значений функции на отрезке [a,b]}
else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
else if x<k then s:=s+((k-x)/(k-d))*R
else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
else s:=s+0;
end;
Программа предназначена для вычисления значения интеграла
на интервале [a,b], для функции заданной графически
Введите величину разбиения n=1
Введите границу интервала вычислений a: -1
Введите границу интервала вычислений b: 1
Введите радиус R (R>0): 2
Введите d (d<0): -1
Введите k (k>0): 3
Введите точность вычисления интеграла E (E>0): 0.001
Результат rez=6.0009765625
program graf_fun;
var
E,a,b,s,h,R,k,x,d,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
writeln ('Программа предназначена для вычисления значения интеграла');
writeln ('на интервале [a,b], для функции заданной графически');
writeln;
In1:=0; {считаем что значение интеграла 0}
repeat
{далее следует блок кода ввода корректных данных в программу}
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите радиус R (R>0): '); readln(r);
if R<=0 then writeln ('R должно быть больше 0. Повторите ввод! ');
until (R>0);
repeat
write('Введите d (d<0): '); readln(d);
if d>=0 then writeln ('d должно быть меньше 0. Повторите ввод! ');
until (d<0);
repeat
write('Введите k (k>0): '); readln(k);
if k<=0 then writeln ('k должно быть больше 0. Повторите ввод! ');
until (k>0);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
{----------------------------------------------------------}
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0; {интеагральная сумма}
for i:=0 to n-1 do {расчет функции y=f(x) }
begin
x:=a+i*h; {приращение аргумента}
if x<=-2*R+d then s:=s+R{сумма значений функции на отрезке [a,b]}
else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
else if x<k then s:=s-x+k
else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
else s:=s+0;
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2; {наращиваем шаг}
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E); {проверка точности вычисления}
writeln('Результат rez=',In1);
end.
program graf_fun;
var
E,a,b,s,h,R,k,x,d,k1,b1,In2,In1:real;
i:integer;
n:longint;
begin {ввод исходных данных}
writeln ('Программа предназначена для вычисления значения интеграла');
writeln ('на интервале [a,b], для функции заданной графически');
writeln;
In1:=0; {считаем что значение интеграла 0}
repeat
{далее следует блок кода ввода корректных данных в программу}
write('Введите величину разбиения n='); readln(n);
if n<=0 then writeln ('n должно быть больше 0. Повторите ввод! ');
until (n>0);
repeat
write('Введите границу интервала вычислений a: '); readln(a);
write('Введите границу интервала вычислений b: '); readln(b);
if not (a<b) then writeln ('a должно быть меньше b. Повторите ввод! ');
until (a<b);
repeat
write('Введите радиус R (R>0): '); readln(r);
if R<=0 then writeln ('R должно быть больше 0. Повторите ввод! ');
until (R>0);
repeat
write('Введите d (d<0): '); readln(d);
if d>=0 then writeln ('d должно быть меньше 0. Повторите ввод! ');
until (d<0);
repeat
write('Введите k (k>0): '); readln(k);
if k<=0 then writeln ('k должно быть больше 0. Повторите ввод! ');
until (k>0);
repeat
write('Введите точность вычисления интеграла E (E>0): '); readln(E);
if E<=0 then writeln ('E должно быть больше 0. Повторите ввод! ');
until (E>0);
{----------------------------------------------------------}
repeat
begin
h:=(b-a)/n; {расчет шага изменения аргумента}
s:=0; {интеагральная сумма}
for i:=0 to n-1 do {расчет функции y=f(x) }
begin
x:=a+i*h; {приращение аргумента}
if x<=-2*R+d then s:=s+R{сумма значений функции на отрезке [a,b]}
else if x<d then s:=s+R-SQRT(sqr(R)-sqr(x+R-d))
else if x<k then
begin
k1:=-R/(k-d);
b1:=R-k1*d;
s:=s+k1*x+b1;
end
else if x<k+2*R then s:=s-sqrt(sqr(R)-sqr(x-k-R))
else s:=s+0;
end;
In2:=In1; {сохранение предыдущего значения интеграла}
n:=n*2; {наращиваем шаг}
In1:=h*s; {расчет интеграла}
end until (abs(In1-In2)<E); {проверка точности вычисления}
writeln('Результат rez=',In1);
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.