为了创建一个电流为I、长度为2L的载流线段在X-Y平面上磁感应强度B的三维分布图,我们将使用Maxwell方程中的安培环路定理。首先,我们需要确定磁场B的表达式,然后根据这个公式计算每个点的B值。假设电流I沿z轴正方向,我们可以用右手螺旋法则得到:
\[ \mathbf{B} = \frac{\mu_0 I}{4\pi} \int \frac{(\mathbf{dl} \times \hat{r})}{|\mathbf{r}|^3} \]
对于无限长直导线(理想化模型),在垂直于导线的位置,B的分布是一个同心圆。对于有限长度的线段,我们可以在X-Y平面上找到两个这样的圆环,分别对应线段的两端。
以下是一个简化的步骤:
1. 定义坐标矩阵 `[x, y]`,通常范围是从 -L 到 L,这将是平面坐标系中的位置。
2. 计算距离Z轴的距离 `r = sqrt(x^2 + y^2)` 和单位矢量 $\hat{r} = (x/r, y/r)$。
3. 根据右手螺旋法则计算偏移后的矢量 $\Delta \mathbf{dl}$。
4. 应用上述积分公式计算B。
5. 使用`surf`或`meshgrid`和`z=...`的形式绘制三维表面。
6. 改变电流方向时,只需更改`I`的符号。
```matlab
% 设定参数
mu_0 = 4 * pi * 1e-7; % 空气中的磁导率 (H/m)
L = 1; % 导线长度
I = 1; % 电流 (A)
[x_min, x_max] = [-L, L];
[y_min, y_max] = [-L, L];
% 创建网格
[X, Y] = meshgrid(linspace(x_min, x_max, 100), linspace(y_min, y_max, 100));
Z = zeros(size(X));
% 二维坐标到三维距离
R = hypot(X.^2, Y.^2);
Z(R == 0) = NaN; % 防止除零错误
% 单位矢量
UnitVec = [X./R, Y./R];
% 定义B函数
B_func = @(x, y) mu_0 * I / (4 * pi) .* (UnitVec' .* cross([0, 0, 1], UnitVec)) ./ R.^3;
% 计算B
B_XY = B_func(X(:), Y(:));
% 绘制三维曲面
surf(X(:), Y(:), reshape(B_XY, size(X)), 'EdgeColor', 'none'); % 或者 use surf(X, Y, Z)
hold on;
plot3([0, 0], [0, 0], [-L, L], 'k:', 'LineWidth', 1); % 显示电流方向
xlabel('X');
ylabel('Y');
zlabel('B (T)');
view(3); % 可视化角度调整
title(['Current Loop Magnetic Field with Length ', num2str(L), 'm']);
hold off;
% 更改电流方向
I_dir = -I; % 模拟改变方向
% 重新计算B并更新图形
B_XY_dir = B_func(X(:), Y(:));
surf(X(:), Y(:), reshape(B_XY_dir, size(X)), 'FaceColor', 'interp', 'EdgeColor', 'none');