【电磁场实验作业】有限差分法(FDM)求解静电场电位分布
一、题目描述
试用超松弛法确定二维静电场区域的电位分布
二、有限差分法
有限差分法(Finite Difference Methods,简称FDM),是一种微分方程的数值解法,是通过有限差分来近似导数,从而寻求微分方程的近似解,是一种以以差分为原理的一种数值解法。
将求解场域划分为很多网格和节点,并用差商代替微商,将场域中的偏微分方程转化成以各节点的电位或者磁矢为未知量的差分方程组。求解该方程组可以得到各离散点待求电位或磁矢的数值解。
2.1差分的基本定义
一阶差分
Δf(x)=f(x+h)−f(x)\Delta f(x)=f(x+h)-f(x) Δf(x)=f(x+h)−f(x)
一阶差商
Δf(x)Δx=f(x+h)−f(x)h\frac{\Delta f(x)}{\Delta x}=\frac{f(x+h)-f(x)}{h} ΔxΔf(x)=hf(x+h)−f(x)
二阶差分
Δ2f(x)=Δf(x+h)−Δf(x)\Delta^{2} f(x)=\Delta f(x+h)-\Delta f(x) Δ2f(x)=Δf(x+h)−Δf(x)
二阶差商
Δ2f(x)Δx2=1h[Δf(x+h)h−Δf(x)h]\frac{\Delta^{2} f(x)}{\Delta x^{2}}=\frac{1}{h}\left[\frac{\Delta f(x+h)}{h}-\frac{\Delta f(x)}{h}\right] Δx2Δ2f(x)=h1[hΔf(x+h)−hΔf(x)]
2.1拉普拉斯方程的有限差分形式:
φi,j+1=φi,j+∂φ∂xh+12∂2φ∂x2h2+16∂3φ∂x3h3+⋯φi,j−1=φi,j−∂φ∂xh+12∂2φ∂x2h2−16∂3φ∂x3h3+⋯φi−1,j=φi,j−∂φ∂yh+12∂2φ∂y2h2−16∂3φ∂y3h3+⋯φi+1,j=φi,j+∂φ∂yh+12∂2φ∂y2h2+16∂3φ∂y3h3+⋯φi,j+1+φi,j−1+φi−1,j+φi+1,j=4φi,j+h2(∂2φ∂x2+∂2φ∂y2)+⋯∇2φ=∂2φ∂x2+∂2φ∂y2=0φi,j=14(φi,j+1+φi,j−1+φi−1,j+φi+1,j)\varphi_{i, j+1}=\varphi_{i, j}+\frac{\partial \varphi}{\partial x} h+\frac{1}{2} \frac{\partial^{2} \varphi}{\partial x^{2}} h^{2}+\frac{1}{6} \frac{\partial^{3} \varphi}{\partial x^{3}} h^{3}+\cdots \\ \varphi_{i, j-1}=\varphi_{i, j}-\frac{\partial \varphi}{\partial x} h+\frac{1}{2} \frac{\partial^{2} \varphi}{\partial x^{2}} h^{2}-\frac{1}{6} \frac{\partial^{3} \varphi}{\partial x^{3}} h^{3}+\cdots \\ \varphi_{i-1, j}=\varphi_{i, j}-\frac{\partial \varphi}{\partial y} h+\frac{1}{2} \frac{\partial^{2} \varphi}{\partial y^{2}} h^{2}-\frac{1}{6} \frac{\partial^{3} \varphi}{\partial y^{3}} h^{3}+\cdots \\ \varphi_{i+1, j}=\varphi_{i, j}+\frac{\partial \varphi}{\partial y} h+\frac{1}{2} \frac{\partial^{2} \varphi}{\partial y^{2}} h^{2}+\frac{1}{6} \frac{\partial^{3} \varphi}{\partial y^{3}} h^{3}+\cdots \\ \varphi_{i, j+1}+\varphi_{i, j-1}+\varphi_{i-1, j}+\varphi_{i+1, j}=4 \varphi_{i, j}+h^{2}\left(\frac{\partial^{2} \varphi}{\partial x^{2}}+\frac{\partial^{2} \varphi}{\partial y^{2}}\right)+\cdots \\ \nabla^{2} \varphi=\frac{\partial^{2} \varphi}{\partial x^{2}}+\frac{\partial^{2} \varphi}{\partial y^{2}}=0 \\ \varphi_{i, j}=\frac{1}{4}\left(\varphi_{i, j+1}+\varphi_{i, j-1}+\varphi_{i-1, j}+\varphi_{i+1, j}\right) φi,j+1=φi,j+∂x∂φh+21∂x2∂2φh2+61∂x3∂3φh3+⋯φi,j−1=φi,j−∂x∂φh+21∂x2∂2φh2−61∂x3∂3φh3+⋯φi−1,j=φi,j−∂y∂φh+21∂y2∂2φh2−61∂y3∂3φh3+⋯φi+1,j=φi,j+∂y∂φh+21∂y2∂2φh2+61∂y3∂3φh3+⋯φi,j+1+φi,j−1+φi−1,j+φi+1,j=4φi,j+h2(∂x2∂2φ+∂y2∂2φ)+⋯∇2φ=∂x2∂2φ+∂y2∂2φ=0φi,j=41(φi,j+1+φi,j−1+φi−1,j+φi+1,j)
2.3求解方法
简单迭代法:
φi,jn+1=14(φi,j+1n+φi,j−1n+φi−1,jn+φi+1,jn)\varphi_{i, j}^{n+1}=\frac{1}{4}\left(\varphi_{i, j+1}^{n}+\varphi_{i, j-1}^{n}+\varphi_{i-1, j}^{n}+\varphi_{i+1, j}^{n}\right) φi,jn+1=41(φi,j+1n+φi,j−1n+φi−1,jn+φi+1,jn)
松弛迭代法:
φi,jn+1=φi,jn+ω4(φi,j+1n+φi,j−1n+1+φi−1,jn+1+φi+1,jn−4φi,jn)ω=21+1−[cos(π/m)+cos(π/n)2]2\varphi_{i, j}^{n+1}=\varphi_{i, j}^{n}+\frac{\omega}{4}\left(\varphi_{i, j+1}^{n}+\varphi_{i, j-1}^{n+1}+\varphi_{i-1, j}^{n+1}+\varphi_{i+1, j}^{n}-4 \varphi_{i, j}^{n}\right)\\ \omega=\frac{2}{1+\sqrt{1-\left[\frac{\cos (\pi / m)+\cos (\pi / n)}{2}\right]^{2}}} φi,jn+1=φi,jn+4ω(φi,j+1n+φi,j−1n+1+φi−1,jn+1+φi+1,jn−4φi,jn)ω=1+1−[2cos(π/m)+cos(π/n)]22
三、示例代码
hx=25;hy=17; %设置网格节点数 v1=ones(hy,hx); %设置行列二维数组 v1(6:12,8:18)=zeros(7,11); m=24;n=16;%横纵向网格数 %边界的Dirichlet边界条件值 v1(1,1:25)=0; %上边界 v1(17,1:25)=0;%下边界 v1(2:16,1)=0;%左边界 v1(2:16,25)=0;%右边界 v1(6,9:18)=ones(10,1)*100;%中间上边界 v1(7:11,18)=ones(5,1)*100;%中间上边界%计算松弛因子 t1=(cos(pi/m)+cos(pi/n))/2; w=2/(1+sqrt(1-t1*t1)); v2=v1;maxt=1;t=0;%初始化 k=0; while(maxt>1e-6)%由v1迭代,算出v2,迭代精度为0.000001k=k+1;%计算迭代次数maxt=0;for i=2:16%从2到16行循环for j=2:7%从2到7列循环v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*w/4;%拉普拉斯方程差分式t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendfor i=2:5%从2到5行循环for j=8:18%从8到18列循环v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*w/4;%拉普拉斯方程差分式t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendfor i=13:16%从13到16行循环for j=8:18%从8到18列循环v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*w/4;%拉普拉斯方程差分式t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendfor i=2:16%从2到16行循环for j=19:24%从19到24列循环v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*w/4;%拉普拉斯方程差分式t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendv2(6:12,8)=v2(6:12,7);v2(12,8:18)=v2(13,8:18);v1=v2; endv1=v2(hy:-1:1,:);save v1data v1subplot(1,2,1),mesh(v1)%画三维曲面图axis([0,25,0,17,0,100])subplot(1,2,2),contour(v1,50)%画等电位线图hold onx=1:1:hx;y=1:1:hy;[xx,yy]=meshgrid(x,y);%形成栅格[Gx,Gy]=gradient(v1,0.6,0.6);%计算梯度quiver(xx,yy,Gx,Gy,'r')%根据梯度数据画箭头axis([-1.5,hx+2.5,-2,20])%设置坐标边框plot([1,1,hx,hx,1],[1,hy,hy,1,1],'k')%画导体边框text(hx/2-0.5,hy+0.4,'0V','fontsize',11);%上标注text(hx/2-0.5,0.4,'0V','fontsize',11);%下标注text(-1,hy/2,'0V','fontsize',11);%左标注text(hx+1,hy/2,'0V','fontsize',11);%右标注text(hx/2-3,hy/2+2,'\phi=50V','fontsize',11);%中间上标注text(hx/2-4,hy/2-1,'\partial\phi/\partialn=0','fontsize',11);%中间下标注hold off四、实验结果
举得有用别忘记点个赞再走呀😄
总结
以上是生活随笔为你收集整理的【电磁场实验作业】有限差分法(FDM)求解静电场电位分布的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【前端学习日记】用reveal.js实现
- 下一篇: 用latex排版电磁场课程报告