欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解

 更新時(shí)間:2017年09月29日 11:33:50   作者:caimouse  
這篇文章主要給大家介紹了關(guān)于利用python如何求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹了關(guān)于利用python求解物理學(xué)中雙彈簧質(zhì)能系統(tǒng)的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

物理的模型如下:

在這個(gè)系統(tǒng)里有兩個(gè)物體,它們的質(zhì)量分別是m1和m2,被兩個(gè)彈簧連接在一起,伸縮系統(tǒng)為k1和k2,左端固定。假定沒有外力時(shí),兩個(gè)彈簧的長(zhǎng)度為L(zhǎng)1和L2。

由于兩物體有重力,那么在平面上形成摩擦力,那么摩擦系數(shù)分別為b1和b2。所以可以把微分方程寫成這樣:

這是一個(gè)二階的微分方程,為了使用python來(lái)求解,需要把它轉(zhuǎn)換為一階微分方程。所以引入下面兩個(gè)變量:

這兩個(gè)相當(dāng)于運(yùn)動(dòng)的速度。通過運(yùn)算可以改為這樣:

這時(shí)可以線性方程改為向量數(shù)組的方式,就可以使用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); 

在這里把結(jié)果輸出到文件two_springs.dat,接著寫一個(gè)程序來(lái)把數(shù)據(jù)顯示成圖片,就可以發(fā)表論文了,代碼如下:

# 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) 

最后來(lái)查看一下輸出的png圖片如下:


總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • python深度優(yōu)先搜索和廣度優(yōu)先搜索

    python深度優(yōu)先搜索和廣度優(yōu)先搜索

    這篇文章主要介紹了python實(shí)現(xiàn)圖的深度優(yōu)先搜索和廣度優(yōu)先搜索相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • Django記錄操作日志與LogEntry的使用詳解

    Django記錄操作日志與LogEntry的使用詳解

    我們既知道如何記錄變更日志,也知道如何獲取變更日志,那么如何才能夠在admin后臺(tái)方便地查看操作日志呢?這篇文章主要給大家介紹了關(guān)于Django記錄操作日志與LogEntry使用的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 如何獲取numpy array前N個(gè)最大值

    如何獲取numpy array前N個(gè)最大值

    這篇文章主要介紹了獲取numpy array前N個(gè)最大值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 解決python3中自定義wsgi函數(shù),make_server函數(shù)報(bào)錯(cuò)的問題

    解決python3中自定義wsgi函數(shù),make_server函數(shù)報(bào)錯(cuò)的問題

    下面小編就為大家分享一篇解決python3中自定義wsgi函數(shù),make_server函數(shù)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2017-11-11
  • python 序列類型list示例詳解

    python 序列類型list示例詳解

    列表(List)是一種有序的集合,可以包含任意類型的對(duì)象:數(shù)字、字符串甚至其他列表等,列表是可變的,這意味著我們可以添加、刪除或更改列表中的元素,這篇文章主要介紹了python 序列類型list示例詳解,需要的朋友可以參考下
    2024-04-04
  • python網(wǎng)絡(luò)爬蟲精解之pyquery的使用說(shuō)明

    python網(wǎng)絡(luò)爬蟲精解之pyquery的使用說(shuō)明

    PyQuery是一個(gè)類似于jQuery的解析網(wǎng)頁(yè)工具,使用lxml操作xml和html文檔,它的語(yǔ)法和jQuery很像。和XPATH,Beautiful Soup比起來(lái),PyQuery更加靈活,提供增加節(jié)點(diǎn)的class信息,移除某個(gè)節(jié)點(diǎn),提取文本信息等功能
    2021-09-09
  • python使用正則表達(dá)式匹配txt特定字符串(有換行)

    python使用正則表達(dá)式匹配txt特定字符串(有換行)

    這篇文章主要給大家介紹了關(guān)于python使用正則表達(dá)式匹配txt特定字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python關(guān)鍵字之global與nonlocal

    Python關(guān)鍵字之global與nonlocal

    這篇文章主要為大家詳細(xì)介紹了Python關(guān)鍵字之global與nonlocal,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • pytorch無(wú)坑安裝CPU版小白教程(配gpu版鏈接、conda命令教程)

    pytorch無(wú)坑安裝CPU版小白教程(配gpu版鏈接、conda命令教程)

    pip安裝無(wú)論是cpu還是gpu的pytorch安裝,其實(shí)官方給了很好的安裝流程,本文主要介紹了pytorch無(wú)坑安裝CPU版小白教程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 在Django中實(shí)現(xiàn)定時(shí)任務(wù)的多種方法

    在Django中實(shí)現(xiàn)定時(shí)任務(wù)的多種方法

    在 Django 項(xiàng)目中實(shí)現(xiàn)定時(shí)任務(wù)可以幫助自動(dòng)化執(zhí)行一些后臺(tái)任務(wù),如數(shù)據(jù)清理、定期報(bào)告生成等,以下是幾種常見的實(shí)現(xiàn)方式,每種方法都有其獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-08-08

最新評(píng)論