Re: [問題] MATLAB新手發問(積分問題)

看板MATLAB作者 (神無月 孝臣)時間17年前 (2007/10/17 22:25), 編輯推噓10(1008)
留言18則, 5人參與, 最新討論串1/1
※ 引述《va1kyrie (123)》之銘言: : 各位先進大家好 : 小弟想請問一個問題 : 我現在要解一個積分: : ∫ (1/(exp((x-F-V)/T))+1) * (R)/((x-E-U)^2+R^2) dx : 我要對x積分 : 積分區間是從-∞到F : 而F=0.2 E=0.3 U=0.06 R=0.001 T=0.002都是已知定數 : V則是一個變數 V=0:0.001:1 後面還會用到 : 請問這樣能積嗎? : 請知道的人教我 : 或是提點我一下該用哪些指令~ 先把方程式寫容易看一些 V 1 * R ∫--------------------------------------------------------dx -∞ x - F - V 2 2 ( exp( ----------- ) + 1 ) * ( ( x - E - U ) + R ) T 邊界是無限大沒辦法直接做數值積分 所以先進行變數變換 1 1 - t -1 令t = --------- => x = ------- => dx = -------dt x + 1 t t * t 1 下界-∞ => ---------- = 0 -∞ + 1 1 上界 V => ---------- V + 1 接著把x替換掉 1 ------- V + 1 - R ∫ ---------------------------------------------------------------dt 0 1 - t / ------- -F -V \ | t | 1 - t 2 2 2 ( exp| -------------- | + 1 ) * ( ( ------- - E - U ) + R ) * t \ T / t 變成有限區間就可以直接做數值積分了 (那直接求-∞開始區間的H開頭高斯積分法我不太信任) (而且H開頭高斯積分法的高斯點與weighting也太難求) 接下來有兩種作法 1 一種是把0到-------的區間再做變數變換處理成-1到1之間 V + 1 然後就可以去找網路上面很多的-1到1高斯積分點資料 直接使用高斯積分法便可得到積分值 因為經過變數變換後知道變數會轉變成怎樣的方程式 所以不管V怎麼變,其區間都會維持在-1到1之間 因此V不管怎麼變都可以使用完全相同的一套最基本的高斯積分點來計算 第二種作法就是不管變數變換法處理成-1到1區間 1 改成求0到-------這個區間內的高斯積分點再來做高斯積分法 V + 1 因為V會變化,所以每次變化都要再求一次新區間內的高斯積分點 不過這個Matlab Center裡面有別人已經寫好的funtion了 只要輸入上下區間以及需要幾個高斯點就會把高斯點和其weighting算出來給你 撿別人寫好的來用會簡單一些,可以自己少算一次變數變換 最後要注意的一點就是高斯點數目請請使用偶數,以免出現0的高斯點來 至於要取幾個高斯點才會轉就麻煩請進行收斂測試來決定 -- Deserves death! I daresay he does. Many that live deserve death. And some die that deserve life. Can you give that to them? Then be not too eager to deal out death in the name of justice, fearing for your own safty. Even the wise cannot see all ends. Gandalf to Frodo -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.233.241.253 ※ 編輯: Gwaewluin 來自: 125.233.241.253 (10/17 22:48)

10/17 23:09, , 1F
沒記錯的話,Gauss point好像沒有0
10/17 23:09, 1F

10/17 23:09, , 2F
不過這個題目出現0應該也不會有什麼問題
10/17 23:09, 2F

10/17 23:10, , 3F
喔,轉換後的t代0會爆掉,我看成轉換前的
10/17 23:10, 3F

10/17 23:11, , 4F
奇數個又是在-1到1區間的話,中間的高斯點會是0,因為在
10/17 23:11, 4F

10/17 23:12, , 5F
-1到1區間高斯點是左右對稱的,所以中間那點會為0
10/17 23:12, 5F

10/18 00:26, , 6F
我是原問者~ 謝謝你的解答
10/18 00:26, 6F

10/18 00:30, , 7F
不過積分上限是定值(F=0.2) 不是變數
10/18 00:30, 7F

10/18 00:41, , 8F
這不重要,算出變數變換後區間內高斯點即可簡單求出數值
10/18 00:41, 8F

10/18 00:41, , 9F
積分,不需要想太複雜,高斯積分很好用低 XD
10/18 00:41, 9F

10/18 00:44, , 10F
推!! 厲害
10/18 00:44, 10F

10/18 00:48, , 11F
不過.Matlab Center裡面人寫的函數名稱是什麼?
10/18 00:48, 11F

10/18 01:11, , 12F
10/18 01:11, 12F

10/18 02:41, , 13F
喔,是我記錯了。
10/18 02:41, 13F

10/18 02:42, , 14F
L-G polynomial的解查表就可以了,自己解太浪費時間了
10/18 02:42, 14F

10/18 02:43, , 15F
通常函數不要太非線性,取4點5點結果就非常好了
10/18 02:43, 15F

10/18 02:44, , 16F
10/18 02:44, 16F

10/18 10:37, , 17F
謝謝 ^^
10/18 10:37, 17F

10/18 21:16, , 18F
這篇值366銀
10/18 21:16, 18F
文章代碼(AID): #175Xj1XJ (MATLAB)
文章代碼(AID): #175Xj1XJ (MATLAB)