【问题标题】:Minimizing a system of linear equations with limited variables in Octave在 Octave 中最小化具有有限变量的线性方程组
【发布时间】:2021-06-16 16:22:16
【问题描述】:

我已经搜索了 Octave 资源、关于优化的 pdf 以及这里的许多问题,但我似乎无法找到或理解正确的解决方案。我正在尝试找到一种纠正解决方案来移动一组数据点以紧密匹配另一组。使用的方程是带有交叉项的二次方程,即 ax^2 +bx +c + d*y = x',其中 x 来自一个数据集,x' 来自另一个数据集。 y 坐标也有类似的方程。

我从数据中固定 x 和 y 值,并尝试优化系数以最小化所有点之间的平方和误差。现在,我只是试图通过 ax^2 +bx +c + d*y - x' = 0 来最小化 x 和 x' 之间的差异。我会尝试做以后所有方程的平方和,除非这里有人也可以帮助我。

我尝试过使用 fminuncfminsearch,但由于矩阵大小,在几次迭代后都会出现错误。我不认为这些解决方案喜欢拥有比变量更多的方程。我不认为 qpglpk 是有用的解决方案。

这是我试图最小化的方程组的一个例子。未来的迭代可能有多达 32 个方程,但变量/系数的数量相同。

function zer = fcn(coeff)
zer = zeros(18,1);
   zer(1) = coeff(1)*19.338458^2 + coeff(2)*19.338458 + coeff(3) + coeff(4)*17.806945 - 23.200000;
   zer(2) = coeff(1)*-0.146987^2 + coeff(2)*-0.146987 + coeff(3) + coeff(4)*2.273490 - 2.900000;
   zer(3) = coeff(1)*-18.333520^2 + coeff(2)*-18.333520 + coeff(3) + coeff(4)*-19.133048 - -15.700000;
   zer(4) = coeff(1)*-24.447818^2 + coeff(2)*-24.447818 + coeff(3) + coeff(4)*2.146905 - -21.700000;
   zer(5) = coeff(1)*0.363997^2 + coeff(2)*0.363997 + coeff(3) + coeff(4)*27.305928 - 3.500000;
   zer(6) = coeff(1)*15.042656^2 + coeff(2)*15.042656 + coeff(3) + coeff(4)*-15.456741 - 18.800000;
   zer(7) = coeff(1)*18.529375^2 + coeff(2)*18.529375 + coeff(3) + coeff(4)*1.046316 - 22.100000;
   zer(8) = coeff(1)*0.045810^2 + coeff(2)*0.045810 + coeff(3) + coeff(4)*-21.082700 - 3.300000;
   zer(9) = coeff(1)*-18.499911^2 + coeff(2)*-18.499911 + coeff(3) + coeff(4)*22.048530 - -15.700000;
   zer(10) = coeff(5)*17.806945^2 + coeff(6)*17.806945 + coeff(7) + coeff(8)*19.338458 - 16.000000;
   zer(11) = coeff(5)*2.273490^2 + coeff(6)*2.273490 + coeff(7) + coeff(8)*-0.146987 - 0.300000;
   zer(12) = coeff(5)*-19.133048^2 + coeff(6)*-19.133048 + coeff(7) + coeff(8)*-18.333520 - -21.400000;
   zer(13) = coeff(5)*2.146905^2 + coeff(6)*2.146905 + coeff(7) + coeff(8)*-24.447818 - 0.400000;
   zer(14) = coeff(5)*27.305928^2 + coeff(6)*27.305928 + coeff(7) + coeff(8)*0.363997 - 25.700000;
   zer(15) = coeff(5)*-15.456741^2 + coeff(6)*-15.456741 + coeff(7) + coeff(8)*15.042656 - -18.300000;
   zer(16) = coeff(5)*1.046316^2 + coeff(6)*1.046316 + coeff(7) + coeff(8)*18.529375 - -1.100000;
   zer(17) = coeff(5)*-21.082700^2 + coeff(6)*-21.082700 + coeff(7) + coeff(8)*0.045810 - -23.200000;
   zer(18) = coeff(5)*22.048530^2 + coeff(6)*22.048530 + coeff(7) + coeff(8)*-18.499911 - 20.200000;
endfunction

【问题讨论】:

  • 在我看来就像一个线性回归问题。 x' 是因变量,x^2,x,y 是自变量(加上截距)。 Octave 有多个线性回归函数。
  • 我同意欧文的观点。把它写成矩阵乘法,然后用`\`解系统。
  • 好的,我试试。我的印象是,只有有完美的解决方案才能奏效。

标签: octave linear-algebra mathematical-optimization minimization linear-equation


【解决方案1】:

cmets 中的 Erwin 和 Cris 100% 正确。

这里需要做的就是将其转换为带有答案向量的矩阵。

best_solution = 矩阵\answer_vector;

令人尴尬的是我把问题复杂化了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多