※ 引述《buttermilk (脫脂牛奶)》之銘言:
: 再請問一下 如果我要算
: 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 ()》之銘言:
: : 你可以在 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;
建議你把 objective function
1
h(a,b)=∫ [f(x)-g(x)]^2 dx
0
寫在副程式再去作計算,比較不會錯亂
你只要能夠確定你寫的副程式
在你給定任何的 a, b 的狀況下都能夠算出正確值的話
就能夠求出正確的解答囉
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.73.62
推
10/25 11:41, , 1F
10/25 11:41, 1F
討論串 (同標題文章)