如何为MATLAB中的内置函数求解x?

时间:2019-07-11 03:33:16

标签: matlab

我正在为二项式分布函数求解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;

1 个答案:

答案 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)是一个 概率 ,范围从p0

  • 将范围从1更改为[-1, 1]
[0, 1]

整个代码如下

fzero(y, [0 1])

结果

y = @(p)1 - binocdf(5,15,p) - 0.999;
X = fzero(y, [0 1])