我有以下表达式:
A = (-(e + p) pe v +
v ((1 + pe) u^2 + pe v^2) \[Rho])/(-(e + p) pe u +
u (-prho + (1 + pe) u^2 + pe v^2) \[Rho]);
我想在上面的表达式中插入以下子表达式:
H = (e + p)/\[Rho]
我该怎么做? 我尝试过使用:
FullSimplify[A, H == (e + p)/\[Rho]]
Eliminate[{A, H = (e + p)/\[Rho]}, {e, p, \[Rho]}]
Eliminate[{A, H = (e + p)/\[Rho]}, {e, p}]
以及其他一些解决方案。没有人工作过。
我对“=”和“==”之间的区别感到有些困惑,但我已经尝试了两种情况。
答案 0 :(得分:0)
Rojo的这个brilliant answer可以解决问题: -
Clear[pe, e, v, u, prho, p, \[Rho], H, A];
A = (-(e + p) pe v + v ((1 + pe) u^2 + pe v^2) \[Rho])/
(-(e + p) pe u + u (-prho + (1 + pe) u^2 + pe v^2) \[Rho])
doThat[expr_, vars_List] := Expand[Simplify[expr /. Flatten[
Solve[# == ToString@#, First@Variables@#] & /@ vars]],
Alternatives @@ ToString /@ vars] /. Thread[ToString /@ vars -> vars];
done = doThat[A, {(e + p)/\[Rho]}];
ans = Simplify[done //. (e + p)/\[Rho] -> H]
以上产生了所需的代数表达式,
现在检查: -
H = (e + p)/\[Rho];
FullSimplify[A] == FullSimplify[ans]
是真的。
还使用各种值进行测试: -
pe = 2; e = 3; v = 4; u = 5; prho = 6; p = 7; \[Rho] = 8;
A
985分之836
H = (e + p)/\[Rho]
5/4
Clear[e, p, \[Rho]]
ans
985分之836
同样的答案。似乎工作得非常好。