gpt4 book ai didi

c - 使用编程语言 C 对原子振荡器的线性链(由一系列 Spring 连接的原子)建模

转载 作者:行者123 更新时间:2023-11-30 21:06:38 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

4年前关闭。




Improve this question




这个问题涉及使用编程语言 C 来模拟原子的线性链
振荡器。到目前为止,我已经在接下来的几页中包含了我在这方面的工作。但基本上,N#
原子通过一系列 Spring 连接成一条直线(我在下一个
页)。两端可以被认为是墙壁。支配每个原子的运动方程
在这条链上可以推导出如下
A(t) – k/m * [ x(i-1) – 2x(i) + x(i+1) ] = 0
其中 1 <= i < = N 并且方程是耦合的。这里,k 是 Spring 力。
因此,存在一个二阶耦合微分方程系统(每个原子对应一个
链式,链条)。
问题是使用编程语言 C 来模拟这些原子的行为
振荡器。
具体来说,我的老师希望我使用 Verlet 集成如下
这个问题涉及使用编程语言 C 来模拟原子的线性链
振荡器。到目前为止,我已经在接下来的几页中包含了我在这方面的工作。但基本上,N#
原子通过一系列 Spring 连接成一条直线(我在下一个
页)。两端可以被认为是墙壁。

这是给定的数据:
(1) 对链中的第一个原子施加一个力,该力会影响链中的其余原子

(2) 因此,存在一个初速度(选择一个在
原子级)
(3) 选择一个可以让我们看到原子行为的增量时间(~ 10^-14 秒)。
(4) 使用 Verlet 积分算法求出每个原子的位置和速度
给定时间的链(本质上是模拟原子的行为)。
(5) *选择一个能正确模拟原子相互作用的 Spring 力。
(6) *设 m = mass 是原子的质量。选择这个质量。
这一切都需要使用 C 来完成。

具体来说,我的老师希望我使用 Verlet 集成,如下所示:

/image/KfDgM.jpg

/image/K7r5Y.jpg

/image/ekWO2.jpg

最佳答案

在物理模拟中,您需要存储当前时间 T 的状态并使用它来计算时间 T +\delta T 的新状态。然后重复直到 T 达到所需的结束时间。对于一些非常简单的问题,您可以只存储当前状态并即时更新它。但是这个问题在 2 个状态下更容易解决。对于当前 T 和下一个 T+\delta T 状态,我们分别称它们为 C 和 N。基本算法是

Store initial conditions in N. For starters: N.t = 0
Emit N as output.
while (N.t < end of simulated time) {
Copy N to C
Use C to compute N // N.t = C.t + delta_t and do Verlet integration...
Emit N as output.
}

您可以使用指针来避免复制操作。但我猜你是一个新的 C 程序员。不要去那里。

状态可以由数组组成,以保存原子的位置(x 坐标)、它们的速度和加速度。我建议您将这些声明为结构字段:
#define MAX_ATOM_COUNT (20) // or whatever, but don't make much bigger than needed
typedef struct state_s {
double t; // Time of this state
int n_atoms; // Actual number of atoms must be <= MAX_ATOM_COUNT.
double x[MAX_ATOM_COUNT]; // position
double v[MAX_ATOM_COUNT]; // velocity
double a[MAX_ATOM_COUNT]; // acceleration
} STATE;

structs 的优点是你可以用一个语句来做算法的复制操作:
STATE current, next;

next.t = 0;
...
while (next.t < SIMULATION_END_TIME) {
current = next;
...

你可以做剩下的事情。

关于c - 使用编程语言 C 对原子振荡器的线性链(由一系列 Spring 连接的原子)建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47545567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com