[問題] 如何用fzero拿多根已回收

看板MATLAB作者 (Yulis)時間12年前 (2011/09/05 15:52), 編輯推噓1(105)
留言6則, 1人參與, 最新討論串1/3 (看更多)
小弟現在在做一個簡單的練習 用fzero解 x^3-6*x^2+11*x-6=0 (手解的話根就是 1, 2 ,3) 但每次都只能得一個值 那小弟嘗試在起始值的部分做一個 for loop 但這樣值又太多 也不太準 = = 不知道有沒有什麼方法可以用fzero 得到 準確的那三個根? p.s. 用 p=[3 -6 11 -6 ]; root=roots(p) 可得 但有時候多項式包含sin cos 就不能用這方式 所以想找一個簡單的式子來練習 fzero -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.170.137

09/06 09:05, , 1F
如果有sin cos就不是多項式了,就無法確定會有"三"個根
09/06 09:05, 1F

09/06 09:06, , 2F
我想能確認的方式,應該將x代入得到f(x)的數值,再做圖
09/06 09:06, 2F

09/06 09:07, , 3F
再由圖上去看"穿過"x軸(也就是有f(x)=0的點)的區域
09/06 09:07, 3F

09/06 09:08, , 4F
最後再辨別這些區域,在這區域取initial使用fminsearch
09/06 09:08, 4F

09/06 09:08, , 5F
來求得(或是使用fminsearch)
09/06 09:08, 5F

09/06 09:10, , 6F
或使用fzero(上面寫錯了)
09/06 09:10, 6F
文章代碼(AID): #1EP7-uTA (MATLAB)
文章代碼(AID): #1EP7-uTA (MATLAB)