Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

BM Vật lý Ứng dụng, Khoa KHUD, ĐHBK TP.

HCM Bài tập lớn Matlab – Vật lý A1

Bài tập 27:


Xác định từ trường của một dòng điện tròn
bằng định luật Biot-Savart

1. Yêu cầu

Từ trường của một phân bố dòng điện (C) bất kỳ có thể được xác định bằng định luật Biot-Savart
theo biểu thức sau:

Bài tập này yêu cầu sinh viên sử dụng Matlab để tính toán từ trường của một dòng điện tròn sử
dụng biểu thức trên với cách thức chia vòng tròn thành những đoạn dòng điện thẳng nhỏ và cộng
giá trị từ trường do từng đoạn trên tạo nên tại một vị trí nào đó. Sau đó, sử dụng các giá trị từ
trường đã tính để vẽ biểu diễn đường sức của từ trường chung.

2. Điều kiện
1) Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.
2) Tìm hiểu các lệnh Matlab liên quan symbolic và đồ họa.

3. Nhiệm vụ
Xây dựng chương trình Matlab:
1) Nhập bán kính dòng điện tròn.
2) Chia vòng tròn thành những đoạn dòng điện thẳng nhỏ và cộng giá trị từ trường do từng đoạn
trên tạo nên tại một vị trí nào đó (tham khảo đoạn mã Matlab bên dưới).
3) Vẽ đồ thị biểu diễn đường sức của từ trường (dùng lệnh quiver – vẽ mũi tên đường sức).
Chú ý: Sinh viên có thể dùng các cách tiếp cận khác.

4. Tài liệu tham khảo:


A. L. Garcia and C. Penland, MATLAB Projects for Scientists and Engineers, Prentice Hall,
Upper Saddle River, NJ, 1996. http://www.algarcia.org/fishbane/fishbane.html.

* Hướng dẫn: Tham khảo đoạn chương trình sau về cách tính từ trường từng đoạn dòng điện nhỏ
cộng lại:
fprintf('Field plotted from x = %g m to x = %g m\n',-xMax,xMax);
fprintf('Field plotted from y = %g m to y = %g m\n',-yMax,yMax);
for i=1:NGrid
xObs(i) = -xMax + (i-1)/(NGrid-1)*(2*xMax); % x values to plot
yObs(i) = -yMax + (i-1)/(NGrid-1)*(2*yMax); % y values to plot
end

%@ Loop over the segments in the current loop in yz plane


NSegments = 20;
for k=1:NSegments
%@ Compute location of the endpoints of a segment
theta1 = 2*pi*(k-1)/NSegments;
x1 = 0;
y1 = Radius*cos(theta1);
z1 = Radius*sin(theta1);

1/1
BM Vật lý Ứng dụng, Khoa KHUD, ĐHBK TP.HCM Bài tập lớn Matlab – Vật lý A1
theta2 = 2*pi*k/NSegments;
x2 = 0;
y2 = Radius*cos(theta2);
z2 = Radius*sin(theta2);

%@ Compute components of segment vector dl


dlx(k) = x2-x1;
dly(k) = y2-y1;
dlz(k) = z2-z1;

%@ Compute the location of the midpoint of a segment


xc(k) = (x2+x1)/2;
yc(k) = (y2+y1)/2;
zc(k) = (z2+z1)/2;

end

%@ Loop over all grid points and evaluate B(x,y) on grid


for i=1:NGrid
for j=1:NGrid

Bx = 0; By = 0; % Initialize B to zero

%@ Loop over the segments in the loop


for k=1:NSegments

%@ Compute components of the r vector (vector between


%% segment on loop and observation point)
rx = xObs(j) - xc(k);
ry = yObs(i) - yc(k);
rz = -zc(k); % Observation points are in xy plane

%@ Compute r^3 from r vector


r3 = sqrt(rx^2 + ry^2 + rz^2)^3;

%@ Compute x and y components of cross product dl X r


dlXr_x = dly(k)*rz - dlz(k)*ry;
dlXr_y = dlz(k)*rx - dlx(k)*rz;

%@ Increment sum of x and y components of magnetic field


Bx = Bx + Constant*dlXr_x/r3;
By = By + Constant*dlXr_y/r3;

end

%@ Compute normalized vectors of magnetic field direction


BMag = sqrt(Bx^2 + By^2);
BDirx(i,j) = Bx/BMag;
BDiry(i,j) = By/BMag;

end
fprintf('Calculation %g%% complete\n',100*i/NGrid);
end

1/2

You might also like