[運算] 關於一元五次方程式解的精準度...

看板MATLAB作者 (0.0)時間13年前 (2012/05/28 22:59), 編輯推噓1(109)
留言10則, 4人參與, 最新討論串1/1
目前我正在解一個數值滿大的一元五次方程式 我程式碼用 p=[1 c1 c2 c3 c4 c5] c1~c5是一些很大的常數 eq=x^5+c1*x^4+c2*x^3+c3*x^2+c4*x+c5 接著使用pp=roots(p)求出五個根 但是遇到了一些問題,當我用subs(eq,x,pp(1~5))代回方程式時 所得到的值不為零,而且還非常大 後來我用 function @(x) fuc=x^5+c1*x^4+c2*x^3+c3*x^2+c4*x+c5 fzero(fuc,1) 即用牛頓法求解後 可以求出一個較精確的實數解,但是其他2個實數解代回方程式依然誤差很大 重點是,我已經知道那五個根有三個實數解,另外兩個是一對共軛複數根 即使用牛頓法硬幹也只能找出三個較準的實數解... 所以我想請問一下,除了這兩種方法,還有別種更好的方法嗎@@? 另外,matlab有指令是執行muller method嗎??? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.43.48

05/29 09:33, , 1F
fzero應該不是用牛頓法 牛頓法初始猜複數可以找複數根
05/29 09:33, 1F

05/29 09:35, , 2F
可以試著用fsolve 另外你的方程式是多項式可用polyval代值
05/29 09:35, 2F

05/29 09:37, , 3F
muller法應該沒有內建 但網路應該找的到別人寫好的
05/29 09:37, 3F

05/29 11:40, , 4F
多項式求根可以用roots,可能準一些。
05/29 11:40, 4F

05/29 11:41, , 5F
啊,沒看清楚,別理我。
05/29 11:41, 5F

05/29 14:08, , 6F
ployval這指令正是我目前用來找實數根的指令...不過
05/29 14:08, 6F

05/29 14:09, , 7F
我代的值已經超過matlab最小精確度,所以也是找不到真正的
05/29 14:09, 7F

05/29 14:10, , 8F
實數根代入方程式讓它為零 = =
05/29 14:10, 8F

05/29 17:32, , 9F
令 x = m*y + n, 調整(m,n), 讓 f(y) 係數不要過大(小)
05/29 17:32, 9F

05/30 11:08, , 10F
感謝樓上提供方法~我試試看!
05/30 11:08, 10F
文章代碼(AID): #1FmvBM5b (MATLAB)