問題是subst(a=b, c)
(或等效subst(b, a, c)
)只能在a
是c
的確切子表達式時才能進行替換。
ratsubst
(它參見)可以處理一些情況下,當a
不是一個確切的subexepression,但在這種情況下,它似乎並沒有工作。
但我想你可以通過從另一個減去一個方程來得到你想要的結果。請注意0收益率a - c = b - d
。另請注意,我已經在另一個步驟(在%i7中)應用diff
運算符。此外,我已乘以%o7乘以r得到類似base
。
(%i1) depends (\rho,[t, r, \theta, z]); depends (V, [t, r, \theta, z]);
(%o1) [rho(t, r, theta, z)]
(%o2) [V(t, r, theta, z)]
(%i3) f_contin : diff (\rho, t) + diff (\rho*r*V[r], r)*(1/r) = 0;
drho d
r V ---- + r (-- (V)) rho + V rho
drho r dr dr r r
(%o3) ---- + ------------------------------------ = 0
dt r
(%i4) base : diff (V[b]*r*\rho, r) = 0;
drho d
(%o4) V r ---- + (-- (V)) r rho + V rho = 0
b dr dr b b
(%i5) V_sub : V[r] = V[b] + \epsilon*V[r];
(%o5) V = epsilon V + V
r r b
(%i6) subst (V_sub, f_contin);
drho drho d
(%o6) ---- + (r (epsilon V + V) ---- + r (-- (epsilon V + V)) rho
dt r b dr dr r b
+ (epsilon V + V) rho)/r = 0
r b
(%i7) %o6, nouns;
drho drho d d
(%o7) ---- + (r (epsilon V + V) ---- + r (epsilon (-- (V)) + -- (V)) rho
dt r b dr dr r dr b
+ (epsilon V + V) rho)/r = 0
r b
(%i8) expand (r*%o7 - base);
drho drho d
(%o8) r ---- + epsilon r V ---- + epsilon r (-- (V)) rho + epsilon V rho = 0
dt r dr dr r r
我想用base中給出的表達式替換%o6。即在倒數第二個表達式中將d/dr(rho * Vb * r)設置爲零。 – Rhinocerotidae
即使subst(a,b,c)也不起作用。 – Rhinocerotidae
實際上,當第一個是方程時,「subst」可以有2個參數,例如, 'subst(foo = bar,myexpr)'。原來問題是OP給出的表達式不包含'base'的左邊作爲子表達式。 –