2016-04-27 189 views
1

我有一組(Xi,Yi)點,應該用通過零點的三次多項式函數擬合。擬合Math.Net通過原點的曲線

我認爲這個任務使用MathNet.Numerics,但我沒有在documentation 中看到一個選項來強制擬合函數通過原點。如果此選項不受支持,請提供一個使用MathNet.Numerics最新版本中包含的函數的解決方案。

回答

1

我會假設你知道這是你將如何適應一些數據Math.Net

Func<Double, Double> MyFunc = Fit.PolynomialFunc(xDataArr, yDataArr, 3); 

至於迫使它通過我從未見過該選項的由來。我認爲唯一真正的解決方案是將點(0, 0)納入您的數據集,並希望最好?

你可以嘗試的東西根本沒有數學意義,那就是多次將(0, 0)指向你的數據集。

+0

感謝您的快速回復。使用Math.Net擬合數據非常簡單。向數據添加(0,0)並不等同於限制圖通過(0,0)。我只是想知道我是否可以在當前版本中解決這個限制。 – atrash

+0

我已經經歷過幾次「Fit」,我從未見過有這樣的限制。而且我知道向數據添加'(0,0)'並不嚴格限制它。 //另一個可能的選擇是獲取函數係數而不是'Func',然後根據需要修改係數? – KDecker

+0

傳遞原點相當於Excel中的「設置截距= 0」。下面是用Matlab解決這個問題的兩種方法:http://www.mathworks.com/matlabcentral/answers/94272-how-do-i-constrain-a-fitted-curve-through-specific-points-like-the -origin-in-matlab http://www.mathworks.com/matlabcentral/fileexchange/35401-polyfitzero – atrash