表达式z=a*x^2+b*x*y+c*y^2+d*x+e*y+f是一个二次型。z=0的点集是圆锥曲线。判别式b^2-4*a*c的不同符号决定了对应的圆锥曲线是椭圆,抛物线或双曲线。圆和直线也是圆锥曲线的特殊情形。圆锥曲线方程可以两边同除以任意的非零系数来归一化。例如,如果f不等于0,可以两边同除以f,这样常数项就变成1了。在MATLAB中可以用函数meshgrid和contour来绘制圆锥曲线。用meshgrid生成X和Y的网格点数组。然后对二次型求值得到Z。最后用contour来绘出Z=0的点。
[X,Y] = meshgrid(xmin:deltax:xmax,ymin:deltay:ymax);
Z = a*X.^2 + b*X.*Y + c*Y.^2 + d*X + e*Y + f;
contour(X,Y,Z,[0 0])
行星轨道是椭圆形轨道。这里是行星轨道在平面上的十个观测点:
x = [1.02 .95 .87 .77 .67 .56 .44 .30 .16 .01]';
y = [0.39 .32 .27 .22 .18 .15 .13 .12 .13 .15]';
- 通过设定其中的一个系数为1,并求解10x5的超定方程,来确定二次型的系数。在平面坐标下绘出拟合曲线的轨迹。将十个数据点在图中加上。
- 这个最小二乘问题接近不满秩。为了揭示不满秩对于结果的影响,将每个数据点的每个坐标,加上一个在[-.005,.005]区间均匀分布的随机数并计算新的系数。在同一幅图中绘出新的轨迹。对新旧轨迹和系数进行比较并给出一些看法和评论。