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

看板MATLAB作者 (脫脂牛奶)時間17年前 (2008/10/25 00:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
再請問一下 如果我要算 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
文章代碼(AID): #190Vpz6X (MATLAB)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #190Vpz6X (MATLAB)