Я пытаюсь приблизить объем конуса с помощью программы MATLAB, которая использует n одинаковых по высоте дисков (цилиндров) с уменьшающимися радиусами. Самый большой диск снизу, следующий сверху и тот, у которого наименьший радиус сверху. У меня нет проблем с получением входных данных, но я не могу понять, как рассчитать громкость с использованием дисков. Для цикла или цикла while?
Кстати, объем диска равен pi * r * r * h, h - высота, r - радиус
Следующим шагом мне нужно рассчитать количество дисков, необходимое для того, чтобы процент ошибок был меньше 1%
Это все, что я написал до сих пор, он прекрасно работает при расчете громкости с конечным числом дисков, но я не могу понять, как рассчитать количество дисков, чтобы процент ошибок был менее 1%. Буду признателен за помощь. Спасибо !!
h=input('Enter height: ');
if (h<=0)
disp('Height must be positive!');
else
r=input('Enter base radius: ');
if (r<=0)
disp('Base radius must be positive!');
else
n=input('Enter number of discs: ');
ne=n;
while n>0 || n~=0
if n>0 && (mod(n,1))==0
Vcone=(1/3)*(pi*r*r*h);
VTotal=0;
for i=n:-1:1
rEachDisc=r*(((i-1)*h)/n)/h;
VEachDisc=(pi*rEachDisc*rEachDisc)*(h/n);
VTotal=VTotal+VEachDisc;
end
Vapp=VTotal+((pi*r*r)*(h/n));
eror=abs((Vcone-Vapp)/Vcone*100);
fprintf('For n=%g, approximated volume: %g ; error: %g%%\n',n,Vapp,eror)
else
disp('This is not a positive integer!');
end
n=input('Enter number of discs: ');
end
end
end
VTotal=0;
t=1;
Vcone=(1/3)*(pi*r*r*h);
for i=ne:-1:1
rEachDisc=r*(((i-1)*h)/ne)/h;
VEachDisc=(pi*rEachDisc*rEachDisc)*(h/ne);
VTotal=VTotal+VEachDisc;
Vapp=VTotal+((pi*r*r)*(h/ne));
eror=abs((Vcone-Vapp)/Vcone*100);
if eror==1
fprintf('We need at least %g discs to approximate the volume with less than 1%% error.',ne);
break
end
end