首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中如何用欧拉方法在原子尺度上编码简单的谐振子系统

在python中如何用欧拉方法在原子尺度上编码简单的谐振子系统
EN

Stack Overflow用户
提问于 2022-11-15 17:41:59
回答 1查看 40关注 0票数 1

我正在编写代码来解决简单的谐振子系统使用欧拉法。该系统的二阶ODE为两阶ODE,分别为x‘=v和v’= -k/m,问题是将x和v的方程解成时间函数和图first,所用模型是一个钠原子,质量为3.82x10^-26 kg,k=12.2N/m.

我以前有一个解决螺旋弹簧SHO系统的程序,它工作得很好。然而,该系统的数字要大得多。在我的代码中,我只是更改了参数的值,并保留了其他一切,就像螺旋弹簧一样。这个图形应该看起来像一个正弦曲线,但它不是,我一直收到溢出警告。

我的问题是,我还需要修改哪些代码才能处理这些数字呢?

简单谐振子的Python代码

图表

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-15 18:30:45

在尝试了您的代码并对参数进行了一些更改之后,我相信您的问题是由您的时间步长造成的。

如果你考虑钠原子在弹簧常数作用下的加速度,它会很大,在10^16 ms^-2附近,所以原子会在平衡附近快速移动。振荡周期是\sqrt{m/k}的阶数,在这种情况下,大约是1e-27秒。

所以,如果你用0.1秒的时间步长,原子会振荡很多次,所以你不会看到任何东西看起来像正弦波。发生溢出的原因是,距离和速度的估计步长太大,欧拉近似是不合适的。

我通过以下设置更改了您的代码:

代码语言:javascript
复制
t_max = 1e-12
delta_t = 1e-15

从中得到了一个很好的正弦波。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74450022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档