%%% 计算一回直流输电导线周围磁场
%%% 基本原理:[P][I]=[A]
% Current_Num 线性模拟电流的根数
% Checkpoint_Num 校验点个数
clear
clear all
close all
%-----------------------------------------------------------------------
Factor_M_addition1=[1 1 1 1 0 0 0 0;
0 0 0 0 1 1 1 1]; % 系数矩阵补充阵1
Factor_M_addition2=[0;0;0;0;-1;-1;-1;-1;0]; % 系数矩阵补充阵2
I=[100;0;0;0;0;0;0;0;-100];
%------------------------------------------------------------------------
e=10^(-7);
p=2*pi*e; % 磁导率
%------------------------------------------------------------------------
Current_Num=4; % 模拟电流数
Checkpoint_Num=4; % 匹配点数
%------------------------------------------------------------------------
CalPointX=1:1:8;
%Num_X=length(CalPointX);
% CalPointY=1.5:0.5:1.5;
%CalPointY=0.5^0.5;
% CalPointY=1.5:0.5:4.5;
%Num_Y=length(CalPointY);
%------------------------------------------------------------------------
r11=0.5;
r22=1;
L=10;
LeadX=[L-r11 L L+r11 L -(L-r11) -L -(L+r11) -L]*0.01; % 模拟电流点x坐标
LeadY=[0 -r11 0 r11 0 r11 0 -r11]*0.01; % 模拟电流点y坐标
CheckLeadX=[L-r22 L L+r22 L -(L-r22) -L -(L+r22) -L]*0.01; % 匹配点x坐标
CheckLeadY=[0 -r22 0 r22 0 r22 0 -r22]*0.01; % 匹配点y坐标
Xx=2^(0.5)/2;
CheckLeadXx=[L-Xx L+Xx L+Xx L-Xx -(L-Xx) -(L-Xx) -(L+Xx) -(L+Xx)]*0.01; % 校验点横坐标
CheckLeadYx=[-Xx -Xx Xx Xx -Xx Xx Xx -Xx]*0.01; % 校验点纵坐标
%-----------------------------------------------------------------------
for i=2:2*Checkpoint_Num
for j=1:2*Current_Num
if i<Checkpoint_Num+1
d1=sqrt( (LeadX(j) - CheckLeadX(1)).^2 + (LeadY(j) - CheckLeadY(1)).^2 );
d2=sqrt( (LeadX(j) - CheckLeadX(i)).^2 + (LeadY(j) -CheckLeadY(i)).^2 );
FMatrix(i,j)=p*log(d1./d2);
else
d1=sqrt( (LeadX(j) - CheckLeadX(1)).^2 + (LeadY(j) - CheckLeadY(1)).^2 );
d2=sqrt( (LeadX(j) - CheckLeadX(i)).^2 + (LeadY(j) - CheckLeadY(i)).^2 );
FMatrix(i,j)=p*log(d1./d2);
end
end
end
FMatrix(1,:)=Factor_M_addition1(1,:);
Factor_Matrix1=[FMatrix;Factor_M_addition1(2,:)];
Factor_Matrix=[Factor_Matrix1 Factor_M_addition2]; % 求得完整的的系数矩阵
%-------------------------------------------------------------------------
% % Matrix_I=[i1;i2;i3;i4;i5;i6;i7;i8;-A2] 模拟电流矩阵
Matrix_I=(inv(Factor_Matrix)*I);
%------------------------------------------------------------------------
for i=5:8
for j=1:2*Current_Num
B=0;
d1=sqrt( (LeadX(j) - CheckLeadX(1)).^2 + (LeadY(j) - CheckLeadY(1)).^2 );
d2=sqrt( (LeadX(j) - CheckLeadXx(i)).^2 + (LeadY(j) - CheckLeadYx(i)).^2 );
B=B+p*log(d1./d2)*Matrix_I(j);
end
A(i)=-B;
end
%--------------------------------------------------------------------
plot(CalPointX,A, 'r--'); % 'k-+' 'b-*' 'r-o' % 曲线图(二维)
xlabel('X(m)');
ylabel('B(uT)');
hold on