如何为MATLAB中的内置函数求解x?
我试图求解一个二项分布函数的p,其中p是成功的概率 我尝试过很多方法,但都不管用,下面是我使用过的方法之一:如何为MATLAB中的内置函数求解x?,matlab,Matlab,我试图求解一个二项分布函数的p,其中p是成功的概率 我尝试过很多方法,但都不管用,下面是我使用过的方法之一: syms p y = 1 - binocdf(5,15,p) == 0.999; X = vpasolve(y, p,[-1 1]); 这是我在运行代码后得到的错误: 使用symengine时出错,无法从字面上证明“p
syms p
y = 1 - binocdf(5,15,p) == 0.999;
X = vpasolve(y, p,[-1 1]);
这是我在运行代码后得到的错误:
使用symengine时出错,无法从字面上证明“p<0 | 1sym/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 使用函数句柄代替syms函数,因为binocdf()
不允许p
成为syms变量
y = 1 - binocdf(5,15,p) == 0.999;
可以改写为
y = 1 - binocdf(5,15,p) - 0.999 == 0;
- 使用功能手柄,省略 方程式
fzero()
找到一个函数的根,换句话说就是解方程y==0
binocdf(5,15,p)
中的第三个参数,即p
是一个概率,范围从0
到1
- 将范围从
更改为[-1,1]
[0,1]
整个代码如下所示
y = @(p)1 - binocdf(5,15,p) - 0.999;
X = fzero(y, [0 1])
结果
X = 0.7432
使用函数句柄代替syms函数,因为binocdf()
不允许p
成为syms变量
y = 1 - binocdf(5,15,p) == 0.999;
可以改写为
y = 1 - binocdf(5,15,p) - 0.999 == 0;
- 使用功能手柄,省略 方程式
fzero()
找到一个函数的根,换句话说就是解方程y==0
binocdf(5,15,p)
中的第三个参数,即p
是一个概率,范围从0
到1
- 将范围从
更改为[-1,1]
[0,1]
整个代码如下所示
y = @(p)1 - binocdf(5,15,p) - 0.999;
X = fzero(y, [0 1])
结果
X = 0.7432