2016-12-18 1 views
0

maxima에 대체를 통해 미분 방정식을 단순화하려고합니다. 그러나 대체가 작동하지 않는 것 같습니다.Maxima CAS - 대체

depends (\rho,[t, r, \theta, z]); depends (V, [t, r, \theta, z]); 
f_contin : diff (\rho, t) + diff (\rho*r*V[r], r)*(1/r) = 0; 
base : diff (V[b]*r*\rho, r) = 0; 
V_sub : V[r] = V[b] + \epsilon*V[r]; 
subst (V_sub, f_contin); 
subst (base, %o6); 

마지막 대체 작동하지 않았다 :

여기 내 코드입니다. 여기서 내가 뭘 잘못하고 있니?

는 명료 함을 위해 I 여기서 스크린을 추가 enter image description here

답변

2

문제는 ac의 정확한 표현식 인 경우 subst(a=b, c) (또는 동등 subst(b, a, c)는)만을 대체 할 수 있다는 것입니다.

ratsubst (보기) a이 정확한 하위 표현식이 아니지만 작동하지 않는 경우도 있습니다.

하지만 다른 방정식 중 하나의 방정식을 빼는 것만으로도 원하는 결과를 얻을 수 있다고 생각합니다. (a=b) - (c=d)a - c = b - d입니다. diff 연산자를 적용하기 위해 % i7에서 다른 단계를 거쳤습니다. 또한 % 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 
-1

함수 SUBST을 (를 A, B, C)은 C에 대입 B 용. 3 개의 인수를 사용합니다. 첫 번째 subst는 다음과 같이 해석됩니다. subst (V[b] + \epsilon*V[r],V[r], f_contin);

두 번째 subst는 아마도 대체되지 않으므로 subst (0,diff (V[b]*r*\rho, r),%)으로 해석됩니다. 무엇을 대체하고 싶은가요?

+0

저는 base에서 주어진 표현식을 % o6으로 대체하고 싶습니다. 그것은 두 번째 두 번째 표현에서 d/dr (rho * Vb * r)을 0으로 설정하는 것입니다. – Rhinocerotidae

+0

심지어 subst (a, b, c)가 작동하지 않습니다. – Rhinocerotidae

+0

사실 'subst'는 첫 번째가 방정식 일 때 2 개의 인수를 가질 수 있습니다. 'subst (foo = bar, myexpr)'. 문제가 OP에서 주어진 표현식은 하위 표현식으로'base'의 왼쪽을 포함하지 않는다는 것이 밝혀졌습니다. –