MATLAB数值积分求立方体电势与可视化
创作时间:
作者:
@小白创作中心
MATLAB数值积分求立方体电势与可视化
引用
CSDN
1.
https://m.blog.csdn.net/2301_82176231/article/details/139202457
本文将介绍如何使用MATLAB计算空间中均匀带电立方体产生的电场和电势,并进行可视化展示。文章适合对MATLAB有一定了解且对电磁学感兴趣的读者。
空间中有一均匀带电的立方体,电荷密度 (\rho = 1),边长为 (a = 1)。我们将使用数值积分方法求解空间中各点的电场和电势。
主程序
主程序用于接收用户输入的坐标,并调用计算函数求解电场和电势:
% 开始计时
tic;
% 接受用户输入的坐标
x_input = input('请输入 x 坐标:');
y_input = input('请输入 y 坐标:');
z_input = input('请输入 z 坐标:');
% 调用函数计算电场和电势
[E_field, V_potential] = caculate_E(x_input, y_input, z_input);
% 停止计时并获取经过的时间
time_elapsed = toc;
% 输出结果
disp(['Electric Field at (', num2str(x_input), ', ', num2str(y_input), ', ', num2str(z_input), '): ', num2str(E_field)]);
disp(['Electric Potential at (', num2str(x_input), ', ', num2str(y_input), ', ', num2str(z_input), '): ', num2str(V_potential)]);
disp(['Time Elapsed: ', num2str(time_elapsed), ' seconds']);
计算电势函数
计算电势的函数使用了MATLAB的integral3函数进行三维数值积分:
function [E_x, E_y, E_z] = caculate_E(x_input, y_input, z_input)
% 该函数计算给定坐标处的电场分量
% 定义常数
epsilon_0 = 8.854e-12; % 真空中的介电常数,单位:法拉/米
a = 1; % 立方体的边长,假设为1
rho = 1; % 电荷密度,假设为1
% 定义电场的积分函数
% x 方向的电场积分函数
integrand_E_x = @(x0, y0, z0) rho .* (x_input - x0) ./ ((x_input - x0).^2 + (y_input - y0).^2 + (z_input - z0).^2).^(3/2);
% y 方向的电场积分函数
integrand_E_y = @(x0, y0, z0) rho .* (y_input - y0) ./ ((x_input - x0).^2 + (y_input - y0).^2 + (z_input - z0).^2).^(3/2);
% z 方向的电场积分函数
integrand_E_z = @(x0, y0, z0) rho .* (z_input - z0) ./ ((x_input - x0).^2 + (y_input - y0).^2 + (z_input - z0).^2).^(3/2);
% 计算电场分量
% 使用 integral3 函数对三维区域进行积分,分别计算 x、y、z 方向的电场分量
% integral3 参数依次为积分函数、x 范围、y 范围、z 范围、以及积分的精度选项
E_x = integral3(integrand_E_x, -a/2, a/2, -a/2, a/2, -a/2, a/2, 'AbsTol', 1e-9, 'RelTol', 1e-9);
E_y = integral3(integrand_E_y, -a/2, a/2, -a/2, a/2, -a/2, a/2, 'AbsTol', 1e-9, 'RelTol', 1e-9);
E_z = integral3(integrand_E_z, -a/2, a/2, -a/2, a/2, -a/2, a/2, 'AbsTol', 1e-9, 'RelTol', 1e-9);
% 应用库仑定律的常数
k = 1 / (4 * pi * epsilon_0);
% 计算电场
% 应用比例常数,计算最终的电场分量
E_x = k * E_x; % x 方向的电场分量
E_y = k * E_y; % y 方向的电场分量
E_z = k * E_z; % z 方向的电场分量
end
可视化
可视化部分包括电势分布的三维散点图和电场分布的三维箭头图:
% 定义空间范围和点数量
x_range = linspace(1, 2, 10); % x 范围从 1 到 2,10 个点
y_range = linspace(1, 2, 10); % y 范围从 1 到 2,10 个点
z_range = linspace(1, 2, 10); % z 范围从 1 到 2,10 个点
% 创建均匀网格
[x_points, y_points, z_points] = meshgrid(x_range, y_range, z_range);
% 将网格展平成一维数组
x_points = x_points(:);
y_points = y_points(:);
z_points = z_points(:);
% 预分配存储电场和电势值的数组
E_field_values = zeros(length(x_points), 3);
V_potential_values = zeros(length(x_points), 1);
% 计算电场和电势值
for i = 1:length(x_points)
[E_field_values(i, :), V_potential_values(i)] = caculate(x_points(i), y_points(i), z_points(i));
end
% 创建三维散点图 - 电势值
figure;
scatter3(x_points, y_points, z_points, 50, V_potential_values, 'filled');
colorbar;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Potential Distribution (3D Scatter)');
colormap('jet'); % 使用 jet 颜色映射增强对比度
% 创建存储电场值的数组
E_x_values = zeros(length(x_points), 1);
E_y_values = zeros(length(x_points), 1);
E_z_values = zeros(length(x_points), 1);
% 计算电场值
for i = 1:length(x_points)
[E_x_values(i), E_y_values(i), E_z_values(i)] = caculate_E(x_points(i), y_points(i), z_points(i));
end
% 创建三维散点图 - 电场值
figure;
quiver3(x_points, y_points, z_points, E_x_values, E_y_values, E_z_values);
xlabel('X');
ylabel('Y');
zlabel('Z');
title('Electric Field Distribution (3D Quiver)');
结果展示
以下是第一卦限的电势分布图:
热门推荐
中草药治疗甲亢
2024谍战剧年度排名:《追风者》强势霸榜,《深潜》只能排第三
癫痫病人能够做哪些运动
中卫文化拾遗⑨:岁月失语 惟石能言——中卫岩画
侘寂之美,东方哲学中的审美境界
多维度教育举措 助力青少年全面成长
75%浓度的酒精怎么灭菌消毒有用?这几种正确使用方法要早知道
SpaceX计划登陆火星的时间表在NASA文件中曝光
北京市垂杨柳医院成功实施首例国产温控支架治疗移植肾输尿管狭窄手术
为何在印度教、佛教、耆那教中,冈仁波齐都是圣山?
FPC软板铜箔与硬板铜箔的差异
变形金刚1,经典科幻电影的魅力与深度解析
纪念日送花指南:用花朵记录爱的每一个瞬间
揭秘历史的餐桌:古代玉米的起源与传播
手脚冷是气血不足?中医专家详解气血概念与调理方法
静脉突起:正常现象还是静脉曲张?
SQL查找两个表中相同数据的三种方法
炸藕盒的制作方法与技巧
罚款150万!医保局:康复科不能开展“脑电生物反馈治疗”!
项目管理中的材料成本优化策略
双电子氧还原反应中高性能单原子电催化剂的机器学习筛选
因张志杰心脏骤停去世,羽联改规则,用生命换取的规则更要去珍惜
防控百日咳,“咳”不容缓
一度电等于多少瓦?基本常识科普
Nature Medicine:瘫痪患者如何通过脑机接口实现“指尖自由”?
用Excel函数计算两个日期之间相差的天数、月数和年数
深入学习NumPy库在数据分析中的应用场景
驾校选择:教练素质与培训质量的重要性
2025年春节档电影市场观察:《哪吒2》破纪录,IP续作引领市场新趋势
正史中的阿斗:能力中庸,懂权术及制衡之道,并非完全无能之人