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

看板MATLAB作者 (Yulis)時間12年前 (2011/09/06 10:29), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《alamabarry (.............)》之銘言: : ※ 引述《yulishsu (Yulis)》之銘言: : : 小弟現在在做一個簡單的練習 : : 用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 : fzero 要單變數連續函數..可收斂到實數解... : roots 要多項式 : 你的東西已經是非線性了 : 只能把未知數拆成很多個初始值去收斂 : 藉由不同的初始值去收斂到不同根 : 若你的方程式有一些變數 : 則你可以得到跟與變數之間的變化曲線 : 如果複數的地方你也想知道 : 那就必須設成複數形式的根 : 也就會變成兩個變數 : 這時候fzero已無法完成你的需求 : 你也無從得到數值的存在性(勘根定理 變號) : 僅能用fminsearch用多變數求解得到 "極小值"的位置 : 過程也要假設不同的實部與虛部的初始值 : 但無法從數值上確認根的存在性 : 僅能得到"可能"為根的地方 : 以上是我所知道的 所知有限 : 如有更好方法煩請指導!! : 我也很想知道 : 謝謝 先謝謝a大的回應 也謝謝上篇b大的推文回應 我先說明為什麼我希望能得到sin cos 方程式的所有根 因為我在做的練習為一個含有sin cos函數的圖 假說為一個sin(x) 的圖好了 那我希望能找到此圖斜率為斜率為 1(or 其它某特定斜率) 的點 但同時我希望能找到的是第二個根 也就是此圖形第二次斜率變為1 的點 綜觀以上敘述 再加上爬文以及前兩位大大的說法 是否只能用fzero 來解 cos(x) = 1 時的根 然後再將initial 的值取 3/2 pi ~ 5/2 pi 之間呢 (因為此區域為第二次斜率變為正 值的地方) p.s. 因為我是matlab新手 就麻煩大家多多包涵了 謝謝 orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.170.137 ※ 編輯: yulishsu 來自: 140.113.170.137 (09/06 10:30)

09/06 17:03, , 1F
Fzero應該可以輸入範圍求解吧...就把範圍設定一下看看
09/06 17:03, 1F
文章代碼(AID): #1EPOLliE (MATLAB)
文章代碼(AID): #1EPOLliE (MATLAB)