日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/15 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python代码物理_利用python求解物理学中的双弹簧质能系统详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

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

物理的模型如下:

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

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

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

這兩個相當于運動的速度。通過運算可以改為這樣:

這時可以線性方程改為向量數(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,接著寫一個程序來把數(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)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

總結(jié)

以上是生活随笔為你收集整理的python代码物理_利用python求解物理学中的双弹簧质能系统详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。