Помогите пожалуйста! Нужно в паскале посчитать объем вращения гиперболы относительно оси х на промежутке от х1 до х2. Y=1/х.
Answers & Comments
srzontmp
{ объем фигуры вращения y=f(x) = 1/x x0 = 1, x1 = 2 } var i: integer; v,h,x0,f: real; begin v:=0; x0:=1; h:=0.001; for i:=1 to 1000 do begin f:=(1/sqr(x0+(i-1)*h)+1/sqr(x0+i*h))/2; v:=v+f*h; end; v:=2*pi*v; writeln('объем = ',v); writeln('точное значение V = ',pi); end.
0 votes Thanks 0
srzontmp
Если x1 и x2 - оба отрицательные, то не смущает, x=0 - точка разрыва, поэтому, по определению, ее быть не должно, точно так же как и x1 и x2 с разными знаками.
srzontmp
Цикл на 1000 - для точности в 6 знаков после запятой, если поставить 100, будет 4 знака. В условии не уточнено, с какой точностью проводить вычисления, поэтому по - максимуму. Формула для вычисления объема тел вращения (если не ошибаюсь) выводится в 11 классе. Вывод тривиален. Интервал разбивается вертикальными прямыми на подинтервалы и на каждом интервале находится объем кругового цилиндра, получим пи*y^2*L, где L - длина интервала, после суммирования, а это и есть интеграл. Насчет программы.
srzontmp
Я бы вообще не рассматривал эту задачу как вычислительную, т.к. есть аналитическое решение, но раз в условии сказано, что нужно в Паскале посчитать, значит на Паскале.
srzontmp
А кокой смысл мучить компьютер, если можно на калькуляторе посчитать?
Answers & Comments
var i: integer;
v,h,x0,f: real;
begin
v:=0; x0:=1; h:=0.001;
for i:=1 to 1000 do
begin
f:=(1/sqr(x0+(i-1)*h)+1/sqr(x0+i*h))/2;
v:=v+f*h;
end;
v:=2*pi*v;
writeln('объем = ',v);
writeln('точное значение V = ',pi);
end.