Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何评估我的n体模拟的准确性?_Algorithm_Performance_Simulation_Game Physics - Fatal编程技术网

Algorithm 如何评估我的n体模拟的准确性?

Algorithm 如何评估我的n体模拟的准确性?,algorithm,performance,simulation,game-physics,Algorithm,Performance,Simulation,Game Physics,我正在用python做一个n体模拟。数值求解控制n粒子间引力相互作用的微分方程组有许多不同的方法;n体模拟的挑战是找到一种既准确又快速的积分方案 目前,我正在使用n small(比如n≤ 5)。我从最简单的欧拉积分法开始,这是一阶积分法。即使是两个物体,如果物体靠得很近,这种方法也会产生非常严重的误差(因为它们之间的力变得非常大,所以它们的加速度变得非常大)。当然,我们总是可以减少时间步长以获得更高的精度,但这是以牺牲计算时间为代价的 接下来我想实现一个更高阶的方法,它具有更好的稳定性,比如蛙跳

我正在用python做一个n体模拟。数值求解控制
n
粒子间引力相互作用的微分方程组有许多不同的方法;n体模拟的挑战是找到一种既准确又快速的积分方案

目前,我正在使用n small(比如
n≤ 5
)。我从最简单的欧拉积分法开始,这是一阶积分法。即使是两个物体,如果物体靠得很近,这种方法也会产生非常严重的误差(因为它们之间的力变得非常大,所以它们的加速度变得非常大)。当然,我们总是可以减少时间步长以获得更高的精度,但这是以牺牲计算时间为代价的

接下来我想实现一个更高阶的方法,它具有更好的稳定性,比如蛙跳积分或龙格库塔积分

我希望这些方法能给出更好的结果,但问题是我不确定如何定量测量模拟的准确性。我应该使用什么指标?

其中一个问题是,我无法判断模拟是否给出了真实的结果,因为我没有使用重力常数
G
的真实值,而且我模拟中的距离/时间/质量都没有单位

我没有注意到单位的原因是,比如说,如果我想做一个太阳-地球-月球比例的模拟;由于日地距离大约是地月距离的370倍,所以不可能所有的东西都放在显示窗口内,也不可能区分地球和月球

另一个问题是使用
G
的实际值和实际质量等会导致涉及大数字的计算。但是,在保持所有其他条件不变的情况下,选择较低的
G
值可以减少误差(因为力会更小)。因此,我无法判断模拟是否准确


那么,我如何严格测试模拟的准确性,以及我可以对单位做些什么呢?

对不起,这对我没有帮助。我的问题是我没有比较的方法。我不知道如何评估我的程序的准确性,因为我不知道使用哪种度量标准。此外,我无法判断我得到的结果是否真实,因为我不确定使用哪种单位。那么,你可以使用的另一个标准工具是converge plot。采取越来越小的步长,看看结果是否收敛到一个解决方案,“真”值和计算值之间的误差是否在继续减小。下载我们恒星系统过去10年的轨道数据。将其与您的程序进行比较。外面只有一堆行星。从天文学网站上找到必要的数据应该不难。或者你可以从月球和地球开始。@huseyintugrulbuyukisik哈哈,月球和地球是如此的错误。。。这是太阳-地球-月球,其背后的计算并不容易,即使近似值也是一场噩梦。同时,获得太阳系的真实数据并不像应该的那么容易。。。参考坐标系更多,网络上的大多数数据不够准确。请原谅我的无知,但请你不要只监测系统中的总能量。当你们在模拟一个封闭系统时,任何计算上的问题都会表现为角动量的损失或增加,它可能是一个累进的积累或循环的变化,这两者都将是一个肯定的信号,一定是出了问题。对不起,但这对我没有帮助。我的问题是我没有比较的方法。我不知道如何评估我的程序的准确性,因为我不知道使用哪种度量标准。此外,我无法判断我得到的结果是否真实,因为我不确定使用哪种单位。那么,你可以使用的另一个标准工具是converge plot。采取越来越小的步长,看看结果是否收敛到一个解决方案,“真”值和计算值之间的误差是否在继续减小。下载我们恒星系统过去10年的轨道数据。将其与您的程序进行比较。外面只有一堆行星。从天文学网站上找到必要的数据应该不难。或者你可以从月球和地球开始。@huseyintugrulbuyukisik哈哈,月球和地球是如此的错误。。。这是太阳-地球-月球,其背后的计算并不容易,即使近似值也是一场噩梦。同时,获得太阳系的真实数据并不像应该的那么容易。。。参考坐标系更多,网络上的大多数数据不够准确。请原谅我的无知,但请你不要只监测系统中的总能量。当你在模拟一个封闭的系统时,任何计算上的问题都会表现为角动量的损失或增加,它可能是一个渐进的积累或循环变化,这两者都将是一个肯定的迹象,表明某些东西出了问题。