在单摆的微分方程中遇到一个奇怪的问题

3b1b 的微分方程概论第一章中介绍了一个单摆系统的案例,一个单摆在理想情况下做简谐振动。但在实际情况中,需要考虑偏角大小,还有空气阻力。通过受力分析,可以得出角度相关的微分方程。

image.png

image.png

在理想模型下的求解\theta方程是比较简单的:
\theta(t)=\theta_{0} \cos (\sqrt{g / L} t)
\theta(t)曲线是一条光滑的余弦曲线。

但在实际模型中通过微分方程
\ddot{\theta}(t)=-\mu \dot{\theta}(t)-\frac{g}{L} \sin (\theta(t))
来获得\theta(t)表达式和曲线是十分困难的,所以视频中提供了一种数值逼近的方法来求解任意时刻t的\theta值。

我在视频中提供的代码的基础上加上了一些修改,以便绘制从0~t 的时间内,\theta\dot{\theta}\ddot{\theta}的变化曲线,并与理想模型下对比。

# 单摆系统的微分方程
import numpy as np
import matplotlib.pyplot as plt

# 重力加速度
g = 0.98
# 单摆长度
L = 2
# 空气阻力系数
mu = 0.1
# 初始角度
THEAT_0 = np.pi/3
# 初始角速度
THEAT_DOT_0 = 0


def get_theta_double_dot(theat, theat_dot):
    """[求角速度的加速度]

    Args:
        theat ([type]): [角度]
        theat_dot ([type]): [角速度]

    Returns:
        [type]: [加速度]
    """
    return -mu*theat_dot-(g/L)*np.sin(theat)


def theat(t):
    """[求角度]

    Args:
        t ([type]): [时间t]

    Returns:
        [type]: [时间序列、理想模型下角度序列,实际角度序列、实际角速度序列、实际加速度序列]
    """
    theat = THEAT_0  # 角度 初始化
    theat_dot = THEAT_DOT_0  # 角速度 初始化
    delta_t = 0.01  # 微分时间
    x_data = []  # 时间序列
    y_data_0 = []
    y_data_1 = []
    y_data_2 = []
    y_data_3 = []

    for i in np.arange(0, t, delta_t):
        theat_double_dot = get_theta_double_dot(theat, theat_dot)
        theat += theat_dot*delta_t
        theat_dot += theat_double_dot*delta_t
        print(i, theat)
        x_data.append(i)
        y_data_0.append(THEAT_0*np.cos(np.sqrt(g/L)*i))
        y_data_1.append(theat)
        y_data_2.append(theat_dot)
        y_data_3.append(theat_double_dot)
    return x_data, y_data_0, y_data_1, y_data_2, y_data_3


# 测试。。。。。。。。。。。。
t = 100  # 时间
x, y0, y1, y2, y3 = theat(t)
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.subplot(2, 2, 1)
plt.xlabel('时间')
plt.title('理想角度')
plt.plot(x, y0, color='red', label='theta-temp')


plt.subplot(2, 2, 2)
plt.xlabel('时间')
plt.title('实际角度 theta')
plt.plot(x, y1, color='red')
plt.subplot(2, 2, 3)
plt.xlabel('时间')
plt.title('实际角速度 theta_dot')
plt.plot(x, y2, color='green')

plt.subplot(2, 2, 4)
plt.xlabel('时间')
plt.title('实际加速度 theta_double_dot')

plt.plot(x, y3, color='blue')
plt.tight_layout()
plt.show()


运行绘制得到如下曲线:

Figure_1.png

到这里还是正常的,可以看到在实际情况下,随着时间的流逝,角度会在震荡中不断衰减,直至无限到达零点的稳定位置。而角速度、和加速度也符合预期。所以我开始测试一些其他初始条件下的\theta(t)曲线,比如初始角度为\pi/2、3\pi/4、\pi,初始角速度不为0,重力加速度增加或减少,空气阻力系数增大或减少,都是正常的。但当我想测试真空下,也就是空气阻力为0时,\theta(t)函数曲线开始出现一些奇怪的事情。

image.png

表面上看上去很正常,单摆的动能和重力势能相互转化,但仔细看却发现\theta(t)的峰值在不断上升!!角速度也是。也就是说,在没有空气阻力的情况下,初始速度为零,也没有其他外界对其做功,这个单摆反而越摆越高!这完全不合常理。我开始以为是图像渲染的错误问题,所以我把时间t拉长到t=500,并打印出每个时刻的参数数值,却发现依旧是如此,图像渲染并没问题。在其他参数不变,而\mu=0时,单摆的角度、角速度波峰居然在递增?

image.png

而当我把时间继续拉大,t=1000时,更加奇怪的事情发生了。\theta居然在某个临界值突然放大,然后一路狂奔。也就是说,这个单摆越转越高,越转越快,最后彻底变成了一个轮子停不下来了,我造出了一个永动机!

image.png

我尝试把微分时间减少,但结果依旧是如此。如果你看到这篇文章,请看看我的代码哪里有问题,或者这个微分方程的数值求解哪里有问题,谢谢。

原视频链接 https://www.bilibili.com/video/BV1tb411G72z

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容