格林函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章典型方程及其解法

第四节格林函数法

1 格林公式

在电磁学中我们学过两个定理:高斯定理和安培环路定理,数学上称为奥-高公式和司托克斯公式,它们分别把体积分化为面积分和把面积分化为线积分。物理上其意义是用矢量场的通量与环量来解释,然而,它们更为重要的数学物理思想是边界的信息决定了内部的信息。高斯定

理 (2-4.1)

安培环路定理 (2-4.2)

以上规律对所有矢量场都适用,现在我们利用两个标量函数和构造一个矢量场,最简单的方

法是取其中一个函数的梯度与另一个函数的乘积,于是我们能得到两个矢量场和

,分别对其使用高斯定理有

(2-4.3)

(2-4.4)

将体积分中的散度展开得

或 (2-4.5)

称为第一格林公式;

同理可得 (2-4.6)

两式相减得

(2-4.7)

称为第二格林公式。

利用格林公式我们依据边界面上的信息来求解拉普拉斯方程,选取积分体域为,

其中为以有点源为心,为半径的球体,即为挖去点源的无源空间。

取,,显然

对于,在域中,如果,则第二格林公式左方体积分为零,

剩下右边在两个边界面和上的积分:

在上 (2-4.8)

(2-4.9)

所以 (2-4.10)

其中,是的界面。

一般地

对于二维情况也有相应的格林公式,取二维拉普拉斯方程的解,

,,则以为心挖去半径的圆面,是该圆面的边

界围线,在域中,如果则

在上

所以 (2-4.11)

以上求解方法表明,我们借助一个满足拉普拉斯方程的点源函数,利用格林公式边界决定内

部的思想,能求解关于另一个函数的定解问题。

2 格林函数

我们定义:

定解问题

的解是狄利克雷问题

的格林函数。

用格林函数直接可表示解

(2-4.11)

由此看来,格林函数法就是把在域中求解的问题,转变成在域中求解格林函数

的问题。

一般域的格林函数不容易求解,利用镜像法可求半空间域和球体域的格林函数。

(1)半空间域的格林函数

静电学中,一点电荷放在无限大真空中,该真空置入无限大平面边界的半空间金属导体(),

要求解真空中各点的电势的问题即等同于求半空间域的格林函数。设导体表面()及整体

电势为零,对应,点电荷的位置为,于是由镜像法得

(2-4.12)

(2)球体域的格林函数

(2-4.13) 其中,

(3)二维上半平面域的格林函数

(2-4.14)

(4)二维圆域的格林函数

(2-4.15)

3 应用举例

例 1 圆域上格林函数的直接应用在半径为的圆外,距圆心处有一电量为的点电荷,求电场的分布。解:可归结为求定解问

得解 (2-4.16)

于是由得

, (2-4.17)

其中

下面是借助镜像法并用计算机绘制的电场线分布图

参考源程序

float EE,FF, A,B=100,I,x,y,z,a,d,t=0.12,S,r,r1,r2,dt,Ey,Ez,E,PI=3.1415926; float b,c;

static Point3f q[2],q1[2],q2[2],q3[2],O[3],w;

Orient dir;

int i,j,n;

Color4f color[200],color1;

dir.phi=90;dir.theta=0;

A=P_omega; b=V; c=X*X/b;

S=P_radius; d=(b-c)/2;

w.x=1;w.y=0;w.z=-d-c;

glt::SetLineWidth(2);

for(j=0;j

{

I=2*PI*j/int(4*A);

z=d+S*cos(I)/2;

y=S*sin(I)/2;

for(i=0;i<200;i++)

{

wiz::Assign(color[i], 0,0,0,1);

if(I!=PI)

{ r1=sqrt(y*y+(d-z)*(d-z));

r2=sqrt(y*y+(d+z)*(d+z));

r=sqrt(y*y+(z+d+c)*(z+d+c));

Ez=B*((z-d)/(r1*r1*r1)-X*(z+d)/(r2*r2*r2)/b);

Ey=B*y*(1/(r1*r1*r1)-X/(r2*r2*r2)/b);

E=sqrt(Ez*Ez+Ey*Ey);

dt=0.9/E;

q[1].x=0;

q[1].y=y;

q[1].z=z;

}

if((i>0)&&(r>X))

draw::Line(q[0],q[1],color[i]);

q[0]=q[1];

z+=Ez*dt;

y+=Ey*dt;

}

}

for(j=-int(2*A);j

{

I=2*PI*j/int(4*A);

z=d+S*cos(I)/2;

y=S*sin(I)/2;

for(i=0;i<200;i++)

{

wiz::Assign(color[i], 0,0,0,1);

if(I!=PI)

{ r1=sqrt(y*y+(d-z)*(d-z));

r2=sqrt(y*y+(d+z)*(d+z));

r=sqrt(y*y+(-z+d+c)*(-z+d+c));

Ez=B*((z-d)/(r1*r1*r1)-X*(z+d)/(r2*r2*r2)/b); Ey=B*y*(1/(r1*r1*r1)-X/(r2*r2*r2)/b);

E=sqrt(Ez*Ez+Ey*Ey);

dt=0.4/E;

q1[1].x=0; q1[1].y=y; q1[1].z=-z;

}

if((i>0)&&(j<1)&&(j>-1)&&(r>X))

draw::Line(q1[0],q1[1],color[i]);

q1[0]=q1[1];

z+=Ez*dt;

y+=Ey*dt;

}

}

glt::EnableLight();

wiz::Assign(color1,1,0.35,0.35,1);

wiz::Assign(O[1],0,0,d);

wiz::Assign(O[2],0,0,-d+X-c);

draw::Balls(1,O+1, 2*S, 32, 32, color1);

glt::DisableLight();

draw::Line(O[1],O[2],color[50]);

相关文档
最新文档