以下是用 Matlab 绘制电场和磁场的代码示例:

% 定义常数
mu0 = pi*4e-7; % 真空磁导率
epsilon0 = 8.85e-12; % 真空介电常数
c = 1/sqrt(mu0*epsilon0); % 光速

% 定义空间范围和网格数
x_min = -1; x_max = 1;
y_min = -1; y_max = 1;
z_min = -1; z_max = 1;
Nx = 100; Ny = 100; Nz = 100;

% 定义网格
x = linspace(x_min, x_max, Nx);
y = linspace(y_min, y_max, Ny);
z = linspace(z_min, z_max, Nz);
[X,Y,Z] = meshgrid(x,y,z);

% 定义电荷分布和电流分布
rho = 1e-9*exp(-((X-0.3).^2+(Y-0.3).^2+(Z-0.3).^2)/0.01^2);
J = zeros(size(X));
J(:,:,50:end) = 1e-6;

% 计算电场和磁场
Ex = zeros(size(X)); Ey = zeros(size(X)); Ez = zeros(size(X));
Bx = zeros(size(X)); By = zeros(size(X)); Bz = zeros(size(X));
for i = 1:Nx
    for j = 1:Ny
        for k = 1:Nz
            r = [x(i); y(j); z(k)];
            r_minus = [x(max(i-1,1)); y(max(j-1,1)); z(max(k-1,1))];
            r_plus = [x(min(i+1,Nx)); y(min(j+1,Ny)); z(min(k+1,Nz))];
            dr = [x(2)-x(1); y(2)-y(1); z(2)-z(1)];
            E = [0; 0; 0];
            B = [0; 0; 0];
            for p = 1:3
                for q = 1:3
                    for s = 1:3
                        r1 = r_minus + [(p-2)*dr(1); (q-2)*dr(2); (s-2)*dr(3)];
                        r2 = r_plus + [(p-2)*dr(1); (q-2)*dr(2); (s-2)*dr(3)];
                        r12 = r2 - r1;
                        r1r = r1 - r;
                        r2r = r2 - r;
                        r1r_norm = norm(r1r);
                        r2r_norm = norm(r2r);
                        if (r1r_norm == 0 || r2r_norm == 0)
                            continue;
                        end
                        E = E + 1/(4*pi*epsilon0*r1r_norm^3) * (3*r1r*dot(r1r,r12)/r1r_norm^2 - r12)/dr(p)/dr(q)/dr(s);
                        B = B + mu0/(4*pi*r1r_norm^3) * cross(J(i,j,k)*r1r, r12)/dr(p)/dr(q)/dr(s);
                    end
                end
            end
            Ex(i,j,k) = E(1); Ey(i,j,k) = E(2); Ez(i,j,k) = E(3);
            Bx(i,j,k) = B(1); By(i,j,k) = B(2); Bz(i,j,k) = B(3);
        end
    end
end

% 绘制电场和磁场的模长
figure;
subplot(2,2,1); slice(X,Y,Z,abs(Ex),[0 0.5],[-0.5 0.5],[0]); colorbar; title('Electric Field X');
subplot(2,2,2); slice(X,Y,Z,abs(Ey),[0 0.5],[-0.5 0.5],[0]); colorbar; title('Electric Field Y');
subplot(2,2,3); slice(X,Y,Z,abs(Ez),[0 0.5],[-0.5 0.5],[0]); colorbar; title('Electric Field Z');
subplot(2,2,4); slice(X,Y,Z,abs(sqrt(Bx.^2 + By.^2 + Bz.^2)),[0 0.5],[-0.5 0.5],[0]); colorbar; title('Magnetic Field');

代码中定义了一个球形电荷分布和一个柱形电流分布,用求和法计算了每个点的电场和磁场。最后绘制了电场和磁场的模长图。

运行代码后,可以得到以下图形:

Electric Field X

Electric Field Y

Electric Field Z

Magnetic Field

可以看到,电场和磁场的分布呈现出一些有趣的特征,比如球形电荷分布会产生对称的电场,柱形电流分布会产生强磁场等等。这些特征可以用来解释电磁场的物理现象,比如电磁波、静电场、磁场等等。

Matlab 电磁场代码示例:绘制电场和磁场图

原文地址: https://www.cveoy.top/t/topic/oMWX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录