我根据X参数在Matlab中有一个等式。我想找到随机量F(x)的X量。 我尝试了下面的代码。但它给了我两个不同的结果,而我的方程应该只有一个结果。
即使我尝试了roots(f)
而不是solve(f)
,但它给了我一个错误:
???未定义的函数或方法'isfinite'用于输入参数 输入'sym'。
任何人都可以帮助我吗? 我该怎么办 ? 即使我对解决这个问题有错误的想法,请告诉我。 谢谢
function betaDistribution_2(a,b)
syms x ; y=inline((x^(a-1))*((1-x)^(b-1))); beta=quad(y,0,1); g=(1/beta)*(x^(a-1))*((1-x)^(b-1)); % I have this equation and I want to find the amount of x for the random %amounts of p p=int(g,x,0,x); for i=0:50 fxi=rand(1); f=p-fxi; xi=solve(f); result=eval(xi); disp(result) end end
答案 0 :(得分:0)
尝试过滤您的解决方案。
a=1;
b=2;
% a threshold for imagery part
SMALL=1e-9;
syms x real;
y=inline((x^(a-1))*((1-x)^(b-1)));
beta=quad(y,0,1);
g=(1/beta)*(x^(a-1))*((1-x)^(b-1));
p=int(g,x,0,x);
% return true for physically meaningfull results
filter = @(xc) abs(imag(xc))<SMALL && real(xc)>0 && subs(g, x, xc) > 0 && subs(p, x, xc)>0;
for m=0:50
fxi=rand(1);
f=p-fxi;
xi=solve(f, x);
result=eval(xi);
idx = arrayfun (filter, result);
result = result(idx);
% make sure it is OK
assert(length(result)==1);
disp(result)
end