稳定概率方程matlab仿真,matlab:求解一系列方程系统地调整概率估计

这里的方程有很多冗余。

eqn6

eqn7

意味着

eqn3

eqn4

分别。此外,

EQN3

EQN4

意味着

eqn5

. 我们也不需要

eqn1

eqn2

哪些定义

x

y

作为常量,因为使用直接替换可以更有效地处理这些常量。我想这些冗余是Matlab困惑的原因,但我不太确定。

另外,使用符号工具箱可能有点过分,因为可能没有封闭形式的解决方案,但是如果必须这样做,这里有一个解决方案。

x = 0.7813;

y = 0.2487;

syms n p q

eqn6 = x^(1/n) == p;

eqn7 = y^(1/n) == q;

eqn8 = p + q == 1;

sol = solve([eqn6, eqn7, eqn8], [p q n]);

p = sol.p

q = sol.q

n = sol.n

结果

:

Warning: Cannot solve symbolically. Returning a numeric approximation instead.

> In solve (line 304)

In q51941792_2 (line 7)

p = 0.77034051295869623476715256144042

q = 0.22965948704130376523284743855958

n = 0.94585921162748018347665683036153

请注意,解算器找不到闭合形式的解,因此它默认为数值优化方法。

如果您有优化工具箱,那么可以使用

fsolve

相反,这更合适(更快)。使用

数值解

您需要定义一个函数,它接受一个输入向量并返回一个输出向量。目标

数值解

是查找所有零输出的输入向量。我们重新安排

EQN6

,

EQN7

eqn8

形成这个函数。您可以阅读文档了解更多信息。

x = 0.7813;

y = 0.2487;

% define optimization function assumes ary = [p, q, n]

f = @(ary) [x^(1/ary(3)) - ary(1); ... % eqn6

y^(1/ary(3)) - ary(2); ... % eqn7

ary(1) + ary(2) - 1]; % eqn8

% initial estimate

p0 = x;

q0 = y;

n0 = 1;

% solve

fsolve_opts = optimoptions('fsolve', 'OptimalityTolerance', 0, 'FunctionTolerance', 1e-12);

sol = fsolve(f, [p0; q0; n0], fsolve_opts);

p = sol(1)

q = sol(2)

n = sol(3)

结果

:

p = 0.770340512958696

q = 0.229659487041304

n = 0.945859211627480

解的存在性

有些情况下没有解决方案。例如,如果

x > 1

y > 0 & y < 1

然后两者

p

q

为正,但其中一个大于1(取决于

n

)但这是矛盾的

EQN8

所以没有解决方案。如果您想使用这种方法,就需要保证解决方案的存在。我认为一个充分的条件是

X

Y

都在0和1之间,尽管我还没有证明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值