日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab之数据拟合

發(fā)布時(shí)間:2023/12/20 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab之数据拟合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

擬合介紹:

所謂數(shù)據(jù)擬合是求一個簡單的函數(shù),例如是一個低次多項(xiàng)式,不要求通過已知的這些點(diǎn),而是要求在整體上“盡量好”的逼近原函數(shù)。這時(shí),在每個已知點(diǎn)上就會有誤差,數(shù)據(jù)擬合就是從整體上使誤差,盡量的小一些。

多項(xiàng)式擬合

n次多項(xiàng)式:g(x)=c1xn+c2xn?1+?+cn+1g(x)=c1xn+c2xn?1+?+cn+1
曲線與數(shù)據(jù)點(diǎn)的殘差為:ri=yi?g(xi),i=1,2,?,Lri=yi?g(xi),i=1,2,?,L
殘差的平方和為:R=i=1Lr2iR=∑i=1Lri2
為使其最小化,可令R關(guān)于cjcj的偏導(dǎo)數(shù)為零,即:?R?cj=0,j=1,2,?,n+1?R?cj=0,j=1,2,?,n+1
或:
j=1n+1(i=1Lx2n+2?j?ki)cj=i=1Lxn+1?kiyi,k=1,2,?,n+1∑j=1n+1(∑i=1Lxi2n+2?j?k)cj=∑i=1Lxin+1?kyi,k=1,2,?,n+1
或矩陣形式:
[i=1Lx2nii=1Lx2n?1i.i=1Lxni?i=1Lx2n?1i..i=1Lxn?1i?....?i=1Lxni..i=1Lx0i]?????c1c2.cn+1?????=??????????????i=1Lxniyii=1Lxn?1iyi.i=1Lyi??????????????[∑i=1Lxi2n∑i=1Lxi2n?1.∑i=1Lxin∑i=1Lxi2n?1..∑i=1Lxin?1....∑i=1Lxin..∑i=1Lxi0][c1c2.cn+1]=[∑i=1Lxinyi∑i=1Lxin?1yi.∑i=1Lyi]

多項(xiàng)式擬合MATLAB命令:polyfit
**格式:**p=polyfit(x,y,n)

例1:已知的數(shù)據(jù)點(diǎn)來自f(x)=(x2?3x=5)e?5xsinxf(x)=(x2?3x=5)e?5xsin?x,用多項(xiàng)式擬合的方法在不同的階次下進(jìn)行擬合。
擬合該數(shù)據(jù)的3次多項(xiàng)式:

>> x0=0:.1:1; y0=(x0.^2-3*x0+5).*exp(-5*x0).*sin(x0); >> p3=polyfit(x0,y0,3); vpa(poly2sym(p3),10) % 可以如下顯示多項(xiàng)式 ans = 2.839962923*x^3-4.789842696*x^2+1.943211631*x+.5975248921e-1

繪制擬合曲線:

>> x=0:.01:1; >>ya=(x.^2-3*x+5).*exp(-5*x).*sin(x); >> y1=polyval(p3,x); >>plot(x,y1,x,ya,x0,y0,'o')


就不同的次數(shù)進(jìn)行擬合:

p4=polyfit(x0,y0,4); y2=polyval(p4,x); p5=polyfit(x0,y0,5); y3=polyval(p5,x); p8=polyfit(x0,y0,8); y4=polyval(p8,x); plot(x,y0,x0,y0,'o',x,y2,'r',x,y3,'g',x,y4,'k')


擬合最高次數(shù)為8的多項(xiàng)式:

>> vpa(poly2sym(p8),5) ans =- 8.2586*x^8 + 43.566*x^7 - 101.98*x^6 + 140.22*x^5 - 125.29*x^4 + 74.45*x^3 - 27.672*x^2 + 4.9869*x + 4.2037e-7

Taylor冪級數(shù)展開:

不能運(yùn)行 >> syms x; y=(x^2-3*x+5)*exp(-5*x)*sin(x); >> vpa(taylor(y,9),5) ans = 9.*x-29.*x^2+77.667*x^3-142.*x^4+192.17*x^5-204.96*x^6+179.13*x^7-131.67*x^8

多項(xiàng)式表示數(shù)據(jù)模型是不唯一的,即是兩個多項(xiàng)式函數(shù)完全不同。在某一區(qū)域內(nèi)其曲線可能特別近似。

例2:對f(x)=1/(1+25x2),?1x1f(x)=1/(1+25x2),?1≤x≤1進(jìn)行多項(xiàng)式擬合,
多項(xiàng)式擬合的效果并不一定總是很精確的。

>> x0=-1+2*[0:10]/10; y0=1./(1+25*x0.^2); >> x=-1:.01:1; ya=1./(1+25*x.^2); >> p3=polyfit(x0,y0,3); >> y1=polyval(p3,x); >> p5=polyfit(x0,y0,5); >> y2=polyval(p5,x); >> p8=polyfit(x0,y0,8); >> y3=polyval(p8,x); >> p10=polyfit(x0,y0,10); >> y4=polyval(p10,x); >> plot(x,ya,x,y1,x,y2,'-.',x,y3,'--',x,y4,':')


用Taylor冪級數(shù)展開效果將更差

>> syms x; y=1/(1+25*x^2); p=taylor(y,x,10) p = 1-25*x^2+625*x^4-15625*x^6+390625*x^8

多項(xiàng)式擬合效果

>> x1=-1:0.01:1; >> ya=1./(1+25*x1.^2); >> y1=subs(p,x,x1); >> plot(x1,ya,'--‘,x1,y1)

函數(shù)線性組合的曲線擬合方法

已知某函數(shù)的線性組合為:g(x)=c1f1(x)+c2f2(x)+c3f3(x)+....+cnfn(x)g(x)=c1f1(x)+c2f2(x)+c3f3(x)+....+cnfn(x)
其中f1(x)f2(x)f3(x).....fn(x)f1(x)f2(x)f3(x).....fn(x)為已知函數(shù)
c1,c2c3.....cnc1,c2c3.....cn為待定系數(shù)
假設(shè)已經(jīng)測出數(shù)據(jù)(x1,y1),(x2,y2),.....(xM,yM)(x1,y1),(x2,y2),.....(xM,yM)
則可建立如下的線性方程
Ac=yAc=y

例3:


直接擬合ci參數(shù):

>> x=[0,0.2,0.4,0.7,0.9,0.92,0.99,1.2,1.4,1.48,1.5]'; >> y=[2.88;2.2576;1.9683;1.9258;2.0862;2.109; 2.1979;2.5409;2.9627;3.155;3.2052]; >> A=[ones(size(x)),exp(-3*x), cos(-2*x).*exp(-4*x) ,x.^2]; >> c=A\y; c1=c' c1 =1.2200 2.3397 -0.6797 0.8700


例4:

>> x=[1.1052,1.2214,1.3499,1.4918,1.6487,1.8221,2.0138,...2.2255,2.4596,2.7183,3.6693]; >> y=[0.6795,0.6006,0.5309,0.4693,0.4148,0.3666,0.3241,...0.2864,0.2532,0.2238,0.1546]; >> plot(x,y,x,y,'*')


分別對x,y進(jìn)行對數(shù)變換:

>> x1=log(x); y1=log(y); plot(x1,y1)


>> A=[x1', ones(size(x1'))]; c=[A\y1'] c =-1.2339 -0.2630 >> exp(c(2)) ans =0.7687


例5:

>> x=[0:0.1:1]'; y=(x.^2-3*x+5).*exp(-5*x).*sin(x); n=8; A=[]; >> for i=1:n+1, A(:,i)=x.^(n+1-i); end >> c=A\y; vpa(poly2sym(c),5) ans = -9.2586*x^8+43.566*x^7-101.98*x^6+140.22*x^5-129.29*x^4+74.450*x^3-27.672*x^2+4.9869*x+.42037e-6

最小二乘曲線擬合


格式: [a, jm]=lsqcurvefit(Fun,a0,x,y)

例6:
由下面語句生成一組數(shù)據(jù),其中ai為待定系數(shù),

>> x=0:.1:10; >> y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);

>> f=inline('a(1)*exp(-a(2)*x)+a(3)*… exp(-a(4)*x).*sin(a(5)*x)','a','x');

得出待定系數(shù)向量:

>> [xx,res]=lsqcurvefit(f,[1,1,1,1,1],x,y); xx',res Optimization terminated successfully:Relative function value changing by less than OPTIONS.TolFunans =0.12000.21300.54000.17001.2300 res =1.7927e-16

修改最優(yōu)化選項(xiàng):

不能運(yùn)行 >> ff=optimset; ff.TolFun=1e-20; ff.TolX=1e-15; % 修改精度限制 >> [xx,res]=lsqcurvefit(f,[1,1,1,1,1],x,y,[],[],ff); xx‘,res % []變量界 Optimization terminated successfully:Relative function value changing by less than OPTIONS.TolFun ans =0.12000.21300.54000.17001.2300 res =9.5035e-021


例7:

>> x=0.1:0.1:1; >> y=[2.3201,2.6470,2.9707,3.2885,3.6008,3.9090,4.2147,4.5191, 4.8232,9.1275];

function y=c8f3(a,x) y=a(1)*x+a(2)*x.^2.*exp(-a(3)*x)+a(4);

求解

a=lsqcurvefit('c8f3',[1;2;2;3],x,y); a' Maximum number of function evaluations exceeded;increase options.MaxFunEvals ans =2.4575 2.4557 1.4437 2.0720

繪制曲線:

>> y1=c8f3(a,x); plot(x,y,x,y1,’o’)

跑出圖片

總結(jié)

以上是生活随笔為你收集整理的matlab之数据拟合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。