我正在使用 alglib 使用最小二乘线性拟合方程计算斜率和截距值,如下所示: -
int info;
double[] c;
alglib.lsfitreport rep;
var fmatrix = new double[,] { { 1, 0 }, { 1, 0.05 }, { 1, 0.1 }, { 1, 0.2 } };
var y = new double[] { 32046, 32260, 32296, 32678 };
var w = new double[] { 1, 1, 1, 1 };
alglib.lsfitlinearw(y, w, fmatrix, out info, out c, out rep);
var intercept = c[0];
var slope = c[1];
“fmatrix”包含我的 x 轴值(每对中的第二个值:- 0、0.05、0.1、0.2);“y”显然包含我的 y 轴值;“w”是权重 - 在本例中全为 1,因此在此示例中未应用权重。
现在,我需要应用几个不同的“强制”。我设法通过将每个 fmatrix 对的第一个值从“1”更改为“0”来找到如何“强制通过原点”,即:
var fmatrix = new double[,] { { 0, 0 }, { 0, 0.05 }, { 0, 0.1 }, { 0, 0.2 } };
但是我还需要强制通过第一点(x=0,y=32046)。任何想法如何实现这一目标?数学不是我的强项,我也不太了解函数的文档: http ://www.alglib.net/translator/man/manual.csharp.html#sub_lsfitlinearw