一元二次函数的拟合

一、定义

二次函数(quadratic function)的基本表示形式为y=ax²+bx+c(a≠0)。

二次函数最高次必须为二次, 二次函数的图像是一条对称轴与y轴平行或与y轴重合的抛物线。

二、三点确定唯一的二次函数方程

% 三点确定唯一的二次曲线 y=ax^2+bx+c
% 已知三点:(x1,y1) (x2,y2) (x3,y3)
% a = ((y1-y2)*(x1-x3)-(y1-y3)*(x1-x2)) / ((x1^2-x2^2)*(x1-x3)-(x1^2-x3^2)*(x1-x2))
% b = (y1-y2-a*(x1^2-x2^2)) / (x1-x2)
% c = y1-a*x1^2-b*x1
clear all; clc
X = [-1,0,1];
Y = [2,1,4];
x1 = X(1);
x2 = X(2);
x3 = X(3);
y1 = Y(1);
y2 = Y(2);
y3 = Y(3);
a = ((y1-y2)*(x1-x3)-(y1-y3)*(x1-x2)) / ((x1^2-x2^2)*(x1-x3)-(x1^2-x3^2)*(x1-x2));
b = (y1-y2-a*(x1^2-x2^2)) / (x1-x2);
c = y1 - a*x1^2 - b*x1;
top = -0.5*b/a;  % 极值点

三、多点利用最小二乘法拟合二次函数方程

% 多点(n>3)最小二乘法拟合二次曲线 y=ax^2+bx+c  需保证A行列式非0
clear all; clc
X = [0,1,2,3,4,5,6,7,8,9];
n = length(X);
ep = normrnd(0,3,[1 n]); % 随机误差,均值为0,标准差为3
Y = 2*X.^(2)-18*X+7+ep;

XX = X .* X;
S = sum(X);
R = sum(Y);
A = [n*(XX*XX')-(X*X')^2, n*(XX*X')-S*(X*X');n*(XX*X')-(X*X')*S, n*(X*X')-S*S];
p = [n*(XX*Y')-R*(X*X');n*(X*Y')-R*S];
r = A^(-1)*p;
a = r(1);
b = r(2);
c = (R-X*X'*a-S*b) / n;
top = -0.5*b/a;
Ypred = a*X.^(2)+b*X+c;
plot(X,Y,'b--*',X,Ypred,'r--*')

一元二次函数的拟合_第1张图片

你可能感兴趣的:(拟合,机器学习)