2

X parameter に従ってMatlabに方程式があります。F(x) のランダムな量の X の量を見つけたいです。そして私は以下のコードを試しました。しかし、私の式には1つの結果しかないはずですが、2つの異なる結果が得られます。

roots(f)代わりに試してみsolve(f)ましたが、エラーが発生しました:

??? タイプ 'sym' の入力引数に対して未定義の関数またはメソッド 'isfinite' です。

誰でもこれで私を助けることができますか? 私は何をすべきか ?この問題の解決について間違った考えがある場合でも、教えてください。ありがとうございました

関数 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
4

1 に答える 1

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
于 2013-01-02T11:18:29.780 に答える