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

  1. "File APPROX.MTH, copyright (c) 1990-2000 by Texas Instruments Incorporated"
  2.  
  3. PADE_CF(a,m,n):=VECTOR(VECTOR(a SUB (m-n+i+j),j,1,n+1),i,1,n)
  4.  
  5. PADE_DV(a,m,n):=ELEMENT(ROW_REDUCE(PADE_CF(a,m,n))`,n+1)
  6.  
  7. PADE_NV(a,u,m,n):=VECTOR(a SUB (k+1)-SUM(u SUB (n+1-i)*a SUB (k+1-i),i,1,k),k,~
  8. 1,MIN(m,n))
  9.  
  10. PADE_AUX3(a,v,u,x,c,m,n):=(a SUB 1+SUM(v SUB k*(x-c)^k,k,1,m))/(1-SUM(u SUB (n~
  11. +1-k)*(x-c)^k,k,1,n))
  12.  
  13. PADE_AUX2(a,u,x,c,m,n):=PADE_AUX3(a,PADE_NV(a,u,m,n),u,x,c,m,n)
  14.  
  15. PADE_AUX1(a,x,c,m,n):=PADE_AUX2(a,PADE_DV(a,m,n),x,c,m,n)
  16.  
  17. PADE(y,x,x0,n,d):=PADE_AUX1(VECTOR(LIM(DIF(y,x,m_),x,x0)/m_!,m_,0,n+d+1),x,x0,~
  18. n,d)
  19.  
  20. RECURRENCE(u,v,v0,m):=REVERSE(ITERATE(APPEND([u],v),v,v0,m-DIM(v0)))
  21.  
  22. CHEBYSHEV_T_LIST(n,x):=RECURRENCE('(2*x*v_ SUB 1-v_ SUB 2),v_,[x,1],n)
  23.  
  24. CHEBYSHEV_T_SERIES_AUX(i,n):=PROG(IF(i=0,RETURN(VECTOR(COMB(r,r/2)/2^r,r,0,n,2~
  25. ))),VECTOR(COMB(r,(r-i)/2)/2^(r-1),r,i,n,2))
  26.  
  27. CHEBYSHEV_T_SERIES(f,x,a,b,k,n,T_list,T_Coefs,Taylor_Coeff_Even,Taylor_Coeff_O~
  28. dd,s_,t_,size,list,size_T_e,size_T_o):=PROG(IF(k>n,RETURN("k must be <= n")),f~
  29. :=SUBST(f,x,a+(b-a)/2*(x+1)),T_list:=CHEBYSHEV_T_LIST(k+1,x),T_Coefs:=VECTOR(C~
  30. HEBYSHEV_T_SERIES_AUX(s,n),s,0,n),Taylor_Coeff_Even:=VECTOR(SUBST(DIF(f,x,r_),~
  31. x,0)/r_!,r_,0,n,2),Taylor_Coeff_Odd:=VECTOR(SUBST(DIF(f,x,r_),x,0)/r_!,r_,1,n,~
  32. 2),s_:=1,t_:=1,c:=0,list:=[],size_T_e:=DIM(Taylor_Coeff_Even),size_T_o:=DIM(Ta~
  33. ylor_Coeff_Odd),LOOP(IF(c>k,exit),list:=APPEND(list,[T_Coefs SUB t_ . Taylor_C~
  34. oeff_Even SUB [s_,...,size_T_e]]),c:+1,IF(c>k,exit),list:=APPEND(list,[T_Coefs~
  35.  SUB (t_+1) . Taylor_Coeff_Odd SUB [s_,...,size_T_o]]),t_:+2,s_:+1,c:+1),EXPAN~
  36. D(SUBST(list . T_list,x,-1+2*(x-a)/(b-a)),Rational))
  37.