home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / derive / download / Setup.exe / %MAINDIR% / Math / Ode1.mth < prev    next >
Encoding:
Text File  |  2002-05-15  |  5.0 KB  |  145 lines

  1. "File ODE1.MTH, copyright (c) 1990-2000 by Texas Instruments Incorporated"
  2.  
  3. LINEAR1(p,q,x,y,x0,y0):=y=(y0+INT(q*#e^INT(p,x,x0,x),x,x0,x))/#e^INT(p,x,x0,x)
  4.  
  5. LINEAR1_GEN(p,q,x,y,c):=y=(c+INT(q*#e^INT(p,x),x))/#e^INT(p,x)
  6.  
  7. SEPARABLE(p,q,x,y,x0,y0):=INT(1/q,y,y0,y)=INT(p,x,x0,x)
  8.  
  9. SEPARABLE_GEN(p,q,x,y,c):=INT(1/q,y)=INT(p,x)+c
  10.  
  11. HOMOGENEOUS(r,x,y,x0,y0):=IF(DIF(LIM(r,y,x*y),x),LIM(SEPARABLE(1/x,LIM(r,x,1)-~
  12. y,x,y,x0,y0/x0),y,y/x),"inapplicable","inapplicable")
  13.  
  14. HOMOGENEOUS_GEN(r,x,y,c):=IF(DIF(LIM(r,y,x*y),x),LIM(SEPARABLE_GEN(1/x,LIM(r,x~
  15. ,1)-y,x,y,c),y,y/x),"inapplicable","inapplicable")
  16.  
  17. EXACT(p,q,x,y,x0,y0):=IF(DIF(q,x)=DIF(p,y),INT(LIM(q,x,x0),y,y0,y)+INT(p,x,x0,~
  18. x)=0,"inapplicable","inapplicable")
  19.  
  20. EXACT_GEN_AUX(s,q,y):=s+INT(q-DIF(s,y),y)
  21.  
  22. EXACT_GEN(p,q,x,y,c):=IF(DIF(q,x)=DIF(p,y),EXACT_GEN_AUX(INT(p,x),q,y)=c,~
  23. "inapplicable","inapplicable")
  24.  
  25. BERNOULLI_ODE(p,q,k,x,y,x0,y0):=LINEAR1((1-k)*p,(1-k)*q,x,y^(1-k),x0,y0^(1-k))
  26.  
  27. BERNOULLI_ODE_GEN(p,q,k,x,y,c):=LINEAR1_GEN((1-k)*p,(1-k)*q,x,y^(1-k),c)
  28.  
  29. INTF_AUX(mu,p,q,x,y,x0,y0):=INT(LIM(mu*q,x,x0),y,y0,y)+INT(mu*p,x,x0,x)=0
  30.  
  31. INTF_HLP(p,q,x,y,x0,y0):=~
  32.  IF(DIF((DIF(p,y)-DIF(q,x))/q,y),~
  33.     INTF_AUX(#e^INT((DIF(p,y)-DIF(q,x))/q,x),p,q,x,y,x0,y0),~
  34.     "inapplicable",~
  35.     "inapplicable")
  36.  
  37. INTEGRATING_FACTOR(p,q,x,y,x0,y0):=~
  38.  IF(DIF((DIF(q,x)-DIF(p,y))/p,x),~
  39.     INTF_AUX(#e^INT((DIF(q,x)-DIF(p,y))/p,y),p,q,x,y,x0,y0),~
  40.     INTF_HLP(p,q,x,y,x0,y0),~
  41.     INTF_HLP(p,q,x,y,x0,y0))
  42.  
  43. INTF_GEN_AUX(mu,p,q,x,y):=EXACT_GEN_AUX(INT(mu*p,x),mu*q,y)
  44.  
  45. INTF_GEN_HLP(p,q,x,y,c):=~
  46.  IF(DIF((DIF(p,y)-DIF(q,x))/q,y),~
  47.     INTF_GEN_AUX(#e^INT((DIF(p,y)-DIF(q,x))/q,x),p,q,x,y)=c,~
  48.     "inapplicable",~
  49.     "inapplicable")
  50.  
  51. INTEGRATING_FACTOR_GEN(p,q,x,y,c):=~
  52.  IF(DIF((DIF(q,x)-DIF(p,y))/p,x),~
  53.     INTF_GEN_AUX(#e^INT((DIF(q,x)-DIF(p,y))/p,y),p,q,x,y)=c,~
  54.     INTF_GEN_HLP(p,q,x,y,c),~
  55.     INTF_GEN_HLP(p,q,x,y,c))
  56.  
  57. FUN_LIN_CCF(r,p,q,k,x,y,x0,y0):=LIM(SEPARABLE(1,p+q*LIM(r,y,(y-p*x-k)/q),x,y,x~
  58. 0,p*x0+q*y0+k),y,p*x+q*y+k)
  59.  
  60. FUN_LIN_CCF_GEN(r,p,q,k,x,y,c):=LIM(SEPARABLE_GEN(1,p+q*LIM(r,y,(y-p*x-k)/q),x~
  61. ,y,c),y,p*x+q*y+k)
  62.  
  63. LIN_FRAC_AUX(r,p,q,x,y,x0,y0):=LIM(HOMOGENEOUS(LIM(r,[y,x],[y+q,x+p]),x,y,x0-p~
  64. ,y0-q),[y,x],[y-q,x-p])
  65.  
  66. LIN_FRAC(r,a,b,d,p,q,k,x,y,x0,y0):=LIN_FRAC_AUX(r,(b*k-d*q)/(a*q-b*p),(d*p-a*k~
  67. )/(a*q-b*p),x,y,x0,y0)
  68.  
  69. LIN_FRAC_AUX_GEN(r,p,q,x,y,c):=LIM(HOMOGENEOUS_GEN(LIM(r,[y,x],[y+q,x+p]),x,y,~
  70. c),[y,x],[y-q,x-p])
  71.  
  72. LIN_FRAC_GEN(r,a,b,d,p,q,k,x,y,c):=LIN_FRAC_AUX_GEN(r,(b*k-d*q)/(a*q-b*p),(d*p~
  73. -a*k)/(a*q-b*p),x,y,c)
  74.  
  75. GEN_HOM_AUX(k,r,x,y,x0,y0):=IF(DIF(k,x)=0 AND DIF(k,y)=0,LIM(SEPARABLE(1/x,y*(~
  76. k+LIM(r*x/y,y,y/x^k)),x,y,x0,y0*x0^k),y,y*x^k),"inapplicable","inapplicable")
  77.  
  78. GEN_HOM(r,x,y,x0,y0):=GEN_HOM_AUX(x*DIF(x*r/y,x)/(y*DIF(x*r/y,y)),r,x,y,x0,y0)
  79.  
  80. GEN_HOM_AUX_GEN(k,r,x,y,c):=IF(DIF(k,x)=0 AND DIF(k,y)=0,LIM(SEPARABLE_GEN(1/x~
  81. ,y*(k+LIM(r*x/y,y,y/x^k)),x,y,c),y,y*x^k),"inapplicable","inapplicable")
  82.  
  83. GEN_HOM_GEN(r,x,y,c):=GEN_HOM_AUX_GEN(x*DIF(x*r/y,x)/(y*DIF(x*r/y,y)),r,x,y,c)
  84.  
  85. ALMOST_LIN(r,b,p,q,x,y,x0,y0):=IF(DIF(DIF(b,y)/r,y),LIM(LINEAR1(p*DIF(b,y)/r,q~
  86. *DIF(b,y)/r,x,y,x0,LIM(b,y,y0)),y,b),"inapplicable","inapplicable")
  87.  
  88. ALMOST_LIN_GEN(r,b,p,q,x,y,c):=IF(DIF(DIF(b,y)/r,y),LIM(LINEAR1_GEN(p*DIF(b,y)~
  89. /r,q*DIF(b,y)/r,x,y,c),y,b),"inapplicable","inapplicable")
  90.  
  91. TESTM2(r,s,x,y):=IF(s SUB 1*r SUB 1+s SUB 2*r SUB 2-r SUB 3=0,x^s SUB 1*y^s SU~
  92. B 2,"inapplicable","inapplicable")
  93.  
  94. TESTM1(r,x,y):=TESTM2(r,ELEMENT(ROW_REDUCE([LIM(r,[y,x],[5,2]),LIM(r,[y,x],[3,~
  95. 7])])`,3),x,y)
  96.  
  97. MONOMIAL_TEST(p,q,x,y):=TESTM1([y*q,-x*p,x*y*(DIF(p,y)-DIF(q,x))],x,y)
  98.  
  99. CLAIRAUT(p,q,x,y,v,c):=[LIM(p-q,v,c)=0,x*LIM(DIF(LIM(p,y,x*v-y),y),y,x*v-y)-~
  100. DIF(q,v)=0]
  101.  
  102. "The following SEPARATE functions contributed by David W. Cantrell"
  103.  
  104. INDEP_OF(f,x):=IF(DIMENSION(SELECT(i_=x,i_,VARIABLES(f))),true,false)
  105.  
  106. SEPARATE_AUX(f,x,y):=~
  107.  ITERATE(IF(INDEP_OF(f SUB n,y),~
  108.         [p*f SUB n,q,n+1],~
  109.         IF(INDEP_OF(f SUB n,x),~
  110.            [p,q*f SUB n,n+1],~
  111.            [0,0,n+1])),~
  112.      [p,q,n],~
  113.      [1,1,1],~
  114.      DIMENSION(f))
  115.  
  116. SEPARATE(u,x,y):=SEPARATE_AUX(VECTOR(v_ SUB 1^v_ SUB 2,v_,FACTORS(u)),x,y)
  117.  
  118. SEP_GEN_HELP(s,x,y,c):=~
  119.  IF(s SUB 2,~
  120.     "inapplicable",~
  121.     SEPARABLE_GEN(s SUB 1,s SUB 2,x,y,c),~
  122.     SEPARABLE_GEN(s SUB 1,s SUB 2,x,y,c))
  123.  
  124. SEP_GEN(p,q,x,y,c):=SEP_GEN_HELP(SEPARATE(-p/q,x,y),x,y,c)
  125.  
  126. DSOLVE1_GEN(p,q,x,y,c,a_):=~
  127.  IF("inapplicable"=a_:=INTEGRATING_FACTOR_GEN(p,q,x,y,c),~
  128.     IF("inapplicable"=a_:=HOMOGENEOUS_GEN(-p/q,x,y,c),~
  129.        IF("inapplicable"=a_:=SEP_GEN(p,q,x,y,c),~
  130.       GEN_HOM_GEN(-p/q,x,y,c),a_,a_),a_,a_),a_,a_)
  131.  
  132. SEP_HELP(s,x,y,x0,y0):=~
  133.   IF(s SUB 2,~
  134.      "inapplicable",~
  135.      SEPARABLE(s SUB 1,s SUB 2,x,y,x0,y0),~
  136.      SEPARABLE(s SUB 1,s SUB 2,x,y,x0,y0))
  137.  
  138. SEP(p,q,x,y,x0,y0):=SEP_HELP(SEPARATE(-p/q,x,y),x,y,x0,y0)
  139.  
  140. DSOLVE1(p,q,x,y,x0,y0,a_):=~
  141.  IF("inapplicable"=a_:=INTEGRATING_FACTOR(p,q,x,y,x0,y0),~
  142.     IF("inapplicable"=a_:=HOMOGENEOUS(-p/q,x,y,x0,y0),~
  143.        IF("inapplicable"=a_:=SEP(p,q,x,y,x0,y0),~
  144.       GEN_HOM(-p/q,x,y,x0,y0),a_,a_),a_,a_),a_,a_)
  145.