Файл: Содержание введение 3 глава основы теории и вопросы моделирования.docx

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 956

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ




На рис. 2.5 2.7 показан пример результатов моделирования силовых ли- ний для зарядов q1=1 Кл и q2 = −1 Кл, на рис. 2.8 – 2.10 – примеры результатов для эквипотенциальных линий, на рис. 2.11˗ 2.12 – пример результата магнит- ного поля токов.



Рис. 2.5. Картина силовых линий поля Е для системы 3-х электрических зарядов. Положительные заряды красный цвет, отрицательные - черный



Рис. 2.6. То же, что и на рис. 2.5, для системы 5 зарядов


Рис. 2.7.То же, что и на рис. 2.5, для системы 7 зарядов




Рис. 2.8. Зелеными линиями построены потенциальные линий между синим (положительным) и черным (отрицательным) зарядами



Рис. 2.9. Потенциальные линии между двумя положительными зарядами и одним отрицательным



Рис. 2.10. Потенциальные линии (зелеными) между двумя положительными зарядами и двумя отрицательными



Рис. 2.11. Синими вертикальными линиями обозначены витки тока, зелеными – линии магнитной индукции




Рис. 2.12. Линии индукции для 6 витков тока

ЗАКЛЮЧЕНИЕ




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

На основе изучения электромагнитной теории и алгоритмов моделирова- ния электрического и магнитного полей, была разработана программа на языке Delphi7. Рассмотренный алгоритм позволяет проводить моделирование элек- трического поля для системы точечных электрических зарядов, а также магнит- ных полей для токов с графической иллюстрацией результатов.

На базе созданной программы были проведены серии тестовых численных экспериментов по моделированию электрического и магнитного полей.

СПИСОК ЛИТЕРАТУРЫ




  1. Белашов В.Ю. Математическое моделирование физических процессов. Казань: КГЭУ, 2004.128с.

  2. Пакулин В.Н. Структура материи (Вихревая модель микромира). СПб: НТФ "Истра", 2011. ˗121 с.;см. также Пакулин В.Н. Структура материи, 2004.

  3. Ландсберг Г.С. Электричество и магнетизм. – М.:ФИЗМАТЛИТ, 2011. – 488с.

  4. Pirnat P. Physical Analogies, 2005. http://www.ticalc.org/cgi- bin/zipview?89/basic/science/physanal.zip;physanal.txt.

  5. Поршнев С.В. Компьютерное моделирование физических процессов. Изд- во Горячая Линия - Телеком, 2003. -592 с.

  6. Яворский Б.М., Детлаф А.А. Справочник по физике для инженеров и сту- дентов вузов.– М.: Наука, 1971. – 940 с.



ПРИЛОЖЕНИЕ


Текст программы моделирования линий напряженности и потенциальных линий. Линии магнитной индукции.

unitmainFM; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Con- trols, Forms,

Dialogs, TeEngine, Series, BubbleCh, ExtCtrls, TeeProcs, Chart, StdCtrls,

Grids;
type

TfmMain = class(TForm) ris: TChart;

bubl: TBubbleSeries; kn: TButton;

tabl: TStringGrid; POLE_NZ: TEdit;

bub2: TBubbleSeries; Mem: TMemo;

S1: TLineSeries; tab_xyp: TStringGrid;

POLE_NP: TEdit;

Label1: TLabel;

Label2: TLabel;

procedureknClick(Sender: TObject); procedureFormCreate(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;
var

fmMain: TfmMain;
const

GRAD_RAD = PI / 180; MAX_N = 8;

MAX_NT = 5700;



x_max = 5;

raz_x = 2 * x_max; y_max = 3;

raz_y = 2 * y_max; r_zar = y_max*0.022; otst = 0.3;

TYPE

M8 = ARRAY [ 1 .. MAX_N ] OF DOUBLE;
MT = ARRAY [ 1 .. MAX_NT ] OF DOUBLE

; VAR

MIN_STEP : DOUBLE; NZ : WORD ;

XT, YT, XTP, YTP : MT

;

implementation
{$R *.dfm}

USES MLINS, POT_MAXMIN, MLINP; VAR

Z, XZ, YZ : M8;

NEWseries :TLineSeries;
procedureTfmMain.knClick(Sender: TObject); VAR

POVTOR, ZAMKNULI : BOOLEAN;

XP, YP, X2, Y2, DOB_X, DOB_Y, UG, PB : DOUBLE; I, JG, J_CHET, J_NCHET : INTEGER;

NP, IP, IZ, NT, N_KUSKOV : WORD; CVETSIL, CVETPOT, CVETPLUS : TCOLOR;
begin
NZ := STRTOINT ( POLE_NZ.Text );
// x_beg := raz_x * otst - x_max; bubl.Clear;

bubl.AddBubble( -x_max - 0.05, -y_max - 0.05, 0.001 );

bubl.AddBubble(x_max + 0.05, -y_max - 0.05, 0.001 );

bubl.AddBubble( -x_max - 0.05, y_max + 0.05, 0.001 );

bubl.AddBubble(x_max + 0.05, y_max + 0.05, 0.001 );
// TABL.Cells[ 0, 0 ] := ' N ЗАР '; TABL.Cells [ 1, 0 ] := '

    1. (mkKu) ';

// TABL.Cells[ 2, 0 ] := ' x (m) '; TABL.Cells [ 3, 0 ] := '

y (m) ';
CVETPLUS :=clRED;

bubl.ColorEachPoint := FALSE; bubl.AreaColor := CVETPLUS;

bub2.Clear; bub2.ColorEachPoint := FALSE; bub2.AreaColor := clBLUE; BUB2.LinePen.Width := 3; bub2.LinePen.Color := clBLUE;
FOR I := 1 TO NZ DO BEGIN

TABL.Cells[ 0, I ] := INTTOSTR ( I );

Z [ I ] := STRTOFLOAT ( TABL.Cells [ 1, I ] ); xZ [ I ] := STRTOFLOAT( TABL.Cells [ 2, I ]);

YZ [ I ] := STRTOFLOAT( TABL.Cells [ 3, I ]);

IF Z [ I ] > 0 THEN

bubl.AddBubble(xZ[ I ], YZ[I], r_zar ) ELSE

bub2.AddBubble(xZ[ I ], YZ[I], r_zar )
END

;

FOR JG := 3 TO RIS.SeriesCount - 1 DO RIS.Series[ JG ].Clear;
CVETPOT := CLGREEN; J_NCHET := 1;

NP := STRTOINT ( POLE_NP.Text ); FOR IP := 1 TO NP DO

BEGIN
XP := STRTOFLOAT ( TAB_XYP.Cells [ 1, IP ] ); YP := STRTOFLOAT ( TAB_XYP.Cells [ 2, IP ] );
PB := POT ( XP, YP, Z, XZ, YZ ); TAB_XYP.Cells[ 3, IP ] := FLOATTOSTR ( PB );

INC ( J_NCHET, 2 );
ZAMKNULI := FALSE;

POVTOR := LP1 ( 1, PB, XP, YP, Z, XZ, YZ,

NT, X2, Y2 );
TLineSeries(RIS.Series [ J_NCHET ]).LinePen.Color := CVETPOT; FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_NCHET ].AddXY( XT[I], YT[I], '', CVETPOT )

;
IF POVTOR THEN

ZAMKNULI := ( ABS( X2 - XP ) < (X_MAX * 0.008) ) AND ( ABS( Y2 - YP ) < (Y_MAX * 0.008) )

;

N_KUSKOV := 1;

WHILE POVTOR AND ( NOT ZAMKNULI ) DO BEGIN
POVTOR := LP1 ( 1, PB, X2, Y2, Z, XZ, YZ,

NT, X2, Y2 );

INC ( J_NCHET, 2 );
TLineSeries(RIS.Series [ J_NCHET ]).LinePen.Color := CVETPOT; FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_NCHET ].AddXY( XT[I], YT[I], '', CVETPOT )

;

INC ( N_KUSKOV ); IF N_KUSKOV > 5 THEN

BREAK;
IF POVTOR THEN

ZAMKNULI := ( ABS( X2 - XP ) < (X_MAX * 0.008) ) AND ( ABS( Y2 - YP ) < (Y_MAX * 0.008) )

END END

;

CVETSIL :=clBlue;
J_CHET := 2;
FOR IZ:= 1 TO NZ DO IF Z [ IZ ] > 0 THEN

BEGIN

FOR JG := 8 TO 26 DO BEGIN

UG := ( -10 + JG * 20 ) * GRAD_RAD;

DOB_X := 1.4 * r_zar * COS ( UG ); DOB_Y := 1.4 * r_zar * SIN ( UG );
INC ( J_CHET, 2 );
POVTOR := LS1 (1, XZ[IZ] + DOB_X, YZ[IZ] + DOB_Y, Z, XZ, YZ,

NT, X2, Y2 );

TLineSeries(RIS.Series [ J_CHET ]).LinePen.Color := CVETSIL; FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_CHET ].AddXY( XT[I], YT[I], '', CVETSIL )

;

WHILE POVTOR DO BEGIN
INC ( J_CHET, 2 );

TLineSeries(RIS.Series [ J_CHET ]).LinePen.Color := CVETSIL;
POVTOR := LS1 (1, X2, Y2, Z, XZ, YZ,

NT, X2, Y2 ); FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_CHET ].AddXY( XT[I], YT[I], '', CVETSIL ) END

;

INC ( J_CHET, 2 );
POVTOR := LS1 (-1, XZ[IZ] + DOB_X, YZ[IZ] + DOB_Y , Z, XZ, YZ,

NT, X2, Y2 );

TLineSeries(RIS.Series [ J_CHET ]).LinePen.Color := CVETSIL; FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_CHET ].AddXY( XT[I], YT[I], '', CVETSIL )


;
WHILE POVTOR DO BEGIN

INC ( J_CHET, 2 );

TLineSeries(RIS.Series [ J_CHET ]).LinePen.Color := CVETSIL;
POVTOR := LS1 (-1, X2, Y2, Z, XZ, YZ,

NT, X2, Y2 ); FOR I := 1 TO NT DO

IF ( ABS ( XT[I] ) <= X_MAX ) AND ( ABS ( YT[I] ) <= Y_MAX ) THEN

RIS.Series[ J_CHET ].AddXY( XT[I], YT[I], '', CVETSIL ) END

END END

;

FOR I := 1 TO NZ DO BEGIN

IF Z [ I ] > 0 THEN

bubl.AddBubble(xZ[ I ], YZ[I], r_zar, '', CVETPLUS )

END

end;
procedureTfmMain.FormCreate(Sender: TObject); VAR

I, JG : WORD;

x_beg, dx, x : double

;

begin
MIN_STEP := 0.00002 *

SQRT ( SQR( RAZ_X ) + SQR( RAZ_Y ) );
s1.ColorEachPoint := false; s1.LinePen.Color := clGreen;
FOR JG :=RIS.SeriesCount TO 1500 DO BEGIN

NEWseries:=TLineSeries.Create( RIS ); RIS.AddSeries(NEWseries);

// RIS.Series [ JG ].Style := S1.Style; TLineSeries(RIS.Series [ JG ]).LinePen.COLOR := CLGREEN

END

;
NZ := STRTOINT ( POLE_NZ.Text );
dx := (raz_x * ( 1 - 2*otst) ) / ( NZ - 1 );
FOR JG := 0 TO RIS.SeriesCount - 1 DO mem.Lines.Append( 's[ '+

INTTOSTR ( JG ) + ' ] - ' + ris.Series [ JG

].Name);

{ mem.Lines.Append( 's[1] - ' + ris.Series [ 1 ].Name);

mem.Lines.Append( 's[2] - ' + ris.Series [ 2 ].Name);

mem.Lines.Append( 's[3] - ' + ris.Series [ 3 ].Name);

}
TAB_XYP.Cells[ 1, 0 ] := ' X ';

TAB_XYP.Cells[ 2, 0 ] := ' Y '; TAB_XYP.Cells[ 3, 0 ] := ' ПОТЕНЦИАЛ ';
TAB_xyp.Cells[ 1, 1 ] := floatTOSTR ( -2.2 );

TAB_xyp.Cells[ 1, 2 ] := floatTOSTR ( -1.5 );
TAB_xyp.Cells[ 2, 1 ] := floatTOSTR ( 1.0 );

TAB_xyp.Cells[ 2, 2 ] := floatTOSTR ( -1.5 );
x_beg := raz_x * otst - x_max;

TABL.Cells[ 0, 0 ] := ' N ЗАР '; TABL.Cells [ 1, 0 ] := ' Q

(mkKu) ';

TABL.Cells[ 2, 0 ] := ' x (m) '; TABL.Cells [ 3, 0 ] := ' y (m) ';

FOR I := 1 TO NZ DO BEGIN

TABL.Cells[ 0, I ] := INTTOSTR ( I ); TABL.Cells[ 1, I ] := floatTOSTR ( 1 );
x := x_beg + ( i - 1 ) * dx; TABL.Cells[ 2, I ] := floatTOSTr ( x );
TABL.Cells[ 3, I ] := floatTOSTR ( 0 ) END

;

TABL.Cells[ 1, 2 ] := floatTOSTR ( -1 );

knClick ( SENDER ) end;
end.


unit MLIN; interface

USES MAINFM

;

FUNCTION LS1 (ZNAK : INTEGER; XB, YB : DOUBLE; Z, XZ, YZ : M8 ) : WORD;
implementation

FUNCTION LS1 (ZNAK : INTEGER; XB, YB : DOUBLE; Z, XZ, YZ : M8 ) :