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

看板MATLAB作者時間17年前 (2008/10/25 01:10), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《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
文章代碼(AID): #190W5uqa (MATLAB)
文章代碼(AID): #190W5uqa (MATLAB)