进阶主题选读.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进阶主题选读

MATLAB 程式設計入門篇 進階主題選讀 修改自張智星教授講義 jang@.tw .tw/~jang 清大資工系 多媒體資訊檢索實驗室 多項式加減乘除 n次多項式 p(x) = anxn + an-1xn-1 + ... + a1x + a0 在matlab中,用向量表示多項式 p = [an, an-1, ..., a1, a0] 例如[1 2 3 1]代表x3 + 2x2 + 3x + 1 運算: p1 + p2 多項式和 p1 - p2 多項式差 conv(p1, p2) 多項式乘積 [q, r] = deconv(p1, p2) 多項式相除,得到商式和餘式 多項式求值、微積分 用polyval指令進行多項式求值: p = [3 4 -2 5]; x = linspace(-3, 3); y = polyval(p, x); plot(x, y, .-); 多項式微分:q = polyder(p) 多項式積分:q = polyint(p, k) % k為不定常數 多項式擬合 用polyfit指令進行多項式擬合: % 製造資料 p = [2 -3 -4]; x = linspace(-2, 2, 20); y = polyval(p, x) + (rand(1, 20)-0.5); % 加上適當誤差 % 擬合,假設已經知道是二次式 p2 = polyfit(x, y, 2); y2 = polyval(p2, x); % 畫圖 plot(x, y, o, x, y2, x-); legend(原始資料, 擬合結果); 多項式擬合 擬合時的次方數差異: % 製造資料 p = [2 -3 -4]; x = linspace(-1, 1, 20); x2 = linspace(-1.3, 1.3); y = polyval(p, x) + (rand(1, 20)-0.5); % 加上適當誤差 % 擬合,測試到七次方,擬合後之曲線有100個點,每個row是一條線 curve = zeros(7, 100); for i = 1:7 thisCoef = polyfit(x, y, i); curve(i, :) = polyval(thisCoef, x2); end % 畫圖 plot(x, y,o, x2, curve); legend(實際資料, 1次, 2次,3次, 4次, 5次, 6次, 7次); 單變數函數求根 範例:找出humps函數的根 humps是一個單變數函數,MATLAB常用的測試函數之一 % 找某個點附近的根 x = fzero(humps, 1.5); y = humps(x); fprintf(x: %f, y:%f\n, x, y); % 找某區間內的根。區間邊界的函數值必須異號,否則error x = fzero(humps, [-1 1]); y = humps(x); fprintf(x: %f, y:%f\n, x, y); % 顯示中間結果 opt = optimset(disp, iter); x = fzero(humps, [-1, 1], opt); fzero與roots的差異 fzero: 用於一般單變數函數的求根 一次只找一個根 使用牛頓法 roots: 只用於多項式求根 一次找到全部的根 將多項式表示成「伴隨矩陣」(Companion Matrix),再用解特徵值方法求根 單變數函數最佳化 範例:找出humps函數的最小值 % 畫出圖形 fplot(humps, [-2 2]); % 找某區間內的最小值 x = fminbnd(humps, 0, 1); y = humps(x); fprintf(x: %f, y:%f\n, x, y); % 顯示中間結果 opt = optimset(disp, iter); x = fminbnd(humps, 0, 1, opt); % 放鬆誤差管制 opt = optimset(disp, iter, tolx, 0.1); x = fminbnd(humps, 0, 1, opt); 多變數函數最佳化 範例:找出自訂函數的最小值 myFunc.m: % 找某區間內的最小值 [x z]= fminsearch(myFunc, [-1.2, 1]); fprintf(x: [%f %f], y:%f\n, x(1), x(2), z); function y = myFunc(x) y = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; fminsearch使用範例: 關於最佳化 optimset共有五十多個選項,其中 Display: 是否顯示中間過程 MaxIter: 最大疊代次數

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档