Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为MATLAB中的内置函数求解x?_Matlab - Fatal编程技术网

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

如何为MATLAB中的内置函数求解x?,matlab,Matlab,我试图求解一个二项分布函数的p,其中p是成功的概率 我尝试过很多方法,但都不管用,下面是我使用过的方法之一: syms p y = 1 - binocdf(5,15,p) == 0.999; X = vpasolve(y, p,[-1 1]); 这是我在运行代码后得到的错误: 使用symengine时出错,无法从字面上证明“p

我试图求解一个二项分布函数的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

使用函数句柄代替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