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

  1. "File ODE_APPR.MTH, copyright (c) 1990-2000 by Texas Instruments Incorporated"
  2.  
  3. TAYLOR_ODE1(r,x,y,x0,y0,n,v_):=ELEMENT(ITERATE([v_ SUB 1+1,DIF(v_ SUB 2,x)+r*D~
  4. IF(v_ SUB 2,y),v_ SUB 3+(x-x0)^v_ SUB 1*LIM(v_ SUB 2,[x,y],[x0,y0])/v_ SUB 1!]~
  5. ,v_,[1,r,y0],n),3)
  6.  
  7. TAY_ODE1(r,x,y,x0,y0,n,v_):=TAYLOR_ODE1(r,x,y,x0,y0,n,v_)
  8.  
  9. PICARD(r,p,x,y,x0,y0):=y0+INT(LIM(r,y,p),x,x0,x)
  10.  
  11. TAYLOR_ODES(r,x,y,x0,y0,n):=ELEMENT(ITERATE([v_ SUB 1+1,DIF(v_ SUB 2,x)+r . GR~
  12. AD(v_ SUB 2,y),v_ SUB 3+(x-x0)^v_ SUB 1*LIM(LIM(v_ SUB 2,y,y0),x,x0)/v_ SUB 1!~
  13. ],v_,[1,r,y0],n),3)
  14.  
  15. TAY_ODES(r,x,y,x0,y0,n):=TAYLOR_ODES(r,x,y,x0,y0,n)
  16.  
  17. "Following definition of TAYLOR_ODE2 contributed by Dr. Wolfram Koepf:"
  18.  
  19. TAYLOR_ODE2_AUX(x,y,v,x0,y0,v0,n,aux):=y0+v0*(x-x0)+SUM(LIM(aux SUB (k_-1),[v,~
  20. y,x],[v0,y0,x0])/k_!*(x-x0)^k_,k_,2,n)
  21.  
  22. TAYLOR_ODE2(r,x,y,v,x0,y0,v0,n):=TAYLOR_ODE2_AUX(x,y,v,x0,y0,v0,n,ITERATES(DIF~
  23. (g_,v)*r+DIF(g_,y)*v+DIF(g_,x),g_,r,n-2))
  24.  
  25. EULER_ODE(r,x,y,x0,y0,h,n):=ITERATES(v_+h*[1,LIM(r,[x,y],v_)],v_,[x0,y0],n)
  26.  
  27. EXTRACT_2_ELEMENTS(v,p,q):=[v SUB p,v SUB q]
  28.  
  29. EXTRACT_2_COLUMNS(a,c1,c2):=EXTRACT_2_ELEMENTS(a`,c1,c2)`
  30.  
  31. RK_AUX3(p,v,u_,c1,c2,c3):=(c1+LIM(p,v,u_+c3)+2*(c2+c3))/6
  32.  
  33. RK_AUX2(p,v,u_,c1,c2):=RK_AUX3(p,v,u_,c1,c2,LIM(p,v,u_+c2/2))
  34.  
  35. RK_AUX1(p,v,u_,c1):=RK_AUX2(p,v,u_,c1,LIM(p,v,u_+c1/2))
  36.  
  37. RK_AUX0(p,v,v0,n):=ITERATES(u_+RK_AUX1(p,v,u_,LIM(p,v,u_)),u_,v0,n)
  38.  
  39. RK(r,v,v0,h,n):=RK_AUX0(h*APPEND([1],r),v,v0,n)
  40.  
  41. "Adri van der Meer and David W. Cantrell contributed to DIRECTION_FIELD:"
  42.  
  43. LIM2(u,x,y,x0,y0):=LIM(u,[y,x],[y0+@1*(x-x0),x0])
  44.  
  45. SEG(rc,x,y,δx,δy):=IF(δy<ABS(rc)*δx,[[x-δy/rc,y-δy],[x+δy/rc,y+δy]],[[x-δx,y-~
  46. rc*δx],[x+δx,y+rc*δx]],?)
  47.  
  48. DIRECTION_FIELD(r,x,x0,xm,m,y,y0,yn,n):=VECTOR(VECTOR(SEG(LIM2(r,x,y,x0+j*(xm~
  49. -x0)/m,y0+k*(yn-y0)/n),x0+j*(xm-x0)/m,y0+k*(yn-y0)/n,(xm-x0)/(4*m),(yn-y0)/(4~
  50. *n)),j,0,m),k,0,n)
  51.