From 798c0e1142c90860519bef272837a8af8757127c Mon Sep 17 00:00:00 2001 From: "dmy@lab" Date: Sat, 19 Sep 2015 15:22:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dmy@lab --- SelfAdaptSimulation.m | 85 ++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 38 deletions(-) diff --git a/SelfAdaptSimulation.m b/SelfAdaptSimulation.m index 99471e8..90a4393 100644 --- a/SelfAdaptSimulation.m +++ b/SelfAdaptSimulation.m @@ -18,43 +18,52 @@ arc=2*pi/semi_lineCount; %子导线中心到导线中心的距离 R=semi_lineDistance/2/sin(arc/2); %计算模拟电荷的位置 -r1=26; -simulationChargePos=ones(semi_lineCount,1); -for I=1:semi_lineCount - simulationChargePos(I)=exp(1j*((I-1)*arc+arc/2))*(R+r1);%逆时针转一个角度 +r1=0; +error=10000; +for I=1:100 + simulationChargePos=ones(semi_lineCount,1); + for I=1:semi_lineCount + simulationChargePos(I)=exp(1j*((I-1)*arc+arc/2))*(R+r1);%逆时针转一个角度 + end + simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1); + simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2); + simulationChargePos=[simulationChargeAPos;simulationChargeBPos]; + %计算电位系数 + H=diag(imag(simulationChargePos)); + r=100*eye(length(imag(simulationChargePos)));%导线自几何均距 + %导线与导线的距离 + matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos)); + conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos'); + conductor2conductorDistance=abs(conductor2conductorDistance-diag(diag(conductor2conductorDistance))); + matMirrorChargePos=conj(matSimulationChargePos);%虚部取负号 + conductor2MirrorDistance=matSimulationChargePos-conj(matMirrorChargePos'); + conductor2MirrorDistance=abs(conductor2MirrorDistance-diag(diag(conductor2MirrorDistance))); + eslong=8.854187817*10; + P1=1/2/pi/eslong*log(2*H./r); + P1(isnan(P1))=0; + P2=1/2/pi/eslong*log(conductor2MirrorDistance./conductor2conductorDistance); + P2(isnan(P2))=0; + P=P1+P2; + %求电荷 + QRI=P\Volt; + %以下是验证部分 + if error<0.01 + break; + end + %选检验导线上一个角度 + vrfRelA=[0.0;2*pi/6;2*pi/3;2*pi/1];%vrf=verify + %计算检验点相对于子导线的位置 + vrfRelPos=exp(1j*vrfRelA)*r(1); + %移动坐标,使验证的子导线中心和实际子导线中心重合。 + vrfPos=exp(1j*(0+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos; + %计算这一点的电位系数 + matVrfPos=repmat(vrfPos,1,length(simulationChargePos)); + vrf2ConductorDistance=abs(matVrfPos-repmat(conj(simulationChargePos'),length(vrfPos),1)); + vrf2MirrorDistance=abs(matVrfPos-repmat(conj(conj(simulationChargePos')),length(vrfPos),1)); + Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance); + %计算电压 + V=Pij*QRI; + error=sum(abs(V-500)./500); + r1=r1+r(1)/20; end -simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1); -simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2); -simulationChargePos=[simulationChargeAPos;simulationChargeBPos]; -%计算电位系数 -H=diag(imag(simulationChargePos)); -r=100*eye(length(imag(simulationChargePos)));%导线自几何均距 -%导线与导线的距离 -matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos)); -conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos'); -conductor2conductorDistance=abs(conductor2conductorDistance-diag(diag(conductor2conductorDistance))); -matMirrorChargePos=conj(matSimulationChargePos);%虚部取负号 -conductor2MirrorDistance=matSimulationChargePos-conj(matMirrorChargePos'); -conductor2MirrorDistance=abs(conductor2MirrorDistance-diag(diag(conductor2MirrorDistance))); -eslong=8.854187817*10; -P1=1/2/pi/eslong*log(2*H./r); -P1(isnan(P1))=0; -P2=1/2/pi/eslong*log(conductor2MirrorDistance./conductor2conductorDistance); -P2(isnan(P2))=0; -P=P1+P2; -%求电荷 -QRI=P\Volt; -%以下是验证部分 -%选检验导线上一个角度 -vrfRelA=0.0;%vrf=verify -%计算检验点相对于子导线的位置 -vrfRelPos=exp(1j*vrfRelA)*r(1); -%移动坐标,使验证的子导线中心和实际子导线中心重合。 -vrfPos=exp(1j*(0+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos; -%计算这一点的电位系数 -vrf2ConductorDistance=abs(vrfPos-simulationChargePos); -vrf2MirrorDistance=abs(vrfPos-conj(simulationChargePos)); -Pij=1/2/pi/eslong*log(vrf2MirrorDistance./vrf2ConductorDistance); -%计算电压 -V=Pij'*QRI; % scatter(real([simulationChargeAPos;vrfPos]),imag([simulationChargeAPos;vrfPos])); \ No newline at end of file