c# 最小二乘法拟合直线
时间: 2023-08-29 17:11:26 浏览: 187
在 C# 中,可以通过以下步骤来实现最小二乘法拟合直线:
1. 定义数据点的 x 和 y 坐标数组。
2. 计算数据点的数量 n。
3. 计算 x 和 y 坐标的平均值 x_mean 和 y_mean。
4. 计算 x 和 y 坐标的方差 Sxx 和 Syy。
5. 计算 x 和 y 坐标的协方差 Sxy。
6. 计算拟合直线的斜率 a 和截距 b,公式为:
a = Sxy / Sxx
b = y_mean - a * x_mean
7. 输出拟合直线的方程为:y = a * x + b。
下面是一个示例代码:
```csharp
double[] x = {1, 2, 3, 4, 5};
double[] y = {2, 4, 5, 4, 5};
int n = x.Length;
double x_mean = x.Average();
double y_mean = y.Average();
double Sxx = x.Sum(xi => Math.Pow(xi - x_mean, 2));
double Syy = y.Sum(yi => Math.Pow(yi - y_mean, 2));
double Sxy = x.Zip(y, (xi, yi) => (xi - x_mean) * (yi - y_mean)).Sum();
double a = Sxy / Sxx;
double b = y_mean - a * x_mean;
Console.WriteLine("拟合直线方程为:y = {0:F2}x + {1:F2}", a, b);
```
输出结果为:
```
拟合直线方程为:y = 0.60x + 2.00
```
这表示拟合直线的斜率为 0.6,截距为 2.0。
阅读全文