Das Problem ist, dass subst(a=b, c)
(oder äquivalent subst(b, a, c)
) nur Substitutionen machen kann, wenn a
eine exakte subexpression von c
ist.
ratsubst
(die sehen) kann einige Fälle behandeln, wenn a
keine exakte Subexpression ist, aber in diesem Fall scheint es nicht zu funktionieren.
Aber ich denke, Sie können das gewünschte Ergebnis erhalten, indem Sie nur die eine Gleichung von der anderen abziehen. Beachten Sie, dass (a=b) - (c=d)
a - c = b - d
ergibt. Beachten Sie auch, dass ich einen weiteren Schritt (in% i7) eingefügt habe, um den Operator diff
anzuwenden. Außerdem habe ich% o7 um r multipliziert, um so etwas wie base
zu erhalten.
(%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
Ich möchte den Ausdruck in der Basis in% o6 ersetzen. Das heißt, d/dr (rho * Vb * r) im vorletzten Ausdruck auf Null zu setzen. – Rhinocerotidae
Sogar subst (a, b, c) funktioniert nicht. – Rhinocerotidae
Eigentlich kann "subst" zwei Argumente haben, wenn das erste eine Gleichung ist, z. 'subst (foo = bar, myexpr)'. Es stellt sich heraus, dass der von OP gegebene Ausdruck die linke Seite von "base" nicht als Teilausdruck enthält. –