暗无天日

=============>DarkSun的个人博客

使用Calc进行线性拟合

今天又发现Calc的一个牛逼功能:进行线性拟合,其步骤如下:

  1. 以矩阵的形式输入待拟合的数据,其中每一行表示一个自变量的值,最后一行表示因变量的值。

    比如,对于公式 Y=aX_1 + bX_2 + bX_3 +d, 那么输入的矩阵就应该是这样的:

    [[ x1_1, x1_2, x1_3, x1_4 ...]
     [ x2_1, x2_2, x2_3, x2_4 ...]
     [ x3_1, x3_2, x3_3, x3_4 ...]
     [ y_1 , y_2 , y_3 , y_4 ...]]
    

    为了简单,我这里假设数据为

    [[ 1, 2, 3, 4,  5  ]
      [ 5, 7, 9, 11, 13 ]]
    
  2. (可选操作)我们可以调用gnuplot来根据这些数据画出散点图
    1. 按下 v u 将矩阵分解成多个数组,Calc显示如下

      2:  [1, 2, 3, 4, 5]
      1:  [5, 7, 9, 11, 13]
          .
      
    2. 按下 g f 进行快速做图,得到结果

      screenshot-27.png

      可以看出这些数据可以很好的你合成一个直线

    3. 按下 U 回退成原始数据
  3. 按下 a F (calc-curve-fit) 调用拟合命令,
  4. 选择拟合模型

    Calc的拟合命令支持多种拟合模型,因此会要求我们选择想要的拟合模型(按?可以查看支持的模型),我们这里选 1 表示线性拟合

  5. 选择自变量和参数的表示符号

    这里直接回车,选择默认的符号(x;a,b, 分号前的符号为自变量符号,分号后的符号为参数符号,符号之间用逗号分隔)。

  6. 得出结果 2. x + 3.

Calc_linear_fit.gif

我们还可以在Calc中调用gnuplot进行做图:

  1. 按下 g C (calc-graph-command)
  2. 输入 plot 2*x+3 回车得到图片

calc-linear-fit-gnuplot.png