Re: [問題] 極值問題已回收
再請問一下 如果我要算
1
h(a,b)=∫ [f(x)-g(x)]^2 dx 的極小值的話 該怎麼寫程式呢
0
1 1
其中 f(x)=4x, 0<x<0.5 g(x)= -------- ∫ x^(a-1) (1-x)^(b-1) dx
=-4x+4 0.5≦x<1 B(a,b) 0
我的程式不能跑=.=
f='@(x)4*x.*(x>=0).*(x<0.5)+(-4*x+4).*(x>=0.5).*(x<=1)';
g='@(x)betapdf(x,a(1),a(2))';
k='(eval(f)-eval(g)).^2';
h=['quad('k',0,1)'];
[a,fval]=fminsearch(@(a)eval(h),[1,1])
覺得是k和h出了問題
※ 引述《hilosi ()》之銘言:
: ※ 引述《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: 58.115.20.204
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章