数值分析:多元线性拟合和一元非线性拟合

前言

最小二乘线性拟合是常规操作,本文直接跨过。由于多元线性拟合和一元非线性拟合关系密切,故本文将其二放在一起讨论。本文重点是实现单元的非线性拟合。最后补充一句:不论是一元线性、一元非线性、多元线性,其核心思想都是:多项式拟合;核心方法都是:最小二乘原理

多元非线性拟合原理

定义:变量ym个自变量x_j(j=1,2,\cdots,m)都存在线性关系,即构成了多元线性关系:

y = a_0 + a_1x_1 + a_2x_2 + \cdots + a_mx_m

每一个自变量x_j都有一组(有n个)测量值,我们可以记做:x_{ij}(i=1,2,\cdots,n)。注意:n>m,因为方程数要比未知数多。变量序号与其观测值序号如下表:

观测值序号\变量序号 x_1 x_2 \cdots x_{m-1} x_m y
1 x_{11} x_{12} \cdots x_{1(m-1)} x_{1m} y_1
2 x_{21} x_{22} \cdots x_{2(m-1)} x_{2m} y_2
\vdots \vdots \vdots \vdots \vdots \vdots \vdots
n x_{n1} x_{n2} \cdots x_{n(m-1)} x_{nm} y_n

如何衡量拟合效果?还是根据最小二乘原理,只不过是未知参数多了一些而已。现在的未知数为a_i,即将最小二乘原理运用到包含m+1a_i的函数上即可:

设\quad F = F(a_0,a_1,\cdots,a_m)

F = \sum_{i=1}^{n}\left[ y_i - (a_0 + a_1x_{i1} + a_2x_{i2} + \cdots + a_mx_{im} )\right]^2

对于上式,我们一次对F求各个a_i的偏导数并令其值为0,可得如下m+1个方程:

\frac{\partial F}{\partial a_0} = 0,\frac{\partial F}{\partial a_1} = 0,\frac{\partial F}{\partial a_2} = 0,\cdots,\frac{\partial F}{\partial a_m} = 0

最后用于求解的正规方程组为:

a_0n \quad + a_1\sum_{i=1}^{n}x_{i1} + \quad a_2\sum_{i=1}^{n}x_{i2}\quad + \cdots + a_m\sum_{i=1}^{n}x_{im} \quad\quad = \sum_{i=1}^{n}y_{i}

a_0\sum_{i=1}^{n}x_{i1} + a_1\sum_{i=1}^{n}x_{i1}x_{i1} + a_2\sum_{i=1}^{n}x_{i1}x_{i2} + \cdots + a_m\sum_{i=1}^{n}x_{i1}x_{im} = \sum_{i=1}^{n}x_{i1}y_{i}

\cdots

a_0\sum_{i=1}^{n}x_{im} + a_1\sum_{i=1}^{n}x_{im}x_{i1} + a_2\sum_{i=1}^{n}x_{im}x_{i2} + \cdots + a_m\sum_{i=1}^{n}x_{im}x_{im} = \sum_{i=1}^{n}x_{im}y_{i}

解上面的线性方程组即可得到一些列系数。

一元非线性拟合

为什么说一元非线性拟合和多元线性拟合关系密切呢?因为为了计算方便,我们会使用变量替换的方法,将一元非线性各阶式子用不同的变量代替,转换成多元非线性,然后用上面的正规方程组求解。

例如:已知有n组非线性数据(x_i,y_i)(i = 1,2,\cdots,n),用m阶一元非线性多项式拟合:

y = a_0 + a_1x + a_2x^2 + \cdots + a_mx^m,n>m

我们只需要用t_j = x^j代换(j = 1,2,\cdots,m),就可以将一元非线性转换为多元线性:

y = a_0 + a_1t_1 + a_2t_2 + \cdots + a_mt_m

用上面多元线性的操作,根据最小二乘原理令关于每个未知系数的偏导数为0,可得正规方程的矩阵的通用形式如下:

图1:一元非线性拟合最终系数的求解方程

关于上面最终求解方法有3个细节要注意

  • 观测值个数n只出现在求和的上限,故不影响矩阵结构;
  • 系数a_i的个数,要比多项式最高阶数多1个,即多了前面的a_0
  • 系数矩阵为对称方阵,尺寸比多项式最高阶次m多1。

举一个例子

如何现在有n=10个观测数据,想要最高阶数m=2的多项式拟合,即:

y = a_0 + a_1x +a_2x^2

最终求解矩阵(尺寸:m+1 = 3)就是:

图2:例子的最终求解矩阵

用Matlab实现任意阶非线性拟合

数据自己给,然后输入想要的阶数后,自动求解拟合公式:

% 任意多项式拟合数据点, 当然最好不要超过6阶

clear; clc;

% 这里修改原始观测数据:
xnum = 1:10;
ynum = [3.8 6.3 7.9 8.6 9.2 9.5 9.7 9.9 10.1 10.2];

m = double(input('拟合阶数m = '));
n = length(xnum);

% 等号左边矩阵: 每个元素的幂 = row + col -2
A = zeros(m+1,m+1);
for row = 1:m+1
    for col = 1:m+1
        A(row,col) = sum(xnum.^(row+col-2));
    end
end

% 等号右边矩阵: 一行m+1列
B = zeros(m+1,1);
for num = 1:m+1
    B(num,1) = sum((xnum.^(num-1)).*ynum);
end

% 多项式系数/方程求解:
a = inv(A)*B;

syms x;
ytmp = sym(zeros(1,m+1));
for num = 1:num
    ytmp(num) = x^(num-1);
end
fprintf('拟合结果为:\n');
y = vpa(sum(ytmp.*a'),6)   % 拟合的多项式结果

figure(1);
scatter(xnum,ynum);
hold on;
x = min(xnum):0.1:max(xnum);
y = double(subs(y));
plot(x,y);
grid on;
xlabel('x'); ylabel('y');
title('原点为样本点;实线为多项式拟合结果');

例如5阶效果:

图3:5阶非线性拟合结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352