Obliczanie powierzchni bocznej stożka

0

Napisałem prosty szybkoliczący skrypt. Ma on liczyć pole powierzchni bocznej bryły obrotowej. Na test wziąłem stożek o wysokości 5 i promieniu 5 czyli pbocznej powinien wyjść około 111,0719 a skrypt liczy inaczej Myślę ,że sknociłem coś we wzorze . Oto kod :

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
 var
 xmax,X,Y,pole: extended ;
 poletxt:string;
begin
pole:=0;
writeln(' /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\');
writeln('<  Program kreciolek Copyright by Adam Xxxxxx  >');
writeln('< Obliczanie pola powierzchni dla funkcji X=Y  >');
writeln(' \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/');
writeln('-------------------------------------------');
writeln('Podaj wartość Xmax >');
readln(xmax);

while x<xmax do begin
X:=x+0.0000001;
y:=x; //wzór;
pole:=Pole+(2*pi*y*0.0000001);
end;
poletxt:=currToStr(pole);
writeln(poletxt);
readln;
end. 

metodą dzielenia stożka na plasterki (małe walce) i sumowaniem pól chciałem policzyć , ale wychodzi zawsze coś koło 75. Dla czego ? I poza tym konwersja currtostr mi nie pasuje, gdy stosuję armatę w postaci Extended

0

Masz skiszony wzór na pole. To jest stożek, gdy dzielisz go na plasterki, to powierzchnia każdego takiego plastereka ma długość 2pix, ale szerokość jest inna niż krok całkowania. Zeby ją wyznaczyć musisz pokombinować trochę z kątami.

0

Problem jest taki ,że od nauczyciela dostanę jakiś wymyślny wzór (jakikolwiek np.: Y=X*2-4) i ma on liczyć powierzchnię takiego pogiętego stożka (choinka ,wazonik etc) Jak powinien wyglądać taki wzór do ćwiartowania i liczenia ? Oczywiście przez zmniejszenie szerokości takiego plasterka -zwiększyć dokładność... Podsumowując : To nie musi być stożek ! Wzór stożka podałem tlko jako test , czy skrypt dobrze liczy...

0
begin
   krok:=0.000001;
   pole:=0;
   x:=0;
   while x<xmax do begin
     X:=x+krok;
     /// wyliczenie promiena stożka na zadanej wysokości od podstawy 
     /// za pomocą funkcji promien(x)
     y:=promien(x);
     pole:=Pole+(2*pi*y*krok);
   end;
   poletxt:=currToStr(pole);
   writeln(poletxt);
   readln;
end. 
0

a w ogólnym wariancie to miał byś taki algorytm

x:=0;
dx:=krok_calkowania;
pole:=0;
while x<wysokosc_bryly ; 
begin 
   pole :=pole+dx*obwod_bryly(x);
   x:=x+dx;
end;

funkcję obwod_bryly(x) budujesz wg geometrycznych parametrów bryły

0
grzegorz_so napisał(a):
 pole:=Pole+(2*pi*y*krok);

Ten wzór też jest zły.

0

Zapomniałem się zalogować i nie mogę edytować.

programista97 napisał(a):

Problem jest taki ,że od nauczyciela dostanę jakiś wymyślny wzór (jakikolwiek np.: Y=X*2-4) i ma on liczyć powierzchnię takiego pogiętego stożka
Jaki pogięty stożek? Przecież to równanie prostej.

programista97 napisał(a):

Jak powinien wyglądać taki wzór do ćwiartowania i liczenia ?

W ogólnym wypadku obliczenie powierzchni bocznej bryły powstałej poprzez obracanie wykresu funkcji to jest zagadnienie analizy matematycznej. Jeżeli masz 18 lat to Twoj nauczyciel wymaga od Ciebie dosyć wiele. Można by napisać program do tego, ale bez różniczkowania numerycznego chyba się nie obejdzie.

grzegorz_so napisał(a):
begin
     y:=promien(x);
     pole:=Pole+(2*pi*y*krok);
  

Ten wzór też jest zły.

0

@czarny Kaczor vel @PLrc
pole:=Pole+(2piy*krok);

2piy(czyli promień)= obwód
2piy*krok całkowania = powierzchnia boczna elementarnego walca
gdzie widzisz błąd ?
oczywiście "y" jest funkcją od "x" czyli odległości od podstawy bryły (stożka)

0
grzegorz_so napisał(a):

@czarny Kaczor vel @PLrc
pole:=Pole+(2piy*krok);

2piy(czyli promień)= obwód
2piy*krok całkowania = powierzchnia boczna elementarnego walca
gdzie widzisz błąd ?

W tym, że pole takich paseczków = długośćszerokość. Długość=2pi*r(x), ale szerokość jest inna niż krok całkowania.

0

szerokość jest taka jak krok całkowania !!
na jakiej podstawie twierdzisz że jest inna ?

0

Narysowałem Ci to. Na niebiesko zaznaczyłem krok całkowania dx. Na różowo promień okręgu powstałego przez przecięcie stożka. Na zielono zaznaczyłem szerokość paseczka ds. Pole takiego paseczka to 2pir(x)*ds

stożek2.JPG

dodanie obrazka do treści posta - @furious programming
Czy teraz mi wierzysz?

0

@PLrc, przpraszam, zwracam honor, masz rację, w ten sposób ,dzieląc bryłę na "plasterki", można by liczyć objetość, a przy powiechni należało by uwzględnić kąt pomiedzy osią x a normalną do powierzchni
zasugerowałem się metodą zaproponowaną przez pytajacego

0

Piszę jeszcze raz : pole stożka dałem , aby móc policzyć czy skrypt dobrze działa. Skrypt w założeniu ma policzyć powierzchnię dowolnej (SIC!) figury obrotowej , która powstaje przez obrót linii funkcji - Więc to może być również jakaś sinusoida i powstały wazonik przez jej obrót , tylko dla przykładu trudno skontrolować czy aplikacja dobrze działa. Całe zamieszanie spowodowane jest zmianą tematu z "obliczanie powierzchni bocznej" na "obliczanie powierzchni bocznej stożka'.
więc zacząłem od ćwiartowania i liczenia pól tych plasterków.

0

Wybaczyć mi proszę ! Głupie przyzwyczajenie. Postaram się nie używać zastępczo wyrazu skrypt ,tylko stosować "program" Mój błąd i moje głupie przyzwyczajenie :(

0

@programista97
W ten sposób nie obliczysz powierzchni bryły .
Sam się dałem "wpuścić" w ten sposób myślenia , na co zwrócił uwagę @PLrc :)
Dzieląc bryłę na plasterki można policzyć objętość .
Twój algorytm ,nie uwzdględniający lokalnego kąta pomiędzy styczną do krzywej tworzącej bryłę a osią bryły , wyliczy powierzchnię bryły zrzutowaną na powierzchnię będącą w każdym miejscu plasterka równoległą do osi bryły i styczną do podstawy plasterka
wyobraź że masz ciąg stożków o wyskościach zmieniających się od jakiejś niezerowej wartości do zera , krok nie nie jest ważny
w Twoim modelu granica funkcji określającej powierzchnię boczną jest zero , zero wysokości to zero powierzchni , a zgodnie z geometrią owa granica to powierzchnia podstawy stożka

0

Całą figurę dzielisz na "plasterki" czyli stożki ścięte - pole powierzchni takiego plasterka policzysz z wzoru http://pl.wikipedia.org/wiki/Stożek_ścięty promienie R oraz r odczytasz sobie z zadanej funkcji. Wysokość plasterka h im mniejsza (czyli na im więcej plasterków podzielisz figurę) tym większa dokładność.

1 użytkowników online, w tym zalogowanych: 0, gości: 1