python+matplotlib演示电偶极子实例代码


Posted in Python onJanuary 12, 2018

使用matplotlib.tri.CubicTriInterpolator.演示变化率计算:

python+matplotlib演示电偶极子实例代码

完整实例:

from matplotlib.tri import (
  Triangulation, UniformTriRefiner, CubicTriInterpolator)
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np


#-----------------------------------------------------------------------------
# Electrical potential of a dipole
#-----------------------------------------------------------------------------
def dipole_potential(x, y):
  """ The electric dipole potential V """
  r_sq = x**2 + y**2
  theta = np.arctan2(y, x)
  z = np.cos(theta)/r_sq
  return (np.max(z) - z) / (np.max(z) - np.min(z))


#-----------------------------------------------------------------------------
# Creating a Triangulation
#-----------------------------------------------------------------------------
# First create the x and y coordinates of the points.
n_angles = 30
n_radii = 10
min_radius = 0.2
radii = np.linspace(min_radius, 0.95, n_radii)

angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi / n_angles

x = (radii*np.cos(angles)).flatten()
y = (radii*np.sin(angles)).flatten()
V = dipole_potential(x, y)

# Create the Triangulation; no triangles specified so Delaunay triangulation
# created.
triang = Triangulation(x, y)

# Mask off unwanted triangles.
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
             y[triang.triangles].mean(axis=1))
        < min_radius)

#-----------------------------------------------------------------------------
# Refine data - interpolates the electrical potential V
#-----------------------------------------------------------------------------
refiner = UniformTriRefiner(triang)
tri_refi, z_test_refi = refiner.refine_field(V, subdiv=3)

#-----------------------------------------------------------------------------
# Computes the electrical field (Ex, Ey) as gradient of electrical potential
#-----------------------------------------------------------------------------
tci = CubicTriInterpolator(triang, -V)
# Gradient requested here at the mesh nodes but could be anywhere else:
(Ex, Ey) = tci.gradient(triang.x, triang.y)
E_norm = np.sqrt(Ex**2 + Ey**2)

#-----------------------------------------------------------------------------
# Plot the triangulation, the potential iso-contours and the vector field
#-----------------------------------------------------------------------------
fig, ax = plt.subplots()
ax.set_aspect('equal')
# Enforce the margins, and enlarge them to give room for the vectors.
ax.use_sticky_edges = False
ax.margins(0.07)

ax.triplot(triang, color='0.8')

levels = np.arange(0., 1., 0.01)
cmap = cm.get_cmap(name='hot', lut=None)
ax.tricontour(tri_refi, z_test_refi, levels=levels, cmap=cmap,
       linewidths=[2.0, 1.0, 1.0, 1.0])
# Plots direction of the electrical vector field
ax.quiver(triang.x, triang.y, Ex/E_norm, Ey/E_norm,
     units='xy', scale=10., zorder=3, color='blue',
     width=0.007, headwidth=3., headlength=4.)

ax.set_title('Gradient plot: an electrical dipole')
plt.show()

总结

以上就是本文关于python+matplotlib演示电偶极子实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python中使用enumerate函数遍历元素实例
Jun 16 Python
Python数据类型详解(一)字符串
May 08 Python
Python实现字典去除重复的方法示例
Jul 31 Python
python中join()方法介绍
Oct 11 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
python同步两个文件夹下的内容
Aug 29 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
如何使用python代码操作git代码
Feb 29 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
python函数中将变量名转换成字符串实例
May 11 Python
python如何查找列表中元素的位置
May 30 Python
Python实现读取及写入csv文件的方法示例
Jan 12 #Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 #Python
使用C++扩展Python的功能详解
Jan 12 #Python
聊聊Python中的pypy
Jan 12 #Python
Python中实现switch功能实例解析
Jan 11 #Python
Python中getpass模块无回显输入源码解析
Jan 11 #Python
python版微信跳一跳游戏辅助
Jan 11 #Python
You might like
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
YII实现分页的方法
2014/07/09 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
JS自调用匿名函数具体实现
2014/02/11 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
Python简单实现enum功能的方法
2016/04/25 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
大学生毕业求职的自我评价
2013/09/29 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
开会通知
2015/04/20 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript