Re: [討論] matlab算期望值

看板MATLAB作者 (真空管)時間10年前 (2015/07/07 22:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《vacuityhu (真空管)》之銘言: : 我需要算一個很少見的分布的期望值 : 叫做non-central chi distribution : 而且我要算的積分範圍不是全部 : 是一個常數c到inf : 這邊我採用常見的int指令去算 : syms x,i,a; : int((x-a)^2*pdf,x,a*c,inf) : pdf就是我這分布的pdf,a是另一個變數 : 到這裡都還好解決,可是後面問題來了 : 因為這分布的pdf中夾了一個 : symsum(f(x,i),i,0,inf) : f是一個很醜的函數 : 而且這個summation雖然收斂,但是沒有公式解 : 所以這邊matlab總是整理不出來sum的式子 : 導致int那邊也做不出多項式,只能回傳int式子給我 : 因為我後面還要對a作微分求微分等於零的a' : 所以他int之後不給我多項式的話diff跟solve就會error : 想請教板上的各大神們 : 是否有別的辦法可以算這期望值?? : 因為我這原本的思路int->diff->solve看來是行不通了 經過一個禮拜的研究我終於找到方法了... 雖然板上應該不會有人遇到跟我一樣需要先積x再微a再求根的問題 不過這個non-central chi distribution本身還是挺麻煩的 在這裡分享一下我是怎麼處理的 首先假設隨機變數x,自由度k,參數i(wiki中的lambda) pdf在wiki上有,我就不贅述,直接寫作pdf 根據wiki, pdf中參有一個大I函數叫作modified Bessel function of the first kind 原先這部分我是用symsum硬寫 但是因為這大I函數是無窮級數會爆 所以原本我做不動 這個大I函數在matlab中可找到對應的指令besseli(nu,Z) 第一格放下標,第二格放變數 經此代換後不論是要算E(x)還是E(x^2)還是E((x-c)^2)都ok 或是你取期望值的範圍不是0到inf也ok 或是要算diff也沒問題 順便再分享一個 這分佈的mean也夾雜一個很少見的函數叫generalized Laguerre polynomial 關於這個函數的定義請參考 http://mathworld.wolfram.com/ConfluentHypergeometricFunctionoftheFirstKind.html 當中提到 (m+n)! L(x)=--------*F(-n,m+1,x) m!n! 而這個F函數在matlab也有內建,叫作hypergeom(-n,m+1,x) 求解的部分,solve不堪用其實還有fzero,fminbnd兩個指令可用 但都有一些限制 所以我個人最後是自己寫一個簡單的牛頓法去找根比較直接實在 希望大家以後不會像我一樣卡一個問題卡兩個禮拜了T_T -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.165.113 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1436279821.A.247.html
文章代碼(AID): #1Lc-GD97 (MATLAB)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1Lc-GD97 (MATLAB)