File r37/packages/misc/changevr.rlg artifact 8848f8cbda part of check-in ab67b20f90


Sun Jan  3 23:51:07 MET 1999
REDUCE 3.7, 15-Jan-99 ...

1: 1: 
2: 2: 2: 2: 2: 2: 2: 2: 2: 
3: 3: %*********************************************************************;
%         This is a test file    for  the  CHANGEVAR package.         ;
%         Make sure that before you attempt to run it the             ;
%         MATRIX package and CHANGEVAR is loaded.                     ;
%*********************************************************************;
algebraic;


%*********************************************************************;
% ON DISPJACOBIAN;   % To get the Jacobians printed, remove the...    ;
%                      ... percentage sign before the word ON         ;
%*********************************************************************;
%                                                                     ;
%               *** First test problem ***                            ;
%                                                                     ;
% Here are two  Euler type of differential equations,                 ;
%                                                                     ;
%         3             2                                             ;
%      2 x  y'''  +  3 x  y''  -  y  =  0                             ;
%                                                                     ;
%                                                                     ;
%          2                                                          ;
%      5 x  y''  -   x y' + 7 y  =  0                                 ;
%                                                                     ;
%                                                                     ;
% An Euler equation can be converted into a (linear) equation with    ;
% constant coefficients by making change of independent variable:     ;
%                                                                     ;
%                         u                                           ;
%                    x = e                                            ;
%                                                                     ;
% The  resulting equations will be                                    ;
%                                                                     ;
%                                                                     ;
%      2 y'''  -  3 y''  +  y' -  y  =  0                             ;
%                                                                     ;
% and                                                                 ;
%                                                                     ;
%      5  y''  -  6 y' + 7 y  =  0                                    ;
%                                                                     ;
%                                                                     ;
% Where, now (prime) denotes differentiation with respect to the new  ;
% independent variable: u                                             ;
% How this change of variable is done using CHANGEVAR follows.        ;
%                                                                     ;
%*********************************************************************;

operator y;



changevar(y, u, x=e**u, { 2*x**3*df(y(x),x,3)+3*x**2*df(y(x),x,2)-y(x),
                          5*x**2*df(y(x),x,2)-x*df(y(x),x)+7*y(x) } ) ;


{2*df(y(u),u,3) - 3*df(y(u),u,2) + df(y(u),u) - y(u),

 5*df(y(u),u,2) - 6*df(y(u),u) + 7*y(u)}


%*********************************************************************;
%               *** Second test problem ***                           ;
%                                                                     ;
% Now, the problem is to obtain the polar coordinate form of Laplace's;
% equation:                                                           ;
%                                                                     ;
%          2              2                                           ;
%         d  u           d  u                                         ;
%        ------    +    ------    =    0                              ;
%            2              2                                         ;
%         d x            d y                                          ;
%                                                                     ;
% (The differentiations are partial)                                  ;
%                                                                     ;
% For polar coordinates the change of variables are :                 ;
%                                                                     ;
%        x = r cos(theta) ,    y = r sin(theta)                       ;
%                                                                     ;
% As known, the result is :                                           ;
%                                                                     ;
%                                                                     ;
%          2                                     2                    ;
%         d  u         1    d  u         1      d  u                  ;
%        ------   +   ---  ------   +   ---  ----------   =   0       ;
%            2         r    d r           2          2                ;
%         d r                            r    d theta                 ;
%                                                                     ;
% How this change of variable is done using CHANGEVAR follows.        ;
%                                                                     ;
%                              2       2                              ;
% (To get rid of the boring sin  + cos   terms we introduce a LET     ;
%  statement)                                                         ;
%                                                                     ;
%*********************************************************************;

operator u;



let sin theta**2 = 1 - cos theta**2 ;



changevar(u, { r , theta }, { x=r*cos theta, y=r*sin theta },
          df(u(x,y),x,2)+df(u(x,y),y,2) ) ;


                     2
 df(u(r,theta),r,2)*r  + df(u(r,theta),r)*r + df(u(r,theta),theta,2)
---------------------------------------------------------------------
                                  2
                                 r


end;

4: 4: 4: 4: 4: 4: 4: 4: 4: 

Time for test: 20 ms
5: 5: 
Quitting
Sun Jan  3 23:51:08 MET 1999


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]