Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. def getSeteliteParameters(dane, dist):
  2.  
  3. numerSatelity = dane[0]
  4. print "wyniki dla satelity %d" % numerSatelity
  5. a0 = dane[7]
  6. a1 = dane[8]
  7. a2 = dane[9]
  8. A = dane[17]
  9. dn = dane[12]
  10. M0 = dane[13]
  11. e = dane[15]
  12. w = dane[24]
  13. idot = dane[26]
  14. I0 = dane[22]
  15. omega0 = dane[20]
  16. omegaDot = dane[25]
  17. toe = dane[18]
  18. print "toe: %f" % toe
  19.  
  20.  
  21. cus = dane[16]
  22. crs = dane[11]
  23. cuc = dane[14]
  24.  
  25. cic = dane[19]
  26. cis = dane[21]
  27. crc = dane[23]
  28.  
  29. dt = tsv - toe
  30.  
  31. print "dt: %f" % dt
  32.  
  33. tprop = dist / c
  34. print "tprop: %f" % tprop
  35.  
  36.  
  37. dts = a0 + a1*dt + a2*dt
  38. print "dts: %f" % dts
  39.  
  40. t = tsv - dts - tprop
  41. print "t: %f" % t
  42.  
  43. u = 3.986005E+14
  44. Oe = 7.2921151467*pow(10,-5)
  45.  
  46. A = pow(A,2)
  47.  
  48. print "A: %f" % A
  49.  
  50. n0 = math.sqrt(u/pow(A,3))
  51. print "n0: %f" % n0
  52.  
  53. tk = t - toe
  54.  
  55. print "tk: %f" % tk
  56.  
  57. n = n0 + dn
  58. print "n: %f" % n
  59.  
  60. Mk = M0+n*tk
  61.  
  62. print "Mk: %f" % Mk
  63.  
  64. Ek = 1
  65. Ek0 = Mk
  66. while abs(Ek0 - Ek) > 1E-15:
  67. Ek = Ek0
  68. Ek0 = Mk + e*math.sin(Ek)
  69.  
  70. print "Ek0: %f" % Ek0
  71. Ek = Ek0
  72.  
  73. vk = math.atan2((math.sqrt(1-pow(e,2))*math.sin(Ek)/(1-e*math.cos(Ek))),((math.cos(Ek)-e)/(1-e*math.cos(Ek))))
  74.  
  75. print "vk: %f" % vk
  76.  
  77. Ek = math.acos((e+math.cos(vk))/(1+e*math.cos(vk)))
  78.  
  79. Fik = vk + w
  80.  
  81. print "Fik: %f" % Fik
  82.  
  83. duk = cus*math.sin(2*Fik)+cuc*math.cos(2*Fik)
  84. drk = crs*math.sin(2*Fik)+crc*math.cos(2*Fik)
  85. dik = cis*math.sin(2*Fik)+cic*math.cos(2*Fik)
  86.  
  87. print "duk: %f" % duk
  88. print "drk: %f" % drk
  89. print "dik: %f" % dik
  90.  
  91. uk = Fik + duk
  92.  
  93. print "uk: %f" % uk
  94.  
  95. rk = A*(1-e*math.cos(Ek))+drk
  96.  
  97. print "rk: %f" % rk
  98.  
  99. ik = I0+dik+idot*tk
  100.  
  101. print "ik: %f" % ik
  102.  
  103. xkp = rk*math.cos(uk)
  104. ykp = rk*math.sin(uk)
  105.  
  106. print "xkp: %f" % xkp
  107. print "ykp: %f" % ykp
  108.  
  109. Ok = omega0+(omegaDot-Oe)*tk-Oe*toe
  110.  
  111. print "Ok: %f" % Ok
  112.  
  113.  
  114. xk = xkp*math.cos(Ok) - ykp*math.cos(ik)*math.sin(Ok)
  115. yk = xkp*math.sin(Ok) + ykp*math.cos(ik)*math.cos(Ok)
  116. zk = ykp*math.sin(ik)
  117.  
  118. print "xk: %f" % xk
  119. print "yk: %f" % yk
  120. print "zk: %f" % zk
  121. print "do pliku %d" % numerSatelity, dist, xk, yk, zk, "%f15" % dts
  122. return numerSatelity, xk, yk, zk, dts
  123.  
  124.  
  125. def getL(dist, dt):
  126. return dist + dt*c
  127.  
  128. def getRo(X,Y,Z):
  129. return math.sqrt((X-X0) ** 2 + (Y-Y0) ** 2 + (Z-Z0) ** 2)
  130.  
  131. wsp2 = []
  132. A =[]
  133. L =[]
  134.  
  135. for (i, elem) in enumerate(data):
  136. print "i", i
  137. dist = distances[i]
  138. wynik = getSeteliteParameters(elem, dist)
  139. wsp2.append(wynik)
  140. X = wynik[1]
  141. Y = wynik[2]
  142. Z = wynik[3]
  143. dt = wynik[4]
  144. ro = getRo(X,Y,Z)
  145.  
  146. print "ro", ro
  147. print "dist", dist
  148.  
  149. elem1 = -(X-X0)/ro
  150. elem2 = -(Y-Y0)/ro
  151. elem3 = -(Z-Z0)/ro
  152. A.append([elem1, elem2, elem3, c])
  153. L.append(getL(dist,dt)-getRo(X,Y,Z))
  154.  
  155.  
  156.  
  157. At = np.transpose(A)
  158. wynik = np.dot((np.linalg.inv(np.dot(At,A))),(np.dot(At,L)))
  159. V = np.dot(A,wynik) - L
  160.  
  161. m = np.dot(np.transpose(V),V)/(len(A)-len(wynik))
  162.  
  163. print A
  164. print L
  165.  
  166. for elem in wynik:
  167. print "%0.5f" % elem
  168. print V
  169.  
  170. print "X0", X0+wynik[0]
  171. print "Y0", Y0+wynik[1]
  172. print "Z0", Z0+wynik[2]
  173. print "dt %f15" % wynik[3]
  174. print math.sqrt(m)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement