Моделирование движения глубинной бомбы-торпеды

Автор: Пользователь скрыл имя, 02 Апреля 2013 в 19:59, курсовая работа

Описание работы

Задание: Глубинная бомба-торпеда, снабженная разгонным двигателем, установлена на взрыв, на заданной глубине, сбрасывается с движущегося противоподлодочного корабля. Исследовать связь между временем достижения заданной глубины, пройденным расстоянием по горизонтали и формой корпуса (шарообразной, полусферической, каплевидной и формой диска). Целью курсовой работы является создание физической модели с помощью компьютера. Данная модель анализирует связь между временем достижения заданной глубины, пройденным расстоянием по горизонтали и формой корпуса бомбы - торпеды.

Содержание

Задание............................................................................................................................................4
Введение.........................................................................................................................................5
1. Моделирование..........................................................................................................................6
1.1. Составление системы …………………………………………………………………….6
1.2. Разработка модели ………………………………………………………………………..9
1.2.1. Метод интегрирования…………………………………………………………….....9
1.2.2. Проектирование интерфейса…………………………..…………………………....10
2. Реализация модели...................................................................................................................11
Заключение...................................................................................................................................15
Список литературы......................................................................................................................16
Приложение А…………………………………………………………………………………..17

Работа содержит 1 файл

Мой отчет2.doc

— 327.50 Кб (Скачать)

Таким образом, бомба-торпеда каплевидной формы быстрее всех достигла цели, и сместилась на меньшее количество метров по горизонтали. За ней идут по возрастающей бомба шарообразной формы, бомба формы полусферы, бомба формы диска. Следовательно, чем меньше площадь сечения поперечного по отношению к потоку и чем меньше безразмерный коэффициент лобового сопротивления бомбы, тем точнее и быстрее она достигает цели.

 

 

 

 

 

 

 

 

 

Заключение

 

В результате выполнения курсовой работы получили модель движения глубинной бомбы – торпеды, снабженной разгонным двигателем, установленной на взрыв, на заданной глубине, которая сбрасывается с движущегося противоподлодочного корабля. Для моделирования был применен метод интегрирования систем дифференциальных уравнений – метод Рунге-Кутта четвертого порядка. По результатам, полученным в ходе работы данной программы, исследовали связь между временем достижения заданной глубины, пройденным расстоянием по горизонтали и формой корпуса бомбы.

Таким образом, все поставленные задачи курсовой работы были выполнены.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованной литературы

 

1. Могилев А.В., Пак Н.И., Хеннер Е.К. Практикум по информатике, М: - Академия, 2001.

 

2. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика, М: - Академия, 1999.

 

3. Фаронов В.В. Delphi 6. Учебный курс. Москва, 2003.

 

4. Хеннер Е.К., Шестаков А.П. Математическое  моделирование: Пособие для учителя.  Пермь, 1995.

 

5. Советов Б.Я., Яковлев С.А. Моделирование систем: Учебник для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ А

 

Текст программы:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, Buttons;

type

  TForm1 = class(TForm)

    memo1: TMemo;

    PaintBox1: TPaintBox;

    Label1: TLabel;

    Edit1: TEdit;

    Button2: TButton;

    Button4: TButton;

    BitBtn1: TBitBtn;

    Label10: TLabel;

    Edit10: TEdit;

    Bevel3: TBevel;

    Timer1: TTimer;

    Button5: TButton;

    Label3: TLabel;

    Edit3: TEdit;

    Label5: TLabel;

    Edit5: TEdit;

    Label7: TLabel;

    Edit7: TEdit;

    Label8: TLabel;

    Edit8: TEdit;

    Label9: TLabel;

    Edit9: TEdit;

    Edit11: TEdit;

    Label11: TLabel;

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    RadioButton3: TRadioButton;

    RadioButton4: TRadioButton;

    GroupBox1: TGroupBox;

    procedure Button2Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  t,h,y1,y2,y3,y4,n:real;

  k11, k21, k31, k41, k12, k22, k32, k42,

    k13, k23, k33, k43, k14, k24, k34, k44: real;

    m,k1,k2,k1x,k2x,nu,p,r,c,cx,sx,vb:real;

  xc,yc,kom:integer;

implementation

 

uses Unit2;

{$R *.dfm}

function f(t,y1,y2,y3,y4,k1,k2:real;n:byte):real; //x=t;y1=vx;y2=vy;;y3=x;y4=y

begin

case n of

1:f:=-(k1x+k2x*sqrt(y1*y1+y2*y2))*y1/m;

2:f:=vb-9.81-(k1+k2*sqrt(y1*y1+y2*y2))*y2/m;

3:f:=y1;

4:f:=y2;

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

paintbox1.Canvas.FloodFill(xc,yc,clred,fsborder);

end;

 

 

 

procedure TForm1.Button4Click(Sender: TObject);

begin

memo1.Lines.Clear;

button5.Caption:='стоп';

h:=strtofloat(edit10.Text); //шаг

nu:=1.002; //вязкость среды

p:=1; //плотность среды

r:=0.5; //радиус шара

m:=1; //масса

 

if radiobutton1.Checked then begin c:=0.4;cx:=0.4;sx:=pi*r*r end;//шар

if radiobutton2.Checked then begin c:=1.11;cx:=0.001;sx:=2*r*0.1 end;//диск, 0.1-ширина диска

if radiobutton3.Checked then begin c:=0.55;cx:=0.2;sx:=pi*r*r/2 end;//полусфера

if radiobutton4.Checked then begin c:=0.045;cx:=0.6;sx:=pi*r*r*1.5 end;//каплевидное тело, будем считать, что её  S в1.5 больше, чем у шара

 

k1:=6*pi*nu*r;

k2:=1/2*c*p*pi*r*r;

k1x:=6*pi*nu*r;

k2x:=1/2*cx*p*sx;

y3:=0;

y4:=strtofloat(edit3.text);

y1:=strtofloat(edit1.Text);

y2:=-strtofloat(edit11.Text);

vb:=y2;

t:=0;

 

kom:=strtoint(edit9.Text);

xc:=paintbox1.width div 2;

yc:=paintbox1.height div 2;

 

paintbox1.Canvas.MoveTo(0,paintbox1.height div 2);//x

paintbox1.Canvas.lineTo(paintbox1.Width,paintbox1.height div 2);

paintbox1.Canvas.MoveTo(paintbox1.width div 2,0);//y

paintbox1.Canvas.lineTo(paintbox1.width div 2,paintbox1.height);

paintbox1.Canvas.MoveTo(trunc(xc+y3*kom),trunc(yc-y4*kom));

timer1.Enabled:=true;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

form2.show;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

begin

if timer1.Enabled then begin timer1.Enabled:=false;button5.Caption:='продолжить';end

else

begin

timer1.Enabled:=true;

button5.Caption:='стоп';

end;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if y4<0 then timer1.Enabled:=false;

       k11 := h*f(t, y1, y2, y3, y4,k1,k2, 1);

       k12 := h*f(t, y1, y2, y3, y4,k1,k2, 2);

       k13 := h*f(t, y1, y2, y3, y4,k1,k2, 3);

       k14 := h*f(t, y1, y2, y3, y4,k1,k2, 4);

       k21 := h*f(t+h/2, y1+k11/2, y2+k12/2, y3+k13/2, y4+k14/2,k1,k2, 1);

       k22 := h*f(t+h/2, y1+k11/2, y2+k12/2, y3+k13/2, y4+k14/2,k1,k2, 2);

       k23 := h*f(t+h/2, y1+k11/2, y2+k12/2, y3+k13/2, y4+k14/2,k1,k2, 3);

       k24 := h*f(t+h/2, y1+k11/2, y2+k12/2, y3+k13/2, y4+k14/2,k1,k2, 4);

       k31 := h*f(t+h/2, y1+k21/2, y2+k22/2, y3+k23/2, y4+k24/2,k1,k2, 1);

       k32 := h*f(t+h/2, y1+k21/2, y2+k22/2, y3+k23/2, y4+k24/2,k1,k2, 2);

       k33 := h*f(t+h/2, y1+k21/2, y2+k22/2, y3+k23/2, y4+k24/2,k1,k2, 3);

       k34 := h*f(t+h/2, y1+k21/2, y2+k22/2, y3+k23/2, y4+k24/2,k1,k2, 4);

       k41 := h*f(t+h, y1+k41, y2+k42, y3+k43, y4+k44,k1,k2, 1);

       k42 := h*f(t+h, y1+k41, y2+k42, y3+k43, y4+k44,k1,k2, 2);

       k43 := h*f(t+h, y1+k41, y2+k42, y3+k43, y4+k44,k1,k2, 3);

       k44 := h*f(t+h, y1+k41, y2+k42, y3+k43, y4+k44,k1,k2, 4);

 

      memo1.lines.add('t='+floattostr(t)+' y1='+floattostr(y1)+' y2='+floattostr(y2)+' y3='+floattostr(y3)+' y4='+floattostr(y4));

 

       y1:=y1+1/6*(k11+2*k21+2*k31+k41);

       y2:=y2+1/6*(k12+2*k22+2*k32+k42);

       y3:=y3+1/6*(k13+2*k23+2*k33+k43);

       y4:=y4+1/6*(k14+2*k24+2*k34+k44);

     paintbox1.Canvas.lineTo(trunc(xc+y3*kom),trunc(yc-y4*kom));

     t:=t+h;

end;

end.

 

 

unit Unit2;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

  TForm2 = class(TForm)

    Memo1: TMemo;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form2: TForm2;

 

implementation

 

{$R *.dfm}

 

end.

 

 

 

 




Информация о работе Моделирование движения глубинной бомбы-торпеды