[問題] 牛頓法求值問題

看板MATLAB作者 (123)時間11年前 (2014/09/23 13:58), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/1
大家好 小弟我是matlab新手 近日打算用牛頓法求解一個形式複雜的函數的根 為此小弟先設定一個簡單的函數(f=x^2-4)當作練習 試用牛頓法求根 但遇到程式上的問題一直無法解決 想請各位前輩幫幫我 以下是小弟的測試程式: clear syms x n=0; eps=1; x=1; p=0.000001; while eps>p && n<10 f=x^2-4; %df=2*x; df=diff(f(x)); xnew=x-f(x)/df(x); eps=abs(xnew-x); x=xnew; n=n+1; end run程式出現 Index exceeds matrix dimensions. 查資料後知道是矩陣數量不相符的關係 但我不知道怎麼修改才好 >< 若我把df=diff(f(x))替換成df=2*x (也就是自己手算微分) 是可以求出正確根植 +2,-2 但我真正想求根的函數 形式太複雜了 手動求微分再打到程式裡 有點不太實際 請問各位前輩這裡diff造成的問題要怎麼解決? 卡好幾天了 搞不太定 QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.46.240 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1411451924.A.D62.html

09/24 11:48, , 1F
宣告x是符號就不該在指定x=1
09/24 11:48, 1F

09/24 11:50, , 2F
f(x)沒有這種東西
09/24 11:50, 2F

09/24 11:51, , 3F
eps是關鍵詞 建議不要用
09/24 11:51, 3F

09/24 12:29, , 4F
有一本數值方法 MATLAB的書~~可以參考
09/24 12:29, 4F

09/24 12:29, , 5F
去圖書館借來看程式碼吧~~
09/24 12:29, 5F

09/24 12:30, , 6F
看久了大概語法就會熟悉
09/24 12:30, 6F

09/24 14:40, , 7F
你的eps是定義x跟前一個x的差喔? 怎麼好像跟一般的不太
09/24 14:40, 7F

09/24 14:40, , 8F
一樣
09/24 14:40, 8F

09/24 14:41, , 9F
一般是定義函數值跟0的差為某個err值吧?
09/24 14:41, 9F

09/25 21:17, , 10F
他定義的應該是相對誤差,作為收斂判斷的...
09/25 21:17, 10F

09/25 23:47, , 11F
謝謝各位的建議
09/25 23:47, 11F
文章代碼(AID): #1K8GmKrY (MATLAB)
文章代碼(AID): #1K8GmKrY (MATLAB)