日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

精密星历卫星钟差插值程序

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精密星历卫星钟差插值程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???? 本程序采用VB.net語言編寫。

???? 本程序采用插值算法,來完成對精密星歷鐘差文件(.clk)的加密工作。如可以將30S鐘差間隔的鐘差文件加密到15s、10s、2s、1s等。 程序中寫有四種經典的插值算法,分別是Lagrange插值算法、Newton插值算法、三次樣條插值算法、分段線性插值算法等,這幾種算法的正確性以得到過驗證。

??? 首先導入精密星歷鐘差文件,根據導入的鐘差文件進行判斷,將其信息進行整理并繪制可視化圖表以顯示24H內每顆衛星的鐘差變化趨勢。

??? 導入文件之后,可以根據用戶自身的插值需求將鐘差文件加密到更小的鐘差間隔,如導入的精密星歷衛星鐘差文件為5min鐘差間隔,用戶可以將其加密到30s、15s、10s以及更小的鐘差間隔,并根據結果生成相應的clk文件。

插值算法:

Lagrange插值:

Public Function Lagrange(X() As Double, Y() As Double, xx As Double)Dim yy As Double = 0 '最后返回的多項式值Dim ll(X.Length - 1) As Double '中間變量For i = 0 To X.Length - 1Dim l1 As Double = 1 '多項式系數分子Dim l2 As Double = 1 '多項式系數分母For j = 0 To X.Length - 1If i <> j Thenl1 = l1 * (xx - X(j))l2 = l2 * (X(i) - X(j))ElseContinue ForEnd IfNextll(i) = l1 / l2NextFor i = 0 To X.Length - 1yy = yy + ll(i) * Y(i)NextReturn yyEnd Function

Newton插值:

Public Function Newton(X() As Double, Y() As Double, xx As Double)Dim yy As Double = 0 '最后返回的多項式值Dim n As Integer = UBound(X) '節點數Dim A(n, n) As Double '差商表Dim dx(n) As Double '牛頓多項式中(x-x0)項'計算差商表For i = 0 To nA(i, 0) = Y(i)NextFor i = 1 To nFor j = 1 To iA(i, j) = (A(i, j - 1) - A(i - 1, j - 1)) / (X(i) - X(i - j))NextNext'計算II(x-xi)dx(0) = 1For i = 1 To ndx(i) = dx(i - 1) * (xx - X(i - 1))Next'計算牛頓多項式For i = 0 To nyy = yy + A(i, i) * dx(i)NextReturn yyEnd Function

三次樣條插值:

Public Function CubicSpline(X As Double(), Y As Double(), xx() As Double)Dim yy(xx.Length - 1) As Double '函數返回的對應xx 的插值Dim n As Integer = UBound(X)Dim S2(n, 0), m(n, 0), AA(n, n) As Double '用于矩陣運算,即AA*M=S2Dim h(n - 1) As Double '計算步長,即X(i+1)-X(i)Dim dy(n - 1) As Double 'y的微分For i = 0 To n - 1h(i) = X(i + 1) - X(i)dy(i) = (Y(i + 1) - Y(i)) / h(i)Next'自然邊界型三次樣條,二階導數兩個端點值為0S2(0, 0) = 0 : S2(n, 0) = 0For i = 1 To n - 1S2(i, 0) = 6.0 * (dy(i) - dy(i - 1))Next'確定系數陣AAAA(0, 0) = 1AA(n, n) = 1For i = 1 To n - 1AA(i, i - 1) = h(i - 1)AA(i, i) = 2 * (h(i - 1) + h(i))AA(i, i + 1) = h(i)Next'求二次微分陣mm = Multiply(Inv(AA), S2)'求多項式Dim a, b, c, d, dx As DoubleFor j = 0 To xx.Length - 1For i = 0 To nIf (xx(j) > X(i) Or xx(j) = X(i)) And (xx(j) < X(i + 1) Or xx(j) = X(i + 1)) Thena = Y(i)b = (Y(i + 1) - Y(i)) / h(i) - h(i) / 2.0 * m(i, 0) - h(i) * (m(i + 1, 0) - m(i, 0)) / 6c = m(i, 0) / 2d = (m(i + 1, 0) - m(i, 0)) / (6.0 * h(i))dx = xx(j) - X(i)yy(j) = a + b * dx + c * dx ^ 2 + d * dx ^ 3Exit ForElseContinue ForEnd IfNextNextReturn yyEnd Function

線性插值:

Public Function PiecewiseLinearity(X As Double(), Y As Double(), xx As Double)Dim yy As Double '函數返回的對應xx 的插值For i = 1 To X.Length - 1If xx >= X(i - 1) And xx <= X(i) Thenyy = (xx - X(i)) / (X(i - 1) - X(i)) * Y(i - 1) + (xx - X(i - 1)) / (X(i) - X(i - 1)) * Y(i)Exit ForElseContinue ForEnd IfNextReturn yyEnd Function

源程序與exe文件下載地址:精密星歷衛星鐘差插值程序

畢業答辯PPT:https://download.csdn.net/download/weixin_44705612/85820126

歡迎喜歡vb語言的朋友一起交流探討。 本人VB.NET語言水平尚可,有需要代寫程序可以私信我。

總結

以上是生活随笔為你收集整理的精密星历卫星钟差插值程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。