我正在为二项式分布函数求解p,其中p是成功的概率。
我尝试了许多方法,但是没有一个起作用,下面显示了我使用的一种方法:
syms p
y = 1 - binocdf(5,15,p) == 0.999;
X = vpasolve(y, p,[-1 1]);
这是我在运行代码后得到的错误:
使用symengine时出错无法证明'p <0 |从字面上看1
sym / privsubsasgn中的错误(第1067行) L_tilde2 =内置('subsasgn',L_tilde,struct('type','()','subs',{varargin}),R_tilde);
sym / subsasgn中的错误(第904行) C = privsubsasgn(L,R,inds {:});
binocdf中的错误(第63行)y(k1)= NaN;
myfun错误(第6行)y = binocdf(5,15,p)== 0.999;
答案 0 :(得分:2)
使用 功能句柄 代替 syms函数 ,因为binocdf()
不允许{{ 1}}是 syms 变量
p
可以改写为
y = 1 - binocdf(5,15,p) == 0.999;
y = 1 - binocdf(5,15,p) - 0.999 == 0;
y = @(p)1 - binocdf(5,15,p) - 0.999
找到一个函数的根,换句话说,求解方程fzero()
y == 0
中的第三个参数,即binocdf(5,15,p)
是一个 概率 ,范围从p
到0
1
更改为[-1, 1]
[0, 1]
整个代码如下
fzero(y, [0 1])
结果
y = @(p)1 - binocdf(5,15,p) - 0.999;
X = fzero(y, [0 1])