2012-07-06 43 views
1

我試圖從給定x值的自然三次樣條中使用自然樣條線形式從http://mathworld.wolfram.com/CubicSpline.html並使用Java編碼http://www.cse.unsw.edu.au/~lambert/splines/natcubic.html來計算特定的y值。給定值處的自然樣條值

不幸的是,這個樣條曲線形式在樣條曲線的每個段上從0-> 1的範圍內取一個t值,以便計算沿着每個段的x和y座標。我想輸入一個給定的x座標並得到相應的y座標,但我不知道如何從我的x座標得到一個t值。即,樣條的係數被存儲爲y = f(t)和x = f(t),但是我想得到y = f(x)。在創建查找表的過程中,是否有任何精確的解決方案來從這種樣條曲線中獲得y = f(x)?

我試過其他的實現方法,它需要一個x值並返回一個y值(例如,apache commons math,Flanagan的科學圖書館),但上述網站的spline版本在我的應用程序中表現得很好。

謝謝。

+0

這將是棘手。參數化樣條線是自由形式的,所以您可以爲給定的x座標設置多個參數值,這會讓您的生活更加艱難。在http://math.stackexchange.com上也不會有任何傷害嘗試張貼此問題 – mathematician1975 2012-07-06 22:35:17

回答

0

你想要的東西並不總是可能的。 可以有一個樣條線段,它通過兩個不同點爲單個x值。如果你真的需要它作爲x的一個函數,你可以求解t的三次方程X(t)= x0(例如使用Cardano的公式),然後用Y(t)中的t的值代替, 。

+0

感謝Petar,正如另一位評論者所建議的那樣,我沒有考慮過給定單個X的多個Y值的可能性價值,因爲這是我的問題的一個約束(x是單向的,而y可以隨着x向上或向下移動;例如,動物不能縮小的時間序列的增長)。我不知道我是否按照你的解決X(t)的建議 - 我不需要t(X)來計算Y(t)嗎? – wcoop 2012-07-09 18:26:31

+0

是的,這就是我的意思 - 你將通過爲t計算X(t)= x0來得到t(X)。那麼Y(X)= Y(t(X))。 – 2012-07-10 04:11:32

+0

謝謝Petar,我會試一試解決。 – wcoop 2012-07-10 13:20:12