potential/SelfAdaptSimulation.m

98 lines
4.0 KiB
Mathematica
Raw Normal View History

clc
clear
%% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD>
% [1]. <EFBFBD><EFBFBD>ΡΡ, <EFBFBD><EFBFBD>.A.<EFBFBD><EFBFBD>.A., һ<EFBFBD>ֽ<EFBFBD>׼ȷ<EFBFBD>ķ<EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2006(04): <EFBFBD><EFBFBD>92-96ҳ.
% [2]. <EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD>, <EFBFBD>ظ<EFBFBD>ѹֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD>, 2012, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ѧ.
%%
%<EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
semi_lineDistance=257;%<EFBFBD><EFBFBD><EFBFBD>Ѽ<EFBFBD><EFBFBD><EFBFBD>
semi_lineCount=4;%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConductorX=[-14500,14500];%<EFBFBD><EFBFBD><EFBFBD>߾<EFBFBD><EFBFBD>ظ߶<EFBFBD>
ConductorY=[16500,16500];%<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>
CSM_N=80;%ÿһ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>ߵ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
subconductorR=30;%<EFBFBD>ӵ<EFBFBD><EFBFBD>߰
%%
%<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ѹ
Volt=[500;500;500;500;-500;-500;-500;-500];
Volt=[500*ones(CSM_N*semi_lineCount,1);-500*ones(CSM_N*semi_lineCount,1)];
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
arc=2*pi/semi_lineCount;
CSM_arc=2*pi/CSM_N;
%<EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵľ<EFBFBD><EFBFBD><EFBFBD>
R=semi_lineDistance/2/sin(arc/2);
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>λ<EFBFBD><EFBFBD>
r1=20;
error=10000;
step=1/10;
maxLoop=round((subconductorR-r1)/step);
for Loop=1:maxLoop;
simulationChargePos=ones(CSM_N,1);
simulationChargeAPos=[];
simulationChargeBPos=[];
for sC=1:semi_lineCount
for I=1:CSM_N
% simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*(R+r1);%<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>תһ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
simulationChargePos(I)=exp(1j*((I-1)*CSM_arc+CSM_arc/2))*r1;%<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>תһ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
end
simulationChargeAPos=[simulationChargeAPos;simulationChargePos+ConductorX(1)+1j*ConductorY(1)+exp(1j*((sC-1)*arc+arc/2))*R];%<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
simulationChargeBPos=[simulationChargeBPos;simulationChargePos+ConductorX(2)+1j*ConductorY(2)+exp(1j*((sC-1)*arc+arc/2))*R];%<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
% simulationChargeAPos=simulationChargePos+ConductorX(1)+1j*ConductorY(1);
% simulationChargeBPos=simulationChargePos+ConductorX(2)+1j*ConductorY(2);
simulationChargePos=[simulationChargeAPos;simulationChargeBPos];
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λϵ<EFBFBD><EFBFBD>
H=diag(imag(simulationChargePos));
r=subconductorR*eye(length(imag(simulationChargePos)));%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD>
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵľ<EFBFBD><EFBFBD><EFBFBD>
matSimulationChargePos=repmat(simulationChargePos,1,length(simulationChargePos));
conductor2conductorDistance=matSimulationChargePos-conj(matSimulationChargePos');
conductor2conductorDistance=abs(conductor2conductorDistance-diag(diag(conductor2conductorDistance)));
matMirrorChargePos=conj(matSimulationChargePos);%<EFBFBD>鲿ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QRI=P\Volt;
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if error<0.0001
break;
end
%ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
vrfRelA=linspace(0,2*pi,200)';%vrf=verify
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>ߵ<EFBFBD>λ<EFBFBD><EFBFBD>
vrfRelPos=exp(1j*vrfRelA)*subconductorR;
%<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غϡ<EFBFBD>
vrfPos=[];
for sC=1:semi_lineCount
vrfPos=[vrfPos;exp(1j*((sC-1)*arc+arc/2))*R+ConductorX(1)+1j*ConductorY(1)+vrfRelPos];
end
% vrfPos=ConductorX(1)+1j*ConductorY(1)+vrfRelPos;
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>λϵ<EFBFBD><EFBFBD>
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);
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
V=Pij*QRI;
error=sum(abs(V-500)./500)/length(V);
r1=r1+step;
end
display('Finished.');
if Loop<maxLoop
display('Converged.');
end
display(Loop);
scatter(real(simulationChargeAPos),imag(simulationChargeAPos),[],'r');
hold on;
scatter(real(vrfPos),imag(vrfPos),[],'k');
% scatter(real([simulationChargeAPos(1:10);]),imag([simulationChargeAPos(1:10);]),10,'red');
% hold;
% scatter(real([simulationChargeAPos(11:20);]),imag([simulationChargeAPos(11:20);]),10,'blue');
% scatter(real([simulationChargeAPos(21:30);]),imag([simulationChargeAPos(21:30);]),10,'green');
% scatter(real([simulationChargeAPos(31:40);]),imag([simulationChargeAPos(31:40);]),10,'yellow');