[Elementary Mechanics Using Python-01]

Question

5.28 Two masses and a spring. Two particles of m = 0.1 kg are attached with a spring with spring constant k = 100 N/m and equilibrium length b = 0.01 m. Both particles start at rest and the spring is at equilibrium. An external force F = 1000 N acts during 1 s on one of the particles in the direction of the other particle. Find the position of both particles as a function of time from the time t = 0 s when the external force starts acting. (You may solve this problem analytically or numerically).

设置变量

设前后两个质点的位移分别为\(x_1\),\(x_2\),时间为\(t_1\)。

列出质点的微分方程

\[\left\{
\begin{matrix}
m\frac{d^2}{dt^2}x_1 = F -k(x_1 - x_2 + b) \\
m\frac{d^2}{dt^w}x_2 = k(x_1 - x_2 + b)
\end{matrix}
\right.
\]

初始值

\[\left\{
\begin{matrix}
x_1(0) = 0 \\
x_2(0) = b \\
v_1(0) = 0 \\
v_2(0) = 0 \\
a_1(0) = \frac{F}{m} \\
a_2(0) = 0
\end{matrix}
\right.
\]

利用Python

// 引入库
import numpy as np
import matplotlib.pyplot as plt // 定义常量
F = 1000
m = 0.1
k = 100
b = 0.01 // 建立时间Array
t = np.linspace(0, 1, 1000000)
// 设置时间间隔
dt = 1/1000000 // 两质点的运动量Array
x1 = np.zeros(1000000, dtype =float)
v1 = np.zeros(1000000, dtype =float)
a1 = np.zeros(1000000, dtype =float)
x2 = np.zeros(1000000, dtype =float)
v2 = np.zeros(1000000, dtype =float)
a2 = np.zeros(1000000, dtype =float) // 初值条件
x1[0], v1[0], a1[0] = 0, 0, F/m
x2[0], v2[0], a2[0] = b, 0, 0 // 数值积分
for index in range(1, 1000000):
// 质点1的微分方程
a1[index] = (F - k*(x1[index-1] - x2[index-1] + b)) / m
v1[index] = v1[index-1] + a1[index-1]*dt
x1[index] = x1[index-1] + v1[index-1]*dt
// 质点2的微分方程
a2[index] = k*(x1[index-1] - x2[index-1] + b) / m
v2[index] = v2[index-1] + a2[index-1]*dt
x2[index] = x2[index-1] + v2[index-1]*dt
// 弹性碰撞
if x1[index] >= x2[index]:
v1[index], v2[index] = v2[index], v1[index] // 画图
plt.title("b = {}".format(b))
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.xlim([0, 1*1.1])
plt.xlabel("t(s)")
plt.ylim([0, 2500*1.1])
plt.ylabel("x(m)")
plt.plot(t, x1, label="x1(t)")
plt.plot(t, x2, label="x2(t)")
plt.legend()
plt.savefig("{0}.jpg".format(b))

我们看看随着b减小二者的运动变化







结论

显然b足够小,我们可以直接忽略弹簧和简谐运动带来的影响,因此有

\[x_1 = x_2 =
\left\{
\begin{matrix}
\frac{1}{2}\frac{F}{2m}t^2, 0 \leqslant t \leqslant 1s \\
\frac{1}{2}\frac{F}{2m}t_0^2 + \frac{F}{2m}t_0t, t \geqslant 1s
\end{matrix}
\right.
\]

[Elementary Mechanics-01]Two masses and a spring的更多相关文章

  1. 01 json环境搭建【spring + pringMVC】

    1 导包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...

  2. Spring基础01——在IDEA中编写spring.xml

    如果需要在IDEA自动创建spring.xml配置文件,那么我们就需要先引入Spring相关的依赖 <dependency> <groupId>org.springframew ...

  3. 【一头扎进Spring】 01 | 从 HelloWorld 开始看Spring

    Spring 是一个开源框架. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 IOC(DI ...

  4. [Elementary Mechanics Using Python-02]Feather in tornado

    Problem 9.17 Feather in tornado. In this project you will learn to use Newton's laws and the force m ...

  5. spring security 5 There is no PasswordEncoder mapped for the id "null" 错误

    转载请注明出处 http://www.cnblogs.com/majianming/p/7923604.html 最近在学习spring security,但是在设置客户端密码时,一直出现了一下错误提 ...

  6. .NET程序员如何快入门Spring Boot

    本篇文章将教你作为一个.NET程序员如何快入门Spring Boot.你不需要用Eclipse,也不需要用IDEA.已经习惯了VS,其他的IDE-- 但不得不说VS Code很厉害,一用就喜欢.微软给 ...

  7. 再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

    2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束. 其实早在2018年7月30号,Spring 官方就已经 ...

  8. spring aop 的一个思考

    问题: spring  aop 默认使用jdk代理织入. 也就是我们常这样配置:<aop:aspectj-autoproxy /> 通过aop命名空间的<aop:aspectj-au ...

  9. Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

    介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是 ...

随机推荐

  1. SpringBoot整合shiro-MD5盐值加密

    为什么要进行密码加密? 在我们的日常生活中,许多人有着在不同网站上使用相同密码的坏习惯(包括我也是qaq),假如应用程序或服务器出现漏洞,数据被窃取,用户的明文密码直接被暴露给黑客.显然后果将不堪设想 ...

  2. Explain 索引优化分析

    Explain 语法 # 语法 explain + DQL语句 mysql> explain select * from city where countrycode ='CHN' or cou ...

  3. 牛客网多校第4场 J Hash Function 【思维+并查集建边】

    题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字 ...

  4. HDU2837 Calculation(指数循环节)题解

    题意: 已知\(f(0)=1,f(n)=(n\%10)^{f(n/10)}\),求\(f(n)\mod m\) 思路: 由扩展欧拉定理可知:当\(b>=m\)时,\(a^b\equiv a^{b ...

  5. DOM型XSS

    打开漏洞页面,随便输入点东西,发现没有啥东西. 但是我们发现我们输入的11,在面的herf 中 看到这儿就很简单了,我们只需要闭合一下,就可以构造出我们的payload了. '><img ...

  6. WebIDE All In One

    WebIDE All In One web IDE Visual Studio Code vscode Code editing Redefined. Free. Built on open sour ...

  7. 你所不知道的 cnblogs

    你所不知道的 cnblogs cnblogs 学院 cnblogs 班级 refs https://academy.cnblogs.com/ https://academy.cnblogs.com/b ...

  8. AirPods 2 声音非常小

    AirPods 2 声音非常小 bug 停用蓝牙绝对音量 可能是因为开启了耳机的绝对音量功能; 绝对音量功能开启后,耳机的音量和手机音量分开, 可以在手机设置里停用绝对音量; refs http:// ...

  9. NAIO & Node.js All In One

    NAIO & Node.js All In One Node.js Tutorials https://nodejs.org/en/docs/ https://nodejs.org/en/do ...

  10. shit nuxt.js sensors-data

    shit nuxt.js sensors-data why I can not close it? https://github.com/nuxt/nuxt.js/issues?q=sensors+d ...