平均值为 A*B。那么你能用均值(mu)和B来求解A吗?
A = mu/B
当然,除非你知道 B,否则这没有用。或者是吗?
看你的第一个表情。可以代替吗?
gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) = 0.90
这会让你更接近吗?也许。除了不完整的伽马函数本身之外,没有有用的符号解决方案可用。你如何在matlab中用一个未知数数值求解一个方程?使用 fzero。
当然, fzero 寻找零值。但是通过减去 0.90,问题就解决了。
我们可以定义一个 fzero 可以使用的函数吗?使用函数句柄。
>> mu = 1.86;
>> gamfun = @(B) gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) - 0.90;
所以试试吧。在我们这样做之前,我总是建议绘制一些东西。
>> ezplot(gamfun)
唔。该图表明可能很难找到函数的零。如果您确实尝试过,您会发现这里需要良好的 fzero 起始值。
对不起我的第一次尝试。更好的 fzero 起始值,加上更多的绘图确实给出了产生所需形状的伽马分布。
>> B = fzero(gamfun,[.0000001,.1])
B =
0.0124760672290871
>> A = mu/B
A =
149.085442218805
>> ezplot(@(x) gampdf(x,A,B))
事实上,这是一条非常“正常”的曲线,即高斯曲线。