MATLAB 程式设计曲线拟合与回归分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 上圖的曲線為 fminsearch 指令產生的迴歸曲線。 fminsearch 指令是一個使用 Simplex 下坡式搜尋法(Downhill Simplex Search)的最佳化方法,用來找出 errorMeasure1 的極小值,並傳回 theta 的最佳值。 非線性迴歸:使用fminsearch 計算時間 = 0.03 誤差平方和 = 5.337871e-001 上述方法把所有參數全部視為非線性參數。 混成法將上述方法進一步改良,也就是將線性與非線性參數分開,各用不同的方法來處理。 以上例而言,數學模型為: 、 線性參數:最小平方法,即「左除」或「\」 λ1、λ2 非線性參數: Simplex 下坡式搜尋(即 fminsearch) 混成法的好處是 最小平方法能夠在非線性參數固定的情況下,一次找到最好的線性參數的值,因為搜尋空間的維度由 4降為 2最佳化會更有效率。 非線性迴歸:使用混成法 使用上述混成(Hybrid)的方法,函式 errorMeasure1 須改寫成 errorMeasure2 範例10-10: errorMeasure2.m lambda 是非線性參數向量, data 仍是觀察到的資料點,a 是利用最小平方法算出的最佳線性參數向量,傳回的 squareError 仍是總平方誤差 非線性迴歸:使用混成法 function squaredError = errorMeasure2(lambda, data) x = data(:,1); y = data(:,2); A = [exp(lambda(1)*x) exp(lambda(2)*x)]; a = A\y; y2 = a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x); squaredError = sum((y-y2).^2); 欲用此混成法求出誤差平方和的最小值 範例10-11: nonlinearFit02.m 非線性迴歸:使用混成法 load data.txt lambda0 = [0 0]; tic lambda = fminsearch(@errorMeasure2, lambda0, [], data); fprintf(計算時間 = %g\n, toc); x = data(:, 1); y = data(:, 2); A = [exp(lambda(1)*x) exp(lambda(2)*x)]; a = A\y; y2 = a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x); plot(x, y, ro, x, y2, b-); legend(Sample data, Regression curve); fprintf(誤差平方和 = %d\n, sum((y-y2).^2)); 此種混成法可以產生較低的誤差平方和,同時所需的計算時間也比較短。 非線性迴歸:使用混成法 計算時間 = 0.02 誤差平方和 = 1.477226e-001 亦可利用變形法(Transformation),將一數學模型轉換成只包含線性參數的模型。 假設一模型為: 取自然對數,可得: ln a及ln b變成線性參數,我們可用“最小平方法”找出其值 範例10-12: transformFit01.m 非線性迴歸:使用變形法 load data2.txt x = data2(:, 1); % 已知資料點的 x 座標 y = data2(:, 2); % 已知資料點的 y 座標 A = [ones(size(x)) x]; a = 4.3282 b =-1.8235 誤差平方和 = 8.744185e-001 非線性迴歸:使用變形法 theta = A\log(y); subplot(2,1,1) plot(x, log(y), o, x, A*theta); xlabel(x); ylabel(ln(y)); title(ln(y) vs. x); legend(Actual value, Predicted value); a = exp(theta(1)) % 辨識得到之參數 b = theta(2) % 辨識得到之參數 y2 = a*exp(b*x); subplot(2,1,2); plot(x, y, o, x, y2); xlabel(x); ylabel(y); legend(Actual value, Predicted value); title(y vs. x);

文档评论(0)

allap + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档