当前位置: 首页 > java >正文

MATLAB-电偶极子所产出的电磁场仿真

% 清除工作区
clear all

% 用户输入
a = input('输入点电荷的位置如[1,0,1;2,0,2]表示位置在(1,0,1),(2,0,2): ');
Q = input('输入点电荷的电荷量,+-表示电性,如[1,-1]: ');
a1 = input('电场线角度间隔: '); % 角度间隔

% 设置绘图范围
xmin = min(a(:,1)) - 4;
xmax = max(a(:,1)) + 4;
ymin = min(a(:,2)) - 4;
ymax = max(a(:,2)) + 4;
zmin = min(a(:,3)) - 4;
zmax = max(a(:,3)) + 4;

% 创建网格
x = linspace(xmin, xmax, 20); % 减少网格密度以提高性能
y = linspace(ymin, ymax, 20);
z = linspace(zmin, zmax, 20);
[X, Y, Z] = meshgrid(x, y, z);

% 计算距离和电势
g = size(a, 1); % 电荷数量
U = zeros(size(X));
for i = 1:g
    R = sqrt((X - a(i,1)).^2 + (Y - a(i,2)).^2 + (Z - a(i,3)).^2);
    U = U + Q(i) ./ R; % 计算电势
end

% 计算电场强度
[Ex, Ey, Ez] = gradient(-U, x(2)-x(1), y(2)-y(1), z(2)-z(1));

% 创建图形
figure;
hold on;
axis equal;
grid on;
view(3);
xlabel('x');
ylabel('y');
zlabel('z');
title('三维点电荷系统的电场线', 'FontSize', 14);

% 绘制电荷
for i = 1:g
    if Q(i) > 0
        plot3(a(i,1), a(i,2), a(i,3), 'r+', 'MarkerSize', 16, 'LineWidth', 2);
    else
        plot3(a(i,1), a(i,2), a(i,3), 'bo', 'MarkerSize', 16, 'LineWidth', 2);
    end
end

% 生成电场线
r0 = 0.2; % 电场线起始半径
theta = deg2rad(a1:a1:180);   % 极角范围 (0° 到 180°)
phi = deg2rad(0:a1:360);      % 方位角范围 (0° 到 360°)

% 只从正电荷发出电场线
for i = 1:g
    if Q(i) > 0
        for j = 1:length(theta)
            for k = 1:length(phi)
                % 球坐标转直角坐标 (修正z坐标公式)
                x_start = a(i,1) + r0 * sin(theta(j)) * cos(phi(k));
                y_start = a(i,2) + r0 * sin(theta(j)) * sin(phi(k));
                z_start = a(i,3) + r0 * cos(theta(j));
                
                % 绘制电场线
                streamline(X, Y, Z, Ex, Ey, Ez, x_start, y_start, z_start);
            end
        end
    end
end

% 设置图形属性
axis([xmin xmax ymin ymax zmin zmax]);
light('Position',[1 1 1]);
lighting gouraud;
material shiny;
hold off;

http://www.xdnf.cn/news/12617.html

相关文章:

  • 黑马点评【基于redis实现共享session登录】
  • 六、Sqoop 导出
  • 自适应长度惩罚强化学习的高效推理
  • [学习]扩频码测距原理、实现与精度分析(仿真代码)
  • 使用Python和Scikit-Learn实现机器学习模型调优
  • gis geoserver 地图发布
  • 单片机的低功耗模式
  • AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
  • bat批量去掉本文件夹中的文件扩展名
  • Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)
  • 6.6并发编程
  • 引起MySQL CPU 使用率过高常见因素和解决方案
  • Svelte 核心语法详解:Vue/React 开发者如何快速上手?
  • LeetCode刷题 -- 542. 【01 矩阵】最短距离更新算法实现(双向DP)
  • 粤龙庄新文化解释:龙腾南粤,酱蕴山河
  • 计算机网络第2章(下):物理层传输介质与核心设备全面解析
  • 手机号段数据库与网络安全应用
  • Java应用Flink CDC监听MySQL数据变动内容输出到控制台
  • 家政小程序开发——AI+IoT技术融合,打造“智慧家政”新物种
  • 腾讯 ovCompose 跨平台框架发布,几年后还会有人用吗?
  • VScode 使用 git 提交数据到指定库的完整指南
  • TensorFlow深度学习实战(20)——自组织映射详解
  • 【Java开发日记】说一说 SpringBoot 中 CommandLineRunner
  • PyTorch 中contiguous函数使用详解和代码演示
  • 第4章——springboot自动配置
  • LabVIEW音频测试分析
  • ​React Hooks 的闭包陷阱问题
  • YoloV12改进策略:Block改进|TAB,融合组内自注意力(IASA)和组间交叉注意力(IRCA)|即插即用
  • spring:实例工厂方法获取bean
  • 408考研逐题详解:2009年第33题