2014-06-20 4 views
7

저는 Math.Net 라이브러리를 처음 접했고 지수 함수를 기반으로 커브 피팅을 수행하는 데 문제가 있습니다.Math.Net을 사용한 지수 기반 Curve-Fit

f(x) = a*exp(b*x) + c*exp(d*x) 
Coefficients (with 95% confidence bounds): 
a = 29.6  (29.49  , 29.71) 
b = 0.000408 ( 0.0003838, 0.0004322) 
c = -6.634  (-6.747 , -6.521) 
d = -0.03818 (-0.03968 , -0.03667) 
:

blah

MATLAB은 다음과 같은 매개 변수를 계산 : 다음 이미지와 같이 MATLAB 내가 꽤 좋은 결과를 얻을 수 사용

f(x) = a*exp(b*x) + c*exp(d*x) 

: 더 구체적으로 나는이 기능을 사용하려면

Math.Net을 사용하여 이러한 결과를 얻을 수 있습니까?

답변

1

아니요 현재로서는 지수 지원이 나타나지 않습니다. 상처 입는 경우 링크에서 중복

https://discuss.mathdotnet.com/t/exponential-fit/131

내용 :

것은 당신이 그것을 변환하여, 유사한 비 선형화 할 수있는 테이너가 해결 방법을 제안 곳 그러나 Math.NET 포럼에서 토론이있다 변형에 의한 선형 모델 .

double[] Exponential(double[] x, double[] y, 
    DirectRegressionMethod method = DirectRegressionMethod.QR) 
{ 
    double[] y_hat = Generate.Map(y, Math.Log); 
    double[] p_hat = Fit.LinearCombination(x, y_hat, method, t => 1.0, t => t); 
    return new[] {Math.Exp(p_hat[0]), p_hat[1]}; 
} 

사용 예제 :

double[] x = new[] { 1.0, 2.0, 3.0 }; 
double[] y = new[] { 2.0, 4.1, 7.9 }; 
double[] p = Exponential(x,y); // a=1.017, r=0.687 
double[] yh = Generate.Map(x,k => p[0]*Math.Exp(p[1]*k)) // 2.02, 4.02, 7.98 
다음해야 작업의 라인을 따라 뭔가
2

Math.net을 보면 Math.net이 여러 유형의 회귀 분석을하는 것처럼 보입니다. 반면에 함수에 반복적 인 메서드가 필요합니다. 예를 들어 Gauss-Newton의 방법으로 각 반복에서 선형 회귀를 사용하여 선형 방정식의 시스템을 해결하지만이 방법을 작성하는 데는 여전히 "수동"작업이 필요합니다.

1

답변 : 아직, 나는 믿습니다. 기본적으로 전체 csmpfit 패키지의 기여가 있지만 아직 Math.Net에 통합되지 않았습니다. 별도의 라이브러리로 사용할 수 있으며 완전한 통합이 완료되면 Math.Net으로 이동할 수 있습니다. 링크 http://csmpfit.codeplex.com