Wolfram mathematica Mathematica:帮助解决带有不等式约束的非线性方程组
我有一个由4个未知量的4个非线性方程组组成的系统。此外,我还有一个不等式约束,我需要一个由四个未知数组成的函数来满足(然后我需要这四个未知数是非负的)。我的问题有12个左右的参数,我打算最终解决一系列参数的问题,以了解解决方案的行为。并非以下代码中包含的所有参数都用于此特定设置(它们用于其他设置)。我知道我的系统可能没有所有参数值的解,我需要做一些工作来找到有效的参数空间,但在我这样做之前,我需要知道如何求解具有不等式约束的非线性方程组。我是mathematica的新手,我在下面包含我的代码。在代码中,我首先给出一些参数值,然后定义一些系数,然后在FindInstance函数中编写4个方程和1个不等式(这不起作用)。我已经用FindRoot函数为一组特定的参数解了这4个方程,但是我得到了一个不满足不等式的解。非常感谢。mathematica中的代码如下:Wolfram mathematica Mathematica:帮助解决带有不等式约束的非线性方程组,wolfram-mathematica,Wolfram Mathematica,我有一个由4个未知量的4个非线性方程组组成的系统。此外,我还有一个不等式约束,我需要一个由四个未知数组成的函数来满足(然后我需要这四个未知数是非负的)。我的问题有12个左右的参数,我打算最终解决一系列参数的问题,以了解解决方案的行为。并非以下代码中包含的所有参数都用于此特定设置(它们用于其他设置)。我知道我的系统可能没有所有参数值的解,我需要做一些工作来找到有效的参数空间,但在我这样做之前,我需要知道如何求解具有不等式约束的非线性方程组。我是mathematica的新手,我在下面包含我的代码。在
values = {{r, \[Delta], \[Sigma], Subscript[i, e], Subscript[i, u],
Subscript[\[Lambda], e ], Subscript[\[Lambda], u ], Subscript[H,
0], Subscript[C, f] , F, \[Tau], Subscript[C, Ren]}, {0.047, 0.05,
0.1632, 5, 0, 0.005, 0.02, 100, 17, 80, 0.3, 8}};
G = Grid[values,
Dividers -> {{None, None, None}, {{Blue}, {Blue}, None}}];
r = values[[2, 1]];
\[Delta] = values[[2, 2]];
\[Sigma] = values[[2, 3]];
Subscript[i, e] = values[[2, 4]];
Subscript[i, u] = values[[2, 5]];
Subscript[\[Lambda], e] = values[[2, 6]];
Subscript[\[Lambda], u] = values[[2, 7]];
Subscript[H, 0] = values[[2, 8]];
Subscript[C, f] = values[[2, 9]];
F = values[[2, 10]];
\[Tau] = values[[2, 11]];
Subscript[C, Ren] = values[[2, 12]];
Subscript[I, e] =
Subscript[i, e]/
r - (Subscript[i, e] - Subscript[i, u]) Subscript[\[Lambda],
e]/(r (r + Subscript[\[Lambda], e] + Subscript[\[Lambda], u]));
Subscript[I, u] =
Subscript[i, u]/
r + (Subscript[i, e] - Subscript[i, u]) Subscript[\[Lambda],
u]/(r (r + Subscript[\[Lambda], e] + Subscript[\[Lambda], u]));
Solve[k (k - 1) + 2 (r - \[Delta])/\[Sigma]^2 k - 2 r/\[Sigma]^2 == 0,
k];
{Subscript[k, 1 ], Subscript[k, 2 ]} = k /. % ;
Clear[k];
Subscript[k, 1]
Subscript[k, 2]
L1 = (H1S^(-Subscript[k, 1])* (F - (c1*F)/r + (
H1S^(Subscript[k, 2])*((F* H1D^(Subscript[k, 1])* (-c1 + r))/r +
H1S^(Subscript[k, 1])*(-(c0* F)/r + (c1*F)/
r + (H1D^(Subscript[k,
2])*(-F*H0D^(Subscript[k, 1])* (c0 - r) +
H0S^(Subscript[k, 1])* (c0*F - H0D *r +
r* Subscript[C, f])))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))*
r) + (H1D^(Subscript[k,
1])*(F*H0D^(Subscript[k, 2])*(c0 - r) -
H0S^(Subscript[k, 2])* (c0*F - H0D* r +
r* Subscript[C, f])))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))*r) +
Subscript[C, Ren])))/(
H1D^(Subscript[k, 2])* H1S^(Subscript[k, 1]) -
H1D^(Subscript[k, 1])* H1S^(Subscript[k, 2]))));
M1 = (((F* H1D^(Subscript[k, 1])* (-c1 + r))/r +
H1S^(Subscript[k, 1])*(-(c0* F)/r + (c1*F)/
r + (H1D^(Subscript[k,
2])*(-F*H0D^(Subscript[k, 1])* (c0 - r) +
H0S^(Subscript[k, 1])* (c0*F - H0D *r +
r* Subscript[C, f])))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))*
r) + (H1D^(Subscript[k,
1])*(F*H0D^(Subscript[k, 2])*(c0 - r) -
H0S^(Subscript[k, 2])* (c0*F - H0D* r +
r* Subscript[C, f])))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))*r) +
Subscript[C, Ren]))/(
H1D^(Subscript[k, 2])* H1S^(Subscript[k, 1]) -
H1D^(Subscript[k, 1])* H1S^(Subscript[k, 2])));
L0 = ((-F*H0D^(Subscript[k, 2])*(c0 - r) +
H0S^(Subscript[k, 2])*(c0*F - H0D*r +
r*Subscript[C, f]))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))* r));
M0 = ((-F*H0D^(Subscript[k, 1])*(c0 - r) +
H0S^(Subscript[k, 1])*(c0*F - H0D*r +
r*Subscript[C, f]))/((H0D^(Subscript[k, 2])*
H0S^(Subscript[k, 1]) -
H0D^(Subscript[k, 1])* H0S^(Subscript[k, 2]))* r));
c0 = ((-F*H0D^(Subscript[k, 2])*r*Subscript[k, 1] +
H0S^(Subscript[k, 2])*
r*(-H0D + (H0D + Subscript[C, f])*Subscript[k, 1]))/(
F*(H0D^(Subscript[k, 2]) - H0S^(Subscript[k, 2]))*(-1 + \[Tau])*
Subscript[k, 1]));
c1 = (H1D^(Subscript[k, 1])*H1S^(Subscript[k, 1])*
r*(-1* F*H1S^(-Subscript[k, 1]) +
H1D^(-Subscript[k, 1]) *Subscript[C, Ren] + (
F*H1D^(-Subscript[k, 1])* (1 - \[Tau])*(-80*
H0D^(Subscript[k, 2])*Subscript[k, 1] +
H0S^(Subscript[k,
2])*(- H0D + (15 + H0D)* Subscript[k, 1])))/((-56*
H0D^(Subscript[k, 2]) + 56*H0S^(Subscript[k, 2]))*Subscript[
k, 1]) + (
F*H0S^(-Subscript[k,
1])*(r + ((1 - \[Tau])* (-80* H0D^(Subscript[k, 2])* r*
Subscript[k, 1] +
H0S^(Subscript[k, 2])*
r* (-H0D + (15 + H0D)*Subscript[k, 1])))/((-56*
H0D^(Subscript[k, 2]) + 56* H0S^(Subscript[k, 2]))*
Subscript[k, 1])))/r))/(
F *(H1S^(Subscript[k, 1]) - H1D^(Subscript[k, 1]))*(1 - \[Tau]));
A1 = (F*H1S^(-Subscript[k, 1])*(r + c1*(-1 + \[Tau]))*Subscript[k,
2])/(r *(Subscript[k, 1] - Subscript[k, 2]));
B1 = (F*H1S^(-Subscript[k, 2])*(r + c1*(-1 + \[Tau]))*Subscript[k,
1])/(r *(Subscript[k, 2] - Subscript[k, 1]));
FindInstance[
L1*Subscript[H, 0]^(Subscript[k, 1]) +
M1*Subscript[H, 0]^Subscript[k, 2] + c1*F/r == F &&
L0*H1D^(Subscript[k, 1]) + M0*H1D^Subscript[k, 2] + c0*F/r -
Subscript[C, Ren] ==
H1D - Subscript[C,
f] && (F*H0S^(-Subscript[k, 1])*(r + c0*(-1 + \[Tau]))* Subscript[
k, 2]) == (H0D^(-Subscript[k, 1])*(-H0D*
r + (H0D*r + c0*F *(-1 + \[Tau]) + r* Subscript[C, f])*
Subscript[k, 2])) && (F*
H1S^(-Subscript[k, 2])*(r + c1*(-1 + \[Tau]))*Subscript[k,
1]) == (H0S^(-Subscript[k, 2])*
H1D^(-Subscript[k, 2])*((-c0 + c1)*F*
H0S^(Subscript[k, 2])*(-1 + \[Tau]) +
F*H1D^(Subscript[k, 2])* (c0 + r - c0 *\[Tau]) +
H0S^(Subscript[k, 2])* r* Subscript[C, Ren])* Subscript[k,
1]) && A1*(Subscript[H, 0])^(Subscript[k, 1]) +
B1*(Subscript[H, 0])^(Subscript[k, 2]) + (H1S) - (1 - \[Tau])*c1*
F/r > 0 && H1S > 0 && H0S > 0 && H1D > 0 && H0D > 0, {H1S, H0S,
H1D, H0D}, Reals]
Clear[c0, c1, L0, L1, M0, M1, H1D, H0D, H1S, H0S]
我不相信您可以使用带有约束(不等式等)的
FindRoot
。对于非线性约束优化,您需要研究以下内置函数
- 最大化[…]
- n最大化[…]
- FindMaximum[…]
- 最小化[…]
- n最小化[…]
- 芬德尼姆[…]
Maximize[{(2 x + y - z)/(5 x - 7 y + 3),
0 <= x + y + z <= 1 && 1 <= x - y + z <= 2 && x - y - z == 3}, {x,
y, z}]
有关Mathematica中约束优化(包括非线性)的更多信息,请访问以下链接:
我希望这能有所帮助。欢迎来到StackOverflow。这是一个问答网站,不是代码审查网站。我建议尽量减少你的代码,然后制定一个问题,帮助你确定问题。谢谢,我只是添加了代码,以防有人想看看我要解决的实际方程。我本身没有代码问题。我只是不知道用什么内置的mathematica函数来解非线性方程组和不等式组。@Amayta问题是,这里不仅有一个,还有一大堆。每一个都有很多很多选择。因此,如果你能发布一个你无法求解的方程的简短示例,我们可能会提供更好的帮助。否则,像@Jason已经发布的那样,一个好的但一般的答案是你可能得到的最好答案。我真的很感谢你的回答。我可以把这个问题表述为一个约束优化问题。
{5/13, {x -> 2, y -> 0, z -> -1}}