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)');
结果展示
以下是第一卦限的电势分布图:
热门推荐
衣服上血渍去除小窍门
弘一大师:明月耀天心
语言学习的关键期:科学揭秘大脑可塑性与语言能力的关系
母乳酸的原因是什么?有什么方法可解决?
我的职工医保中断了,可以补缴吗?
十分钟的奇迹:日常简单运动助你健康升级
起床五分钟的简单健身法
讨厌一个人,其实不用翻脸的,最有水平的处理方式是"认知重构法"
怎样的婚姻叫死亡婚姻
这种被称为“抗癌之王”的微量元素,过量摄入可能中毒
长期借款分期付息的会计分录怎么做?
怪物猎人荒野毒怪鸟攻略:习性分析与战斗策略详解
E5服务器与普通电脑:性能差异全解析
Excel表格内容怎么更改
90亿人次的流动 2025年春运热点前瞻
春运期间铁路12306试点推出“系统自动提交购票订单”功能
案例报道:TMB-H且MSI-H的ALK融合肺腺癌患者的长期生存
如何理解外汇管制的加强及其影响?这种管制对市场参与者有何具体意义?
颈动脉体瘤手术长在神经上怎么办
自我疗愈|度过人生低谷期的8个实用小建议
项目管理软件怎么套定额
咽炎的滤泡怎么治疗
价格战来了,保值率降了:最保值新能源车是它!传祺挤进前三
交警开了责任认定书就可以理赔了吗
沪牌车辆直系亲属过户政策详解
脑机接口,如何“读懂”你的心?
孩子错过“生长激素分泌高峰时间点”才睡,对身高有什么影响?
如何助推企业ESG管理?提升数据质量,发挥第三方鉴证作用
斗罗大陆中的小舞:善良勇敢的柔骨兔
如果不是《哪吒2》大爆发,《射雕英雄传:侠之大者》会不会从今年贺岁档杀出来?