Re: [問題] 極值問題已回收

看板MATLAB作者時間17年前 (2008/10/24 02:28), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《buttermilk (脫脂牛奶)》之銘言: : 我是要算 : 0.5 : 16∫ x^a (1-x)^(a-1) dx : B(2a-1,2a-1) 0 : ——————— - ———————————— 在 (0.5,3) 上的最小值 : [B(a,a)]^2 B(a,a) : 我的程式是: : p=@(a) beta(2*a-1,2*a-1)/beta(a,a)^2; : s=@(x,a) x^a*(1-x)^(a-1); : q=@(a) quad(s,0,0.5)/beta(a,a); : fminbnd(p-16*q,0.5,3) : 結果這樣算行不通 : 我猜是s和q出了問題 : quad(s,0,0.5)是把 s=@(x,a) x^a*(1-x)^(a-1) 對x在(0.0.5)上積分 : 我的意思是 quad(s,0,0.5) 是把 s=@(x,a) x^a*(1-x)^(a-1) 對x在(0.0.5)上積分 : 因此quad(s,0,0.5)只是a的函數而已 : 但是這樣表示法又似乎不對 : 請高手們解說一下 你可以在 help 裡仔細的看一下 function_handle @ 的說明 你的程是不能跑得原因除了 @ 的使用方式之外 quad 這個function 的使用方式也會出現一點問題 下面兩個方法給你參考一下 ex1 p='beta(2*a-1, 2*a-1)./beta(a,a).^2'; s='@(x)x.^a.*(1-x).^(a-1)'; q=['quad(' s ', 0, 0.5)./ beta(a, a)']; [a,fval] = fminbnd(@(a)eval(p)-16*eval(q), 0.5, 3) ex2 funxtion [x, fval] = Main [a,fval] = fminbnd(@(a)objfun(a), 0.5, 3) function f = objfun( a ) p= beta(2*a-1,2*a-1)./beta(a,a)^2; q= quad(@(x)x.^a.*(1-x).^(a-1), 0, 0.5)./beta(a,a); f = p-16*q; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.72.188 ※ 編輯: hilosi 來自: 140.123.122.179 (10/24 12:12)

10/24 22:50, , 1F
大感謝!!!
10/24 22:50, 1F
文章代碼(AID): #190C9TZs (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #190C9TZs (MATLAB)