[問題] 雙重積分的問題已回收

看板MATLAB作者 (錢包掉了.我要寫一個慘字)時間17年前 (2008/10/24 18:02), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
我想要積以下函數. ( 函數內容確定沒錯. 但是不知道是語法錯誤或是怎樣, 跑出來的結果不滿意 ) F2 = inline('( abs(y).* (x.*abs(y)+x.^2.*sqrt(y.^2+x) - y.^2.*abs(y) - 2*y.^2.*x.*sqrt(y.^2+x)) ) ./ ( 2*(y.^2+x).^2.*(x.*sqrt(y.^2+x)+abs(y)).^2 )'); c = dblquad(F2,1,200,1,200); 我其實是要積 x: 1-> infinity; y: 1 -> infinity 大致上分析過一下 x 和 y 的相對 order...收斂速度應該不慢. 結果 c = dblquad(F2,1,20,1,20) 得出 -0.4255 c = dblquad(F2,1,200,1,200) 得出 -0.6574 c = dblquad(F2,1,200,1,200000) 得出 -0.6809 c = dblquad(F2,1,200000,1,200000) 得出 - 0.9842 c = dblquad(F2,1,200000,1,20000000) 得出 -0.9921 c = dblquad(F2,1,20000000,1,20000000) 得出 -3.2743 c = dblquad(F2,1,20000000,1,200000) 得出 -2.4900 感覺非常不收斂. 甚至有發散的感覺 ( 我做變數變換之後, 覺得這積分完之後應該會 ~ max( max(1/y), max(1/sqrt(x)) ) 所以 dblquad(F2,1,20,1,20) 和 dblquad(F2,1,20000000,1,200000) 應該不會超過 ~ 30% 才對..結果竟然差了 6 倍 ) 想請問到底哪裡出問題了? 該如何修改? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 84.100.44.89

10/24 18:07, , 1F
絕對值不重要..只是因為某些原因, 我keep住了
10/24 18:07, 1F

10/24 21:51, , 2F
dblquad 中的 tol 要調整.. 不過測試tol應該會花很多時間吧
10/24 21:51, 2F

10/24 21:56, , 3F
加上 x y 上界合理數值的判定 應該會讓你花掉一整天的時間
10/24 21:56, 3F

10/24 22:41, , 4F
oh....這麼麻煩啊?
10/24 22:41, 4F

10/24 22:42, , 5F
我把它換成 極座標. 終於搞定. 我想是因為 quadrature
10/24 22:42, 5F

10/24 22:42, , 6F
對於這種不太regular 而且積分範圍過大的函數不好處理?
10/24 22:42, 6F

10/24 22:43, , 7F
真是麻煩..
10/24 22:43, 7F
文章代碼(AID): #190PqPVE (MATLAB)
文章代碼(AID): #190PqPVE (MATLAB)