讲稿版利用Matlab模拟点电荷电场的分布.docx
《讲稿版利用Matlab模拟点电荷电场的分布.docx》由会员分享,可在线阅读,更多相关《讲稿版利用Matlab模拟点电荷电场的分布.docx(10页珍藏版)》请在冰点文库上搜索。
![讲稿版利用Matlab模拟点电荷电场的分布.docx](https://file1.bingdoc.com/fileroot1/2023-8/13/1b597963-6c66-4950-a58b-0b136efefc5e/1b597963-6c66-4950-a58b-0b136efefc5e1.gif)
讲稿版利用Matlab模拟点电荷电场的分布
利用MATLAB模拟点电荷电势的分布
一、目的
1.熟悉单个点电荷及一对点电荷的电势分布情况;
2.学会使用MATLAB进行数值计算,并绘出相应的图形;
二、原理
根据库仑定律:
在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸引力,它们之间的力
满足:
(式1)
由电场强度
的定义可知:
(式2)
对于点电荷,根据场论基础中的定义,有势场
的势函数为
(式3)
在MATLAB中,由以上公式算出各点的电势
,可以用MATLAB自带的库函数绘出相应的电势分布情况。
三、MATLAB基本语法
(一)标识符与数
标识符是标志变量名、常量名、函数名和文件名的字符串的总称。
(二)矩阵及其元素的赋值
赋值就是把数赋予代表常量或变量的标识符。
MATLAB中的变量或常量都代表矩阵,标量应看作1×1价的矩阵。
赋值语句的一般形式为
变量=表达式(或数)
列如,输入语句
a=[123;456;789]
则显示结果为
a=123
456
789
输入x=[123456789]
结果为
x=123456789
可以看出,矩阵的值放在方括号中,同一行中各元素之间以逗号或空格分开,不同行的元素以分号隔开。
语句的结尾可用回车或逗号“,”,此时会立即显示运算结果;如果不希望显示结果,就以分号“;”结尾再回车,此时运算仍然执行,只是不作显示。
变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵(也称数组)中的元素用一个下标表示,二维矩阵可有两个下标数,以逗号分开。
在MATLAB中可以单独给元素赋值,例如,a(2,3)=6,x
(2)=2等。
(三)元素群运算
把n×m矩阵中的每个元素当作对象,成群地执行某种运算,称为元素群运算。
元素群运算能大大简化编程,提高运算的效率,这是MATLAB优于其它许多语言的一个特色。
1、数组及其赋值
数组通常是指单行或单列的矩阵,一个N阶数组就是1×N或N×1阶矩阵。
N阶数组可以表示N维向量。
在求某些函数值或曲线时,常常要设定自变量的一系列值,例如,设间隔n在x轴上从-3到3之间,每隔1取一个点,共7个点,这是1×7阶的数组。
如果逐点给它赋值,将非常麻烦。
MATLAB提供了两种给等间隔数组赋值的简易方法。
(1)用两个冒号组成等增量语句,其格式为x=[初值:
增量:
终值]。
例如,键入
x=[-3:
1:
3]
得x=-3-2-10123
当然增量为1时,这个增量值是可以略去的。
(2)linspace函数表述等距离分割,其格式为x=linspace(初值,终值,点数)。
例如键入
x=linspace(-3,3,7)
得x=-3-2-10123
在x轴上-3和3实际上是一个点,所以这个命令是把x轴分为7份。
第三个变元也可以不写,此时取默认值100.
2、元素群的四则运算和幂次运算
元素群运算也就是单个元素之间的运算。
为了与矩阵作为整体的运算符号相区别,要在运算符“*”、“/”、“\”、“^”前加一个点符号“.”,以表示进行元素群运算。
矩阵的加减法本来就是对元素进行的,故不再有元素群运算符。
参与元素群运算的两个矩阵必须是同价的(标量除外)。
下列的例子可以说明利用元素群运算的优越性。
例如,要求列出一个三角函数表。
这在MATLAB中只要一下两个语句
键入x=[0:
0.1:
pi/4]’;[x,sin(x),cos(x),tan(x)]
第一条语句把数组x赋值,经转置后成为一个列向量。
因为sin,cos,tan函数都对元素群有效,得出的都是同阶的列向量。
第二条语句把4个列向量组成一个矩阵,进行显示。
得001.00000
0.10000.09980.99500.1003
0.20000.19870.98010.2027
0.30000.29550.95530.3093
0.40000.38940.92110.4228
0.50000.47940.87760.5463
0.60000.56460.82530.6841
0.70000.64420.76480.8432
第一列是x,以下各列依次是sin(x),cos(x),tan(x)。
for语句
for语句的结构形式为
fork=初值:
增量:
终值语句组A,end
即它把语句组A反复执行N次。
在每次执行时程序中k值不同。
可以算出循环次数为N=1+(终值—初值)/增量
用for语句求三角函数表的程序为
forx=0:
0.1:
pi/4
disp([x,sin(x),cos(x),tan(x)]);
end
所得结果将和上个例题中的答案相同。
可以看出,MATLAB的元素群运算功能与一个for循环相当,由于它不需要每次检验表达式,运算速度比for语句快得多。
for语句可以嵌套使用。
四、MATLAB现用函数介绍
MATLAB语言的难点是函数较多,仅基本部分就有700多个,其中常用的近200个,要尽量多记少查,以提高编程效率,而且这是终生受益的。
1、线型分隔函数linspace(-xm,xm,n):
在-xm与xm之间均分地产生n个点值,形成1×n元向量。
其中-xm是初值,xm是终值,n是点数。
2、两个变量的标量指令[X,Y]=meshgrid(x,y):
将向量x,y变换为数组X,Y,这样就可以将两个一维向量生成两个二维矩阵。
其中,数组X的各行是向量x的拷贝,总行数为y向量的元素个数;数组Y的各列是向量y的拷贝,总列数为x向量的元素个数。
例如x=-3:
3;
y=1:
5;
[X,Y]=meshgrid(x,y)
X=-3-2-10123
-3-2-10123
-3-2-10123
-3-2-10123
-3-2-10123
Y=1111111
2222222
3333333
4444444
5555555
Z=(X+Y).^2
Z=41014916
101491625
0149162536
14916253649
491625364964
3、二维空间中绘制等高线函数contour(X,Y,U,u):
就是挑选出电势相等的点,并在向量u指定的值上绘制等高线。
注意u取值要恰当。
四、编程
1.画单个点电荷的平面电场线与等势线
clear%清除变量
E0=8.85e-12;%真空电介质常数
C0=1/4/pi/E0;%归并常数
q=1.6*10^(-19);%元电荷电量
xm=2.5;%横坐标范围
ym=2;%纵坐标范围
x=linspace(-xm,xm);%横坐标向量
y=linspace(-ym,ym);%纵坐标向量
[X,Y]=meshgrid(x,y);%设置坐标网点
R=sqrt(X.^2+Y.^2);%点电荷到场点的距离
U=C0*q./R;%计算电势
u=1e-9:
0.5e-9:
5e-9;%等电势的电势向量
figure%创建图形窗口
contour(X,Y,U,u)%画等高线
holdon%保持图形
plot(0,0,'o','markersize',12)%画点电荷
axisequaltight%使坐标刻度相等
title('单个点电荷的平面电场线与等势线','fontsize',20)%显示标题
xlabel('r','fontsize',16)%显示横坐标
ylabel('E(U)','fontsize',16)%显示纵坐标
2.画一对点电荷对的电场线和等势线
clear%清除变量
E0=8.85e-12;%真空电介质常数
C0=1/4/pi/E0;%归并常数
q=1.6*10^(-19);%元电荷电量
a=1;%电量比
xm=2.5;%横坐标范围
ym=2;%纵坐标范围
x=linspace(-xm,xm);%横坐标向量
y=linspace(-ym,ym);%纵坐标向量
[X,Y]=meshgrid(x,y);%设置坐标网点
R1=sqrt((X+1).^2+Y.^2);%第一个正电荷到场点的距离
R2=sqrt((X-1).^2+Y.^2);%第二个正电荷到场点的距离
U=C0*q./R1+C0*q./R2;%计算电势
u=1e-9:
0.5e-9:
5e-9;%等电势的电势向量
figure%创建图形窗口
contour(X,Y,U,u)画等势线
gridon%加网格
legend(num2str(u'))%图例
holdon%保持图像
plot(-1,0,'o','markersize',12)%画第一个正电荷
plot(1,0,'o','markersize',12)%画第二个正电荷
axisequaltight%使坐标刻度相等
title('等量同号点电荷的电场线和等势线','fontsize',20)%显示标题
xlabel('r','fontsize',16)%显示横坐标
ylabel('E(U)','fontsize',16)%显示纵坐标
txt=['µçºÉ±È:
\itQ\rm_2/\itQ\rm_1='num2str(a)];%电荷比文本
text(-xm,-ym-0.3,txt,'fontsize',16)%显示电荷比
下列的例子可以说明利用元素群运算的优越性。
例如,要求列出一个三角函数表。
这在MATLAB中只要一下两个语句
键入x=[0:
0.1:
pi/4]’;[x,sin(x),cos(x),tan(x)]
第一条语句把数组x赋值,经转置后成为一个列向量。
因为sin,cos,tan函数都对元素群有效,得出的都是同阶的列向量。
第二条语句把4个列向量组成一个矩阵,进行显示。
得001.00000
0.10000.09980.99500.1003
0.20000.19870.98010.2027
0.30000.29550.95530.3093
0.40000.38940.92110.4228
0.50000.47940.87760.5463
0.60000.56460.82530.6841
0.70000.64420.76480.8432
第一列是x,以下各列依次是sin(x),cos(x),tan(x)。
for语句
for语句的结构形式为
fork=初值:
增量:
终值语句组A,end
即它把语句组A反复执行N次。
在每次执行时程序中k值不同。
可以算出循环次数为N=1+(终值—初值)/增量
用for语句求三角函数表的程序为
forx=0:
0.1:
pi/4
disp([x,sin(x),cos(x),tan(x)]);
end
所得结果将和上个例题中的答案相同。
可以看出,MATLAB的元素群运算功能与一个for循环相当,由于它不需要每次检验表达式,运算速度比for语句快得多。
for语句可以嵌套使用。