99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解
利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解
2018-07-08
收藏

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

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

物理的模型如下:

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

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

這是一個(gè)二階的微分方程,為了使用python來求解,需要把它轉(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è)程序來把數(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)

最后來查看一下輸出的png圖片如下:


總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值



數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }