МАЙЕР Р.В.

ВЫЧИСЛЕНИЕ ПОТЕНЦИАЛА ЭЛЕКТРИЧЕСКОГО ПОЛЯ НА КОМПЬЮТЕРЕ

1. Изучение основ компьютерного моделирования предусматривает овладение методами решения дифференциальных уравнений, содержащих частные производные второго порядка. Методика решения уравнения переноса и волнового уравнения описана в монографии [1], электронный вариант которого может быть скачен с сайта http://maier-rv.glazov.net. Рассмотрим программу, решающую уравнение Пуассона, которое описывает распределение потенциала электростатического поля.

Пусть в прямоугольной области задано распределение зарядов и граничные условия, то есть значения потенциала вдоль границы. Необходимо определить потенциал во всех точках области. Будем использовать метод сеток (метод конечных разностей), для этого: 1) в плоской области построим сетку, состоящую из большого количества узлов; 2) исходное дифференциальное уравнение заменим конечно-разностным; 3) из граничных условий за несколько итераций вычислим значения потенциала в узлах сетки.

Уравнения Пуассона для потенциала в однородной и неоднородной средах:

Если правая часть равна 0, то левое уравнение превращается в уравнение Лапласа, описывающее стационарное распределение температуры. Перейдем к конечным разностям:

Для расчета распределения потенциала необходимо организовать цикл, в котором перебираются все узлы сетки и вычисляются потенциалы в момент t+Δt.

Результаты решения уравнения Пуассона для однородной и неоднородной среды представлены на рис. 1. Ниже приведена программа на языке Pascal (программа 1).

uses crt, graph; 					Программа 1.
const n=70; m=70;   
var i, j, ii, jj, k, q, DriverVar, ModeVar, ErrorCode : integer;
fi, e: array[1..N, 1..M] of real;
procedure Sreda; {---Диэлектрическая проницаемость среды---}
begin For i:=1 to N do For j:=1 to M do
begin e[i,j]:=1+0.015*j*i; end; end;
procedure Raschet; {---- Расчет потенциала ----}
begin q:=0; if ((i>30)and(i<40)and(j>30)and(j<40))then q:=80;
fi[i,j]:=(fi[i+1,j]+fi[i-1,j]+fi[i,j+1]+fi[i,j-1]+q/e[i,j])/4+
((e[i-1,j]-e[i+1,j])*(fi[i+1,j]-fi[i-1,j])+
(e[i,j-1]-e[i,j+1])*(fi[i,j+1]-fi[i,j-1]))/(16*e[i,j]); end;
procedure Gran; {---- Граничные условия ----}
begin for i:=1 to N do begin fi[i,2]:=0; fi[i,M-1]:=0; 
fi[2,i]:=-20; fi[N-1,i]:=20; end;
for j:=20 to 25 do fi[55,j]:=0; end;
procedure Draw; {---- Вывод на экран ----}
begin 
if fi[i,j]>-400 then setcolor(15); 
if fi[i,j]>-350 then setcolor(0);
if fi[i,j]>-300 then setcolor(1);  
if fi[i,j]>-200 then setcolor(2);
if fi[i,j]>-100 then setcolor(3);  
if fi[i,j]>-50  then setcolor(4);
if fi[i,j]>-25  then setcolor(5);  
if fi[i,j]>-15  then setcolor(6);
if fi[i,j]>-7   then setcolor(7);  
if fi[i,j]>7    then setcolor(8);
if fi[i,j]>15   then setcolor(9);  
if fi[i,j]>25   then setcolor(10);
if fi[i,j]>50   then setcolor(11); 
if fi[i,j]>100  then setcolor(12);
if fi[i,j]>200  then setcolor(13); 
if fi[i,j]>300  then setcolor(14);
if fi[i,j]>300  then setcolor(15); 
if fi[i,j]>400  then setcolor(0);
if abs(fi[i,j])<3 then setcolor(15);
rectangle(i*4+50,j*4,i*4+54,j*4+4); 
rectangle(i*4+51,j*4+1,i*4+53,j*4+3); end;
BEGIN             {---- Основная программа ----}
DriverVar:=Detect; InitGraph(DriverVar,ModeVar,'c:\bp\bgi');
ErrorCode:=GraphResult; if ErrorCode <> grOK then Halt(1);
Sreda; Repeat inc(k); 
For i:=2 to N-1 do For j:=2 to M-1 do Raschet;
Gran; For j:=2 to M-1 do For i:=2 to N-1 do Raschet;
Gran; For i:=2 to N-1 do For jj:=2 to M-1 do
               begin j:=M+1-jj; Raschet; end;
Gran; For j:=2 to M-1 do For ii:=2 to N-1 do 
               begin i:=N+1-ii; Raschet; end;
Gran; If k/10=round(k/10) then For i:=2 to N-1 do 
                     For j:=2 to M-1 do Draw;
until KeyPressed; CloseGraph;
END.

2. Если электрическое поле создано несколькими точечными зарядами, а рассматриваемая область не ограничена, то определение распределения потенциала осуществляется в соответствии с принципом суперпозиции:

Предлагаемая программа 2 на языке Pascal позволяет реализовать данный метод. Результаты работы программы представлены на рис. 2.

uses crt, graph; 					Программа 2.
var r1,r2,r3,x1,x2,x3,y1,y2,y3,fi,q1,q2,q3 :real; 
Gd,Gm,i,j :integer;
BEGIN Gd:= Detect; InitGraph(Gd, Gm, 'c:\bp\bgi\');
if GraphResult <> grOk then Halt(1);
q1:=15;   q2:=-23; q3:=8; { q1:=8; q2:=46;}
x1:=180.5; y1:=180.5; x2:=400.5; 
y2:=220.5; x3:=240.5; y3:=340.5;
circle(round(x1),round(y1),3);  
circle(round(x2),round(y2),3);
For i:=0 to 640 do For j:=0 to 480 do
begin r1:=sqrt(sqr(x1-i)+sqr(y1-j)); 
r2:=sqrt(sqr(x2-i)+sqr(y2-j));
r3:=sqrt(sqr(x3-i)+sqr(y3-j)); 
fi:=q1/r1+q2/r2+q3/r3;
{putpixel(i,j,round((fi+1)*20));} 
if round(fi/0.05)-fi/0.05<0.002 then putpixel(i,j,15);
end;  Repeat until Keypressed; CloseGraph;
END.
Литература

1. Майер, Р.В. Информационные технологии и физическое образование [Текст] / Р.В.Майер. –– Глазов: ГГПИ, 2006. –– 64 с.

2. Поршнев, С.В. Компьютерное моделирование физических процессов с использованием пакета MathCAD [Текст]: учебное пособие / С.В. Поршнев. –– М.: Горячая линия – Телеком, 2002. – 252 c.

3. Web–site http://maier-rv.glazov.net (http://komp-model.narod.ru).


Майер Р.В. Вычисление потенциала электрического поля на компьютере // Научно-технические и социально-экономические проблемы регионального развития: Сборник научных трудов. Вып. 5. --- Глазовский инженерно-- экономический институт. --- Глазов: Издательство ГГПИ, 2007. --- C.139--143.


ВВЕРХ