Re: [問題] 如何用fzero拿多根已回收
※ 引述《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
09/06 17:03, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):