前言

本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

物理的模型如下:

在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。

由于两物体有重力,那么在平面上形成摩擦力,那么摩擦系数分别为b1和b2。所以可以把微分方程写成这样:

这是一个二阶的微分方程,为了使用python来求解,需要把它转换为一阶微分方程。所以引入下面两个变量:

这两个相当于运动的速度。通过运算可以改为这样:

这时可以线性方程改为向量数组的方式,就可以使用python定义了

代码如下:

# Use ODEINT to solve the differential equations defined by the vector field

from scipy.integrate import odeint

def vectorfield(w, t, p):

"""

Defines the differential equations for the coupled spring-mass system.

Arguments:

w : vector of the state variables:

w = [x1,y1,x2,y2]

t : time

p : vector of the parameters:

p = [m1,m2,k1,k2,L1,L2,b1,b2]

"""

x1, y1, x2, y2 = w

m1, m2, k1, k2, L1, L2, b1, b2 = p

# Create f = (x1',y1',x2',y2'):

f = [y1,

(-b1 * y1 - k1 * (x1 - L1) + k2 * (x2 - x1 - L2)) / m1,

y2,

(-b2 * y2 - k2 * (x2 - x1 - L2)) / m2]

return f

# Parameter values

# Masses:

m1 = 1.0

m2 = 1.5

# Spring constants

k1 = 8.0

k2 = 40.0

# Natural lengths

L1 = 0.5

L2 = 1.0

# Friction coefficients

b1 = 0.8

b2 = 0.5

# Initial conditions

# x1 and x2 are the initial displacements; y1 and y2 are the initial velocities

x1 = 0.5

y1 = 0.0

x2 = 2.25

y2 = 0.0

# ODE solver parameters

abserr = 1.0e-8

relerr = 1.0e-6

stoptime = 10.0

numpoints = 250

# Create the time samples for the output of the ODE solver.

# I use a large number of points, only because I want to make

# a plot of the solution that looks nice.

t = [stoptime * float(i) / (numpoints - 1) for i in range(numpoints)]

# Pack up the parameters and initial conditions:

p = [m1, m2, k1, k2, L1, L2, b1, b2]

w0 = [x1, y1, x2, y2]

# Call the ODE solver.

wsol = odeint(vectorfield, w0, t, args=(p,),

atol=abserr, rtol=relerr)

with open('two_springs.dat', 'w') as f:

# Print & save the solution.

for t1, w1 in zip(t, wsol):

out = '{0} {1} {2} {3} {4}\n'.format(t1, w1[0], w1[1], w1[2], w1[3]);

print(out)

f.write(out);

在这里把结果输出到文件two_springs.dat,接着写一个程序来把数据显示成图片,就可以发表论文了,代码如下:

# Plot the solution that was generated

from numpy import loadtxt

from pylab import figure, plot, xlabel, grid, hold, legend, title, savefig

from matplotlib.font_manager import FontProperties

t, x1, xy, x2, y2 = loadtxt('two_springs.dat', unpack=True)

figure(1, figsize=(6, 4.5))

xlabel('t')

grid(True)

lw = 1

plot(t, x1, 'b', linewidth=lw)

plot(t, x2, 'g', linewidth=lw)

legend((r'$x_1$', r'$x_2$'), prop=FontProperties(size=16))

title('Mass Displacements for the\nCoupled Spring-Mass System')

savefig('two_springs.png', dpi=100)

最后来查看一下输出的png图片如下:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解相关推荐

  1. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  2. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  3. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  4. python中读取文本文件_利用Python读取文本文件?

    文件的遍历 因为文件保存了很多字符和行,因此也是循环常见的典型使用案例,最原始的方法可以调用文件对象的read方法,把文件内容一次性加载至字符串对象 file = open('myfile.txt', ...

  5. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  6. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

  7. python制作心形照片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  8. python用渐变色画圆_利用python控制Autocad:pyautocad方式

    发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...

  9. python爬去百度文库_利用Python语言轻松爬取数据[精品文档]

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

最新文章

  1. h264和h265多维度区别
  2. 知道这 20 个正则表达式,能让你少写 1,000 行代码
  3. 断网与黑客无关 我来抖一抖暴风那点见不得人的猫腻
  4. linux怎么装谷歌浏览器,如何在linux CentOS 上安装chrome 谷歌浏览器?
  5. [html] HTML5如何使用音频和视频?
  6. 重新拎一遍js的正则表达式
  7. dos2unix命令找不到_Linux系统中的dos2unix命令
  8. 为提升在线语音识别效率,他创造了两种升级版算法模型
  9. html5片转为base64,base64和图片的互转(HTML5的File实现)
  10. 问世 20 多年的 PHP 还是最好的编程语言吗?
  11. 游戏开发之类和对象的基本概念(C++基础)
  12. 中国农业银行总行西安成都软件开发中心笔试面试流程
  13. 50个最新TypeScript面试题合集 – TypeScript开发教程
  14. windows 8 修改窗口颜色为淡绿色
  15. CSS图片保持原比例
  16. 计算机专业顶岗实训,计算机专业学生的顶岗实习
  17. Linux内核与编程
  18. oracle显示人民币,如何在ORACLE中实现人民币大写的转换
  19. VASP计算弹性常数
  20. OGR遍历要素及重置

热门文章

  1. MyBatis——XML配置解析
  2. 边端云处理器系列技术参数
  3. tensorflow-yolov4实施方法
  4. 2021年大数据Flink(九):Flink原理初探
  5. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...
  6. Ubuntu系统执行shell 脚本的方法
  7. 工具推荐:Astah Community 绘制图形
  8. 导入第三方工程报错的处理方法
  9. AngularJS 杂项知识点
  10. iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]