#wolfram-mathematica
#wolfram-mathematica
Вопрос:
У меня есть система из 4 нелинейных уравнений с 4 неизвестными. Кроме того, у меня есть 1 ограничение неравенства, для удовлетворения которого мне нужна функция из четырех неизвестных (и тогда мне нужно, чтобы четыре неизвестных были неотрицательными). Моя проблема имеет около 12 параметров, и я намерен в конечном итоге решить проблему для ряда параметров, чтобы посмотреть, как ведет себя решение. Не все параметры, включенные в приведенный ниже код, используются в этой конкретной настройке (они используются в других). Я понимаю, что моя система может не иметь решения для всех значений параметров и что мне нужно будет проделать некоторую работу, чтобы найти пространство параметров, которое работает, но прежде чем я это сделаю, мне нужно знать, как решить систему нелинейных уравнений с ограничением неравенства. Я новичок в mathematica и включаю свой код ниже. В коде я сначала задаю значения некоторых параметров, затем определяю некоторые коэффициенты, а затем записываю 4 уравнения и 1 неравенство внутри функции FindInstance (которая не работает). Я решил эти 4 уравнения для определенного набора параметров с помощью функции FindRoot, но я получил решение, которое не удовлетворяло неравенству. Большое спасибо. Код в 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 amp;amp;
L0*H1D^(Subscript[k, 1]) M0*H1D^Subscript[k, 2] c0*F/r -
Subscript[C, Ren] ==
H1D - Subscript[C,
f] amp;amp; (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])) amp;amp; (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]) amp;amp; A1*(Subscript[H, 0])^(Subscript[k, 1])
B1*(Subscript[H, 0])^(Subscript[k, 2]) (H1S) - (1 - [Tau])*c1*
F/r > 0 amp;amp; H1S > 0 amp;amp; H0S > 0 amp;amp; H1D > 0 amp;amp; H0D > 0, {H1S, H0S,
H1D, H0D}, Reals]
Clear[c0, c1, L0, L1, M0, M1, H1D, H0D, H1S, H0S]
Комментарии:
1. Добро пожаловать в StackOverflow. Это раздел вопросов и ответов, а не сайт для просмотра кода. Я предлагаю попытаться сократить ваш код до минимума, а затем сформулировать вопрос, который поможет вам определить проблему.
2. Спасибо, я просто добавил код на случай, если кто-нибудь захочет взглянуть на реальные уравнения, которые я хотел решить. У меня нет проблемы с кодом как таковой. Я просто не знаю правильную встроенную функцию mathematica, которую можно использовать для решения системы нелинейных уравнений и неравенств.
3. @Amayta Проблема в том, что есть не только один, а целая куча. И у каждого из них доступно множество вариантов. Поэтому, если вы можете опубликовать краткий пример вида уравнений, которые вы не в состоянии решить, мы можем помочь лучше. В противном случае хороший, но общий ответ, такой как тот, который уже опубликовал @ Jason, — лучшее, что вы можете получить
Ответ №1:
Я не верю, что вы можете использовать FindRoot
с ограничениями (неравенства и т.д.). Для нелинейной ограниченной оптимизации вам захочется исследовать следующие встроенные функции
- Максимизировать […]
- Nмаксимизировать […]
- Найдите максимальное […]
- Минимизировать […]
- Минимизировать[…]
- Найдите минимальное значение […]
Я не уверен, какое из них вы хотели бы использовать для этой конкретной задачи.
Вот пример максимизации в действии:
Maximize[{(2 x y - z)/(5 x - 7 y 3),
0 <= x y z <= 1 amp;amp; 1 <= x - y z <= 2 amp;amp; x - y - z == 3}, {x,
y, z}]
что дает следующий результат:
{5/13, {x -> 2, y -> 0, z -> -1}}
Более подробную информацию о ограниченной оптимизации в Mathematica (включая нелинейное разнообразие) можно найти по следующим ссылкам:
- http://www.wolfram.com/learningcenter/tutorialcollection/ConstrainedOptimization/ConstrainedOptimization.pdf
- http://reference.wolfram.com/mathematica/tutorial/ConstrainedOptimizationOverview.html
Я надеюсь, что это поможет.
Комментарии:
1. Большое спасибо. Я действительно ценю ваш ответ. Я могу сформулировать проблему как ограниченную оптимизацию.