數(shù)值分析:多元線性擬合和一元非線性擬合

前言

最小二乘線性擬合是常規(guī)操作冕广,本文直接跨過妒牙。由于多元線性擬合和一元非線性擬合關(guān)系密切孽亲,故本文將其二放在一起討論沿盅。本文重點(diǎn)是實(shí)現(xiàn)單元的非線性擬合把篓。最后補(bǔ)充一句:不論是一元線性、一元非線性腰涧、多元線性韧掩,其核心思想都是:多項(xiàng)式擬合;核心方法都是:最小二乘原理窖铡。

多元非線性擬合原理

定義:變量ym個(gè)自變量x_j(j=1,2,\cdots,m)都存在線性關(guān)系疗锐,即構(gòu)成了多元線性關(guān)系:

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

每一個(gè)自變量x_j都有一組(有n個(gè))測量值坊谁,我們可以記做:x_{ij}(i=1,2,\cdots,n)。注意:n>m滑臊,因?yàn)榉匠虜?shù)要比未知數(shù)多口芍。變量序號與其觀測值序號如下表:

觀測值序號\變量序號 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

如何衡量擬合效果?還是根據(jù)最小二乘原理雇卷,只不過是未知參數(shù)多了一些而已△尥郑現(xiàn)在的未知數(shù)為a_i,即將最小二乘原理運(yùn)用到包含m+1個(gè)a_i的函數(shù)上即可:

設(shè)\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求各個(gè)a_i的偏導(dǎo)數(shù)并令其值為0小染,可得如下m+1個(gè)方程:

\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

最后用于求解的正規(guī)方程組為:

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}

解上面的線性方程組即可得到一些列系數(shù)调榄。

一元非線性擬合

為什么說一元非線性擬合和多元線性擬合關(guān)系密切呢踊赠?因?yàn)闉榱擞?jì)算方便,我們會使用變量替換的方法每庆,將一元非線性各階式子用不同的變量代替筐带,轉(zhuǎn)換成多元非線性蝉绷,然后用上面的正規(guī)方程組求解窿冯。

例如:已知有n組非線性數(shù)據(jù)(x_i,y_i)(i = 1,2,\cdots,n),用m階一元非線性多項(xiàng)式擬合:

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

我們只需要用t_j = x^j代換(j = 1,2,\cdots,m)凤价,就可以將一元非線性轉(zhuǎn)換為多元線性:

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

用上面多元線性的操作鸽斟,根據(jù)最小二乘原理令關(guān)于每個(gè)未知系數(shù)的偏導(dǎo)數(shù)為0,可得正規(guī)方程的矩陣的通用形式如下:

圖1:一元非線性擬合最終系數(shù)的求解方程

關(guān)于上面最終求解方法有3個(gè)細(xì)節(jié)要注意

  • 觀測值個(gè)數(shù)n只出現(xiàn)在求和的上限利诺,故不影響矩陣結(jié)構(gòu)富蓄;
  • 系數(shù)a_i的個(gè)數(shù),要比多項(xiàng)式最高階數(shù)多1個(gè)慢逾,即多了前面的a_0立倍;
  • 系數(shù)矩陣為對稱方陣,尺寸比多項(xiàng)式最高階次m多1侣滩。

舉一個(gè)例子

如何現(xiàn)在有n=10個(gè)觀測數(shù)據(jù)口注,想要最高階數(shù)m=2的多項(xiàng)式擬合,即:

y = a_0 + a_1x +a_2x^2

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

圖2:例子的最終求解矩陣

用Matlab實(shí)現(xiàn)任意階非線性擬合

數(shù)據(jù)自己給君珠,然后輸入想要的階數(shù)后寝志,自動(dòng)求解擬合公式:

% 任意多項(xiàng)式擬合數(shù)據(jù)點(diǎn), 當(dāng)然最好不要超過6階

clear; clc;

% 這里修改原始觀測數(shù)據(jù):
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('擬合階數(shù)m = '));
n = length(xnum);

% 等號左邊矩陣: 每個(gè)元素的冪 = 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

% 多項(xiàng)式系數(shù)/方程求解:
a = inv(A)*B;

syms x;
ytmp = sym(zeros(1,m+1));
for num = 1:num
    ytmp(num) = x^(num-1);
end
fprintf('擬合結(jié)果為:\n');
y = vpa(sum(ytmp.*a'),6)   % 擬合的多項(xiàng)式結(jié)果

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('原點(diǎn)為樣本點(diǎn);實(shí)線為多項(xiàng)式擬合結(jié)果');

例如5階效果:

圖3:5階非線性擬合結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子材部,更是在濱河造成了極大的恐慌毫缆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乐导,死亡現(xiàn)場離奇詭異苦丁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)物臂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門旺拉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棵磷,你說我怎么就攤上這事账阻。” “怎么了泽本?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姻僧。 經(jīng)常有香客問我规丽,道長,這世上最難降的妖魔是什么撇贺? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任赌莺,我火速辦了婚禮,結(jié)果婚禮上松嘶,老公的妹妹穿的比我還像新娘艘狭。我一直安慰自己,他們只是感情好翠订,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布巢音。 她就那樣靜靜地躺著,像睡著了一般尽超。 火紅的嫁衣襯著肌膚如雪官撼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天似谁,我揣著相機(jī)與錄音傲绣,去河邊找鬼。 笑死巩踏,一個(gè)胖子當(dāng)著我的面吹牛秃诵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塞琼,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼菠净,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗤练,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤榛了,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后煞抬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霜大,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年革答,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了战坤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡残拐,死狀恐怖途茫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溪食,我是刑警寧澤囊卜,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站错沃,受9級特大地震影響栅组,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枢析,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一玉掸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醒叁,春花似錦司浪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饮睬,卻和暖如春认罩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背续捂。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工垦垂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牙瓢。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓劫拗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矾克。 傳聞我的和親對象是個(gè)殘疾皇子页慷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354