python如何做动画_如何在Python中动画动态系统的运动?
假设你有一个4个微分方程,它代表了一个动态系统(推车上的钟摆)的运动,你用来求解这些方程scipy.integrate.odeint持续10秒,间隔0.01秒。在
最后得到尺寸为(1000,4)的解矩阵。对于每个diff eq,你得到1000个数据点。目前一切正常。例如,如果我画一个运动,我可以得到漂亮的图形。(下图显示了摆杆的运动(摆动))
但是,不是无聊的图形,我想做一个动画,显示的运动,正如史蒂夫布伦顿所做的那样,用Matlab链接如下。
这是link of the cart-pend video!在
===========================================================================
为了使这些数字动画化,我实际上试着用Python来做Steve Brunton在Matlab中所做的事情。但结果只是一个冻结的数字,而不是移动一个。实际上,如果我从Spyder IDE运行这个脚本,在IPython控制台中会得到1000个图形。(每个图形代表系统瞬时运动的快照,这很好。但我只想要一个上面有1000个数字框的数字。)
我写了两个python脚本。一个用于只绘制另一个用于求解diff方程并将结果反馈给另一个。在
在~~~~~~~~~~~~~~~~~~~~~~~~~
此代码用于绘制动画图形。from math import sqrt, sin, cos
import matplotlib.pyplot as plt
from matplotlib import animation
def draw_cart(states, m, M, L):
x = states[0] # Position of the center of the cart
theta = states[3] # Angle of the pendulum rod
#Dimensions
W = 1*sqrt(M/5) # Cart width
H = .5*sqrt(M/5) # Cart Height
wr = .2 # Wheel radius
mr = .3*sqrt(m) # Mass Radius
#Positions
y = wr/2+ H/2 # Cart Vertical Position
w1x = x-.9*W/2 # Left Wheel x coordinate
w1y = 0 # Left wheel y coordinate
w2x = x+(.9*W/2) # Right Wheel x coordinate
w2y = 0 # Right Wheel y coordinate
# Pendulum Mass x-y coordinates
px = x+(L*sin(theta))
py = y-(L*cos(theta))
#Identfying Figure
plt.figure()
plt.axes(xlim=(-5, 5), ylim=(-2, 2.5))
# Plotting the base line
line = plt.Line2D((-10, 10), (0, 0), color='k', linewidth=2)
plt.gca().add_line(line)
plt.hold(True)
# Shapes
rectangle1 = plt.Rectangle((x-(W/2), (y-H/2)), W, H, fill=True, color='b') # Cart
rectangle2= plt.Rectangle((px-(mr/2), py-(mr/2)), mr, mr, fill=True, color='r') # Pendulum mass
circle2 = plt.Circle((w1x, w1y), wr/2, fill=True, color='g') #Left whell
circle3 = plt.Circle((w2x, w2y), wr/2, fill=True, color='g') #Right whell
plt.plot((x, px), (y, py), 'k', lw=2) #Pendulum rod
#Adding shapes to the figure
plt.gca().add_patch(rectangle1)
plt.gca().add_patch(rectangle2)
plt.gca().add_patch(circle2)
plt.gca().add_patch(circle3)
# Showing the figure
plt.show()
plt.hold(False)
在~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是求解diff eq并将解决方案输入上述代码的另一个代码。
^{pr2}$
python如何做动画_如何在Python中动画动态系统的运动?相关推荐
- python怎么做回归分析_如何在Python中进行二维回归分析?
这是使用scipy.optimize.curve_fit拟合表面的示例Python代码,它使原始数据生成3D散点图,对错误进行3D散点图绘制,绘制表面图和轮廓图.更改它以使用您自己的数据和功能,您应该 ...
- python右对齐 数字_如何在Python中右对齐数值数据?
我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...
- python 指定证书验证_如何在python中验证SSL证书?
我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bo ...
- python隐藏启动台_如何在Python中启动后台进程?
如何在Python中启动后台进程? 我正在尝试将shell脚本移植到更易读的python版本. 原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等). 如何 ...
- python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)
在数据分析过程中,很多时候我们需要从数据表中提取出我们需要的部分,而这么做的前提是我们需要先索引出这一部分数据.今天我们就来探索一下,如何在pandas中使用loc函数和iloc函数索引数据. 今天我 ...
- python队列怎么用_如何在Python中使用多处理队列? - python
我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...
- python字符串筛选输出_如何在Python中过滤字符串列表
Python使用列表数据类型在顺序索引中存储多个数据.它的工作方式类似于其他编程语言的数字数组.filter()方法是Python的一种非常有用的方法.可以使用filter()方法从Python中的任 ...
- python绘图背景透明_如何在 Matplotlib 中更改绘图背景
介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...
- python获取当前时间戳_如何在Python中获取当前时间戳?
在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...
最新文章
- python numpy安装-Numpy安装
- java 数据结构容器之HashSet
- Vue.js教程学习笔记
- 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...
- JButton 做图片框
- 微信企业付款开发 C#
- Magento微信支付接口开发小记
- flask mysql项目模板渲染_Flask系列(二) 模板 templates
- 微信公众号自定义菜单设置管理
- jsp+mysql汽车维修管理系统的设计与开发_基于JSP+MySQl的计算机学院设备报修管理系统.doc...
- 分布式消息规范 OpenMessaging 1.0.0-preview 发布 1
- 在Migration中操作新添加的字段
- 在计算机中1 KB等于多少字节,字节、kb、MB、GB 等单位怎么换算的?1M等于多少kb,1g等于多少kb?...
- 生鲜电商有哪些盈利模式?
- 半监督分类算法简述,self-trainning,co-trainning
- IIP3/IMD/IM3/P1dB
- SEO网站优化真的比其他网络推广方式好吗,优势在哪里?
- cccc-gplt 团体程序设计天梯赛JAVA题解
- Java实现寻找二维数组的鞍点
- 英语口语201之每日十句口语