假设你有一个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中动画动态系统的运动?相关推荐

  1. python怎么做回归分析_如何在Python中进行二维回归分析?

    这是使用scipy.optimize.curve_fit拟合表面的示例Python代码,它使原始数据生成3D散点图,对错误进行3D散点图绘制,绘制表面图和轮廓图.更改它以使用您自己的数据和功能,您应该 ...

  2. python右对齐 数字_如何在Python中右对齐数值数据?

    我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...

  3. python 指定证书验证_如何在python中验证SSL证书?

    我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bo ...

  4. python隐藏启动台_如何在Python中启动后台进程?

    如何在Python中启动后台进程? 我正在尝试将shell脚本移植到更易读的python版本. 原始shell脚本在后台使用"&"启动多个进程(实用程序,监视器等). 如何 ...

  5. python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)

    在数据分析过程中,很多时候我们需要从数据表中提取出我们需要的部分,而这么做的前提是我们需要先索引出这一部分数据.今天我们就来探索一下,如何在pandas中使用loc函数和iloc函数索引数据. 今天我 ...

  6. python队列怎么用_如何在Python中使用多处理队列? - python

    我很难理解多处理队列如何在python上工作以及如何实现它.假设我有两个python模块,它们从共享文件中访问数据,我们将这两个模块称为writer和Reader.我的计划是让读取器和写入器都将请求放 ...

  7. python字符串筛选输出_如何在Python中过滤字符串列表

    Python使用列表数据类型在顺序索引中存储多个数据.它的工作方式类似于其他编程语言的数字数组.filter()方法是Python的一种非常有用的方法.可以使用filter()方法从Python中的任 ...

  8. python绘图背景透明_如何在 Matplotlib 中更改绘图背景

    介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...

  9. python获取当前时间戳_如何在Python中获取当前时间戳?

    在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...

最新文章

  1. python numpy安装-Numpy安装
  2. java 数据结构容器之HashSet
  3. Vue.js教程学习笔记
  4. 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...
  5. JButton 做图片框
  6. 微信企业付款开发 C#
  7. Magento微信支付接口开发小记
  8. flask mysql项目模板渲染_Flask系列(二) 模板 templates
  9. 微信公众号自定义菜单设置管理
  10. jsp+mysql汽车维修管理系统的设计与开发_基于JSP+MySQl的计算机学院设备报修管理系统.doc...
  11. 分布式消息规范 OpenMessaging 1.0.0-preview 发布 1
  12. 在Migration中操作新添加的字段
  13. 在计算机中1 KB等于多少字节,字节、kb、MB、GB 等单位怎么换算的?1M等于多少kb,1g等于多少kb?...
  14. 生鲜电商有哪些盈利模式?
  15. 半监督分类算法简述,self-trainning,co-trainning
  16. IIP3/IMD/IM3/P1dB
  17. SEO网站优化真的比其他网络推广方式好吗,优势在哪里?
  18. cccc-gplt 团体程序设计天梯赛JAVA题解
  19. Java实现寻找二维数组的鞍点
  20. 英语口语201之每日十句口语

热门文章

  1. 信息学奥赛一本通: 问题 N: 按字母表顺序和逆序打印
  2. vue项目使用海康H5插件
  3. 利用python打开电脑摄像头
  4. 怎么在微信群里看组员的王者荣耀排行?
  5. airtest常用方法
  6. ipad vs android,安卓和苹果平板简评 iPad2018和华为平板M610.8英寸版区别对比
  7. 15.mongodb面试题
  8. RSA数字签名?原来这么好理解!!!
  9. Qt 设置 QWidget 背景色
  10. unity3D-learnin:Priests and Devils