Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 093

/ вопрос открыт /

Доброго времени, уважаемый!
Лабораторная работа 10
Определить массу тела в форме куба со стороной L, плотность которого равномерно убывает от центра к краям. В центре куба плотность равна Pc, а на вершинах куба - Pk.
T_____T

Александр Думов Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Александр Думов (статус: Посетитель)
Вопрос отправлен: 22 апреля 2012, 16:13
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Толяныч

Здравствуйте, Александр Думов!
Странно, никто не отвечает...
Я тоже не люблю решать задачи вместо студентов, но эта показалось мне интересной - давно ничего не интегрировал численными методами. Вот что получилось :

Результат работы для А=4, Pmin=1,Pmax=2, Eps= 0.0001

1.5510 0.3553
1.5537 0.0017
1.5544 0.0004
1.5545 0.0001
1.5546 0.0000
Result = 99.4934

Смысл в том, что кубик разбиваем на маленькие кубики, плотность в которых считаем постояннрй и равной плотности в центре кубика. Увеличивая число слоев, уменьшаем тем самым размеры кубика, в пределе получится интеграл по объему. Таким образом получаем средневзвешенную плотность. Умножи ее на объем куба , получаем его массу.

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ComCtrls, ExtCtrls, Math;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Memo1: TMemo;
  12. EdA: TLabeledEdit;
  13. EdMin: TLabeledEdit;
  14. EdMax: TLabeledEdit;
  15. EdEps: TLabeledEdit;
  16. procedure FormClick(Sender: TObject);
  17.  
  18. private
  19. { Private declarations }
  20. public
  21.  
  22. end;
  23. var
  24. Form1: TForm1 ;
  25. A,Pmin,Pmax,Eps : double ;
  26. Grad,x,y,z,dx,dist,V0,V1,Delt,Px : double ;
  27. NN : integer ;
  28. implementation
  29.  
  30. {$R *.dfm}
  31. procedure TForm1.FormClick(Sender: TObject);
  32. function FunV ( N : integer) : double ;
  33. var
  34. ix,iy,iz : integer ;
  35. tmp : double ;
  36. begin
  37. // DateSeparator := '.' ;
  38. tmp := 0 ; dx := A / ( N * 4 ) ;
  39. for ix := 0 to N-1 do
  40. begin
  41. x := dx * ( ix * 2 + 1) ;
  42. for iy := 0 to N-1 do
  43. begin
  44. y := dx * ( iy * 2 + 1) ;
  45. for iz := 0 to N-1 do
  46. begin
  47. z := dx * ( iz * 2 + 1) ;
  48. dist := Sqrt ( x*x + y*y + z*z ) ;
  49. tmp := tmp + (dist * Grad) + Pmin ;
  50. end ;
  51. end ;
  52. end ;
  53. Result := tmp * dx * dx * dx;
  54. end;
  55. //-----------------
  56. begin
  57. A := StrToFloat (EdA.Text) ;
  58. Pmin := StrToFloat (EdMin.Text) ;
  59. Pmax := StrToFloat (EdMax.Text) ;
  60. Eps := StrToFloat (EdEps.Text) ;
  61. V0 := 1.0 ;
  62. Grad := (Pmax-Pmin)/(A/2*Sqrt(3)) ;
  63. NN := 4 ;
  64. repeat
  65. V1 := FunV(NN) ;
  66. Delt := (V1-V0)/V1 ; V0 := V1 ;
  67. Memo1.Lines.Add( Format('%6.4f %6.4f',[V1,Delt])) ;
  68. NN := NN + NN ;
  69. until Delt<Eps ;
  70. V1 := V1 * A * A * A ;
  71. Memo1.Lines.Add( Format('Result = %6.4f',[V1])) ;
  72. end;
  73.  
  74. end.
  75.  


Ответ отправил: Толяныч (статус: 4-ый класс)
Время отправки: 24 апреля 2012, 16:37
Оценка за ответ: 5

Комментарий к оценке: Спасибо :) Данная задача была задана, по сведениям заказчика, будущим педагогам-математикам. С математикой наверное у них все в порядке, но вот с физикой и с програмированием видимо очень плохо :(
:)

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 25 апреля 2012, 12:18; участников в обсуждении: 1.
Толяныч

Толяныч (статус: 4-ый класс), 25 апреля 2012, 00:48 [#1]:

Eps тут - максимально допустимая относительная ошибка. Чем она меньше, тем больше итераций придется выполнить.
Толяныч

Толяныч (статус: 4-ый класс), 25 апреля 2012, 12:18 [#2]:

Автор обозначился - и исчез. Наверно, в ряды.
Тейлора.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.02 сек.