Least Square(최소 자승법)
Mathematics Algorithm2023. 2. 26. 23:36
반응형
실험적 데이타를 추출했을 경우 데이타의 경향성을 확인하기 위해 수학적으로 사용하는 직선근사를 C# 코드로 구현한 것입니다.
아래 코드는 추출된 X,Y 좌표 상의 데이타들을 Y축의 상한값과 하한값을 범위로 하여 일차 방정식으로 식을 추출하는 코드 입니다.
public static (double slope, double yIntercept) GetLinearLeastSquaresFit(double[] dataX, double[] dataY, double lowYValue, double highYValue)
{
double slope=0, yIntercept=0;
int index = 0 ;
double count = 0 ;
double xSummary = 0;
double ySummary = 0;
double xxSummary = 0;
double xySummary = 0;
foreach(var Yvalue in dataY)
{
if(Yvalue > highYValue) break ;
if(Yvalue > lowYValue)
{
xSummary += dataX[index];
ySummary += Yvalue;
xxSummary += dataX[index] * dataX[index];
xySummary += dataX[index] * Yvalue;
count += 1 ;
}
index ++ ;
}
if(count > 2) // 최소한 2개 이상의 점이 있어야 계산이 된다.
{
try
{
slope = (xySummary * count - xSummary * ySummary) / (xxSummary * count - xSummary * xSummary);
yIntercept = (xySummary * xSummary - ySummary * xxSummary) / (xSummary * xSummary - count * xxSummary);
}
catch
{
slope = yIntercept = 0;
}
}
return (slope, yIntercept); // 기울기와 y 절편값을 리턴합니다.
}
반응형
'Mathematics Algorithm' 카테고리의 다른 글
Data Smoothing #1 알고리즘 C++ (0) | 2023.03.30 |
---|---|
Data Smoothing #2 (Savitzky Golay) C++ (0) | 2023.03.30 |
Gaussian Fitting 함수 C++ (0) | 2023.03.23 |
C# 유전 알고리즘을 적용한 최적의 길찾기 (1) | 2023.03.14 |
Data Smoothing #3 ( Exponential ) C++ (0) | 2023.02.06 |
댓글()