|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.06.2007, 19:14 | #21 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Как это объём (как объём тела вращения?)?
ЗЫ: Нет...Ещё раз. |
25.06.2007, 19:21 | #22 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
000--|----|----|----|----|----|
|--00000--|----|----|----|----| |----|---00000000--|----|----| |----|----|----|--0000---|----| |----|----|----|----|-00000000 |----|----|----|----|----|----| ymax |<-->| ymin H H - размер разбития задаваемый пользователем 0- импровизированная линия функции красным отмечен i-ый сегмент, обем которогонебоходимо вычислить объем можно вычислить(например) как обем циллиндра v:=pi*r*r*H циллиндра , а r - как среднее арифметическое значение между большим и меньшим радиусом прямых.. ограничивающих I-ый сегмент. www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
25.06.2007, 19:23 | #23 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
согу быстренько нарисовать и скинуть как файлик.. если так не особо ясно
www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
25.06.2007, 19:28 | #24 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
По идее объём должен быть как будто парабола вращается относительно центра интервала вокруг оси Y. А тут получается как диаграмма с цилиндрами-столбами.
|
25.06.2007, 19:46 | #25 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
это метод средних треугольников.. у инет позволит принять файл размером 600кб?? пришлю картинку по icq
www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
25.06.2007, 19:57 | #26 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
ВОТ КОД ОКОНЧАТЕЛЬНОЙ ПРОГИ строящей параболу и ограничивающий её сверху и снизу
код procedure TForm3.Button1Click(Sender: TObject); var i,razmer: integer; a,b,c,L,ymax,ymin,y1,ots,razr,raz,x ,x1,x2, d,xv,yv,yos1,los: real; y,yos: array of real; begin L:=StrToFloat(Edit4.Text); a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); Chart1.Series[0].Clear; Chart1.Series[1].Clear; Chart1.Series[2].Clear; Chart1.Series[3].Clear; Chart1.Series[4].Clear; if a<0 then begin showmessage('Неправильно введено значение a. А -СТРОГО ПОЛОЖИТЕЛЬНОЕ ЧИСЛО'); end else begin if abs(a)<0.000001 then begin if b=0 then showmessage('При a=0 неправильно введено значение b. b - не равно "0"') else begin ymax:=L+b*10+c+10; ots:=(ymax-c)/b; raz:=((ots -5)/0.01); razr:=round(raz); edit5.Text:=floattostr(razr); razmer:=strtoint(edit5.Text); ymin:=b*10+c; { реальные размеры БЧ} ymax:=L+b*10+c; { реальные размеры БЧ} { расчет оси симметрии} xv:=10; yv:=0; repeat Chart1.Series[3].AddXY(xv,yv); yv:=yv+1; until yv>=(ymax+10); { расчет оси симметрии} setlength(y,razmer); setlength(yos,razmer); los:=StrToFloat(Edit6.Text); x:=5; i:=0; repeat y[i]:=b*x+c; y1:=y[i]; yos[i]:=b*x+c+los; yos1:=yos[i]; Chart1.Series[0].AddXY(x,y1); Chart1.Series[1].AddXY(x,ymin); Chart1.Series[2].AddXY(x,ymax); Chart1.Series[4].AddXY(x,yos1); x:=x+0.01; until x>=ots; end; end else begin ymax:=L+a*(-10)*(-10)+b*(-10)+c+5; d:=b*b - 4*a*(c-ymax); if d<0then begin showmessage('Неправильно введены a,b или c'); end else begin x1:=(-b - sqrt(d))/(2*a); x2:=(-b + sqrt(d))/(2*a); raz:=((x2-x1)/0.01); razr:=round(raz); edit5.Text:=floattostr(razr); razmer:=strtoint(edit5.Text); x:=x1; ymin:=a*(-10)*(-10)+b*(-10)+c; ymax:=L+ymin; { расчет оси симметрии} xv:=-b/(2*a); yv:=ymin; repeat Chart1.Series[3].AddXY(xv,yv); yv:=yv+1; until yv>=(ymax+1); { расчет оси симметрии} los:=StrToFloat(Edit6.Text); y1:=a*x*x+b*x+c; yos1:=a*x*x+b*x+c+los; repeat y1:=y1+a*(0.02*x+0.0001)+b*0.01; yos1:=yos1+a*(0.02*x+0.0001)+b*0.01 ; Chart1.Series[0].AddXY(x,y1); Chart1.Series[1].AddXY(x,ymin); Chart1.Series[2].AddXY(x,ymax); Chart1.Series[4].AddXY(x,yos1); x:=x+0.01; until x>=x2; end; end; end; end; www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
26.06.2007, 19:08 | #27 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
a*(-10)*(-10)+b*(-10)+c необходимо заменить на
a*(-10+(-b/(2*a)))*(-10+(-b/(2*a)))+b*(-10+(-b/(2*a)))+c www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
26.06.2007, 19:10 | #28 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
расчет объема параболы если коэф а=0.. проверьте пожалуйсто что-то не хочет считать
код begin a:=strtofloat(Edit1.text); b:=strtofloat(Edit2.text); c:=strtofloat(Edit3.text); losk:=strtofloat(Edit4.text); L:=strtofloat(Edit5.text); if a<0 then begin showmessage('Неправильно введено значение a. А -СТРОГО ПОЛОЖИТЕЛЬНОЕ ЧИСЛО'); end else begin if abs(a)<0.000001 then begin if b=0 then showmessage('При a=0 неправильно введено значение b. b - не равно "0"') else begin razr:=round(L/losk); edit6.Text:=floattostr(razr); razmer:=strtoint(edit6.Text); SetLength(V,razmer); x:=10; ymin:=b*(10)+c+losk; ymax:=L+ymin; xmax:=(ymin+L-c-losk)/b; for i:=0 to razmer-1 do begin repeat ymin:=b*x+c+losk; ymax:=losk+ymin; rmax:=(ymax-c)/b; r:=(rmax+x)/2; V[i]:=pi*r*r*losk; ttable.cells[i,1]:=floattostr(V[i]); x:=xmax; until x>=xmax; i:=i+1; end; end; end ; end ; end ; www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
26.06.2007, 19:35 | #29 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
немного изменил код начала работать правдо в таблицу записывается только 1 значение.. посмотрите где ошибка.сам не могу найти
begin a:=strtofloat(Edit1.text); b:=strtofloat(Edit2.text); c:=strtofloat(Edit3.text); losk:=strtofloat(Edit4.text); L:=strtofloat(Edit5.text); if a<0 then begin showmessage('Неправильно введено значение a. А -СТРОГО ПОЛОЖИТЕЛЬНОЕ ЧИСЛО'); end else begin if abs(a)<0.000001 then begin if b=0 then showmessage('При a=0 неправильно введено значение b. b - не равно "0"') else begin razr:=round(L/losk); edit6.Text:=floattostr(razr); razmer:=strtoint(edit6.Text); edit7.Text:=floattostr(razmer); SetLength(V,razmer); x:=10; ymin:=b*(10)+c+losk; edit8.Text:=floattostr(ymin); ymax:=L+ymin; xmax:=(ymin+L-c-losk)/b; edit8.Text:=floattostr(xmax); repeat ymin:=b*x+c+losk; ymax:=losk+ymin; rmax:=(ymax-c)/b; r:=(rmax+x)/2; for i:=0 to razmer-1 do begin V[i]:=pi*r*r*losk; ttable.cells[i,1]:=floattostr(V[i]); записывает 1 значение { i:=i+1; } end; x:=xmax; until x>=xmax; end; end ; end ; end ; www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
26.06.2007, 19:35 | #30 | |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамический массив | Dimon | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 21.03.2008 18:08 |
Динамический массив | _ares_ | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 26.12.2007 23:54 |
Динамический массив. | Mickle | Помощь студентам | 9 | 21.06.2007 20:31 |
Динамический массив | Mickle | Общие вопросы Delphi | 8 | 19.06.2007 06:45 |
Динамический массив + Dll. | LEKA | Общие вопросы Delphi | 7 | 11.05.2007 20:05 |