- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试找到一种方法来检测共振行星的轨道参数(周期、偏心率、半长轴...)。
我知道如果两颗行星之间的比率是可比的,这意味着它们处于共振状态,但假设我想知道它们处于哪种共振状态,我该怎么做呢?
例如,我有 N 个行星和周期的矩阵。我如何创建一个循环来检查行星是否共振以及共振情况?
类似于:
for i=1, N
P(i)/P(i-1)=m
if m (check the resonance condition) then
write (planets parameters)
end if
end for
非常感谢。
我制作了这个程序,我有一个 2xN 矩阵,其中列是行星的 ID 及其周期,行是行星的数量,例如:
1 0.44
1 0.8
1 0.9
2 0.9
2 1.2
3 2.0
3 3.0
从一个行星系统更改为另一个行星系统的诀窍是将一个系统的所有行星重命名为相同编号,将另一个系统的行星重命名为另一个编号,这样我就可以改变一个系统的共振条件系统到另一个系统。
程序很简单:
for r=1,row <--- THIS MUST READ all the file
if (difference in name = 0.) then start the resonance find criterion
for l = 0,4 (number of planet in each system: THIS MUST BE MODIFIED !!)
for i = 1,5
for j = 1,5
if (i*period(l)-j*period(l+1) eq 0) <- RESONANCE CONDITION !!!
then write on file
end for
end for
end for
else write a separation between the first set and second set of planets !
end for
这是我写的 IDL 代码:
pro resfind
file = "data.dat"
rows =File_Lines(file) ; per le righe
openr,lun,file,/Get_lun ; per le colonne
line=""
readf,lun,line
cols = n_elements(StrSplit(line, /RegEx, /extract))
openr,1,"data.dat"
data = dblarr(cols,rows)
readf,1,data
close,1
name = data(0,*)
period = data(1,*)
openw,2,"find.dat"
for r = 0, rows-2 DO BEGIN ;
if (name(r)-name(r+1) EQ 0) then begin
for l = 0,rows-2 do begin
for j = 1,4 do begin
for i = 1,4 do begin
if (abs(i*period(l)-j*period(l+1)) EQ 0.) then begin
printf,2, 'i resonance:', i , ' j resonance:',j,' planet ID:',l,' planet ID:',l+1
endif
endfor
endfor
endfor
endif else begin
printf,2, ' '
endfor
close,2
end
问题:
最佳答案
首先,每个实数都可以表示为具有任意有限精度的整数比。当我们在十进制系统中用越来越多的数字表示数字时,尤其如此。因此,您不仅需要检查轨道周期是否处于某个整数对整数的比率,而且还需要检查两个整数是否相对较小。而且是武断的决定,是“小”的。
其次,请记住,如果一个不是另一个的副本,那么两个浮点值通常是不同的。例如 3*(1/3)
可能不等于 1。这是有限精度的结果:1/3 以二进制表示时会无限重复,因此当它存储在内存中时会在某处被截断.因此,您不应该检查周期比率是否等于某个比率,而是检查它是否足够接近某个比率。并且说什么是“足够接近”是武断的。
所以最快的方法是构建一些相对较小的整数的比率数组,然后对其进行排序并删除重复项(3:3 = 2:2,并且你的数组中不需要多个)。 (请记住,重复项不是彼此相等的,而是彼此足够接近的。)然后,对于每两个行星计算轨道周期比并在表中进行二进制搜索以找到最接近的值。如果足够近,您就会发现共振。
关于algorithm - 如何找到共振行星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724822/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!