Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/* * This file: * http://anggtwu.net/MAXIMA/2025-1-taylor.mac.html * http://anggtwu.net/MAXIMA/2025-1-taylor.mac * (find-angg "MAXIMA/2025-1-taylor.mac") * Author: Eduardo Ochs <eduardoochs@gmail.com> * * (defun e () (interactive) (find-angg "MAXIMA/2025-1-taylor.mac")) * (find-angg "MAXIMA/mkmatrix1.mac") * (find-angg "MAXIMA/2025-methods.mac") * (find-es "maxima" "2024.1-taylor-1") * * «.f_x» (to "f_x") * «.polys» (to "polys") * «.cis» (to "cis") * «.MatrixL» (to "MatrixL") * «.MatrixL-tests» (to "MatrixL-tests") * «.Taylor2» (to "Taylor2") * «.Taylor2-tests» (to "Taylor2-tests") */ load("~/MAXIMA/mkmatrix1.mac"); load("~/MAXIMA/2025-methods.mac"); defstruct(Taylor(f,var,x0,maxk)); Taylor__aa__(T,k) := diff(T@f, T@var, k); Taylor__bb__(T,k) := at(diff(T@f, T@var, k), [T@var=T@x0]); Taylor__cc__(T,k) := at(diff(T@f, T@var, k), [T@var=T@x0]) / k!; Taylor__dd__(T,k,x) := at(diff(T@f, T@var, k), [T@var=T@x0]) / k! * (x-T@x0)^k; Taylor__aa (T) := mkvmatrix([k,0,T@maxk], T@@aa__(k)); Taylor__bb (T) := mkvmatrix([k,0,T@maxk], T@@bb__(k)); Taylor__cc (T) := mkvmatrix([k,0,T@maxk], T@@cc__(k)); Taylor__dd (T,xx) := mkvmatrix([k,0,T@maxk], T@@dd__(k,xx)); Taylor__abcd(T,xx) := [T@@aa(), T@@bb(), T@@cc(), T@@dd(xx)]; Taylor__s (T,xx) := sum(T@@dd__(k,xx), k,0,T@maxk); /* «f_x» (to ".f_x") * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load("2025-1-taylor.mac")$ gradef(f (x), f_x (x))$ gradef(f_x (x), f_xx (x))$ gradef(f_xx (x), f_xxx (x))$ gradef(f_xxx (x), f_xxxx (x))$ gradef(f_xxxx(x), f_xxxxx(x))$ myt : Taylor(f(x),x,0,4); myt@@abcd(x); myt@@s(x); myt@@s(a); myt@@s(1/10); */ /* «polys» (to ".polys") * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load("2025-1-taylor.mac"); f3(x) := a + b*x + c*x^2 + d*x^3; myt : Taylor(f3(x),x,0,4)$ myt@@abcd(x); myt@@s(x); f4(x) := a + b*x + c*x^2 + d*x^3 + e*x^4; myt : Taylor(f4(x),x,0,4)$ myt@@abcd(x); myt@@s(x); f5(x) := a + b*x + c*x^2 + d*x^3 + e*x^4 + f*x^5; myt : Taylor(f5(x),x,0,4)$ myt@@abcd(x); myt@@s(x); */ /* «cis» (to ".cis") * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) texput("th", "\\theta "); load("2025-1-taylor.mac"); myte : Taylor(exp( th) , th,0,5)$ myte2 : Taylor(exp( 2*th) , th,0,5)$ mytei : Taylor(exp(%i*th) , th,0,5)$ mytc : Taylor(cos(th) , th,0,5)$ myts : Taylor( sin(th), th,0,5)$ mytis : Taylor( %i*sin(th), th,0,5)$ mytcis : Taylor(cos(th)+%i*sin(th), th,0,5)$ myte @@abcd(th); myte2 @@abcd(th); mytei @@abcd(th); mytc @@abcd(th); myts @@abcd(th); mytis @@abcd(th); mytcis@@abcd(th); mytei @@s(th); mytcis@@s(th); */ /* «MatrixL» (to ".MatrixL") */ defstruct(MatrixL(o)); MatrixL__ht (ml) := length(ml@o); MatrixL__maxwd (ml) := apply('max, map('length, ml@o)); MatrixL__padrow(ml,row) := append(row, makelist("", ml@@maxwd()-length(row))); MatrixL__padded(ml) := makelist(ml@@padrow(ml@o[i]), i,1,ml@@ht()); MatrixL__matrix(ml) := apply('matrix, ml@@padded()); mkmatrixL__(N,ex) := buildq([N,ex], makelist(create_list(ev(ex), yn,seq(0,dg), xn,[dg-yn]), dg,0,N)); mkmatrixL_(N,ex) ::= mkmatrixL__(N,ex); mkmatrixL (N,ex) ::= MatrixL(mkmatrixL_(N,ex))@@matrix(); mklistL_(N,ex) := buildq([N,ex], create_list(ev(ex), dg,seq(0,N), yn,seq(0,dg), xn,[dg-yn])); mklistL (N,ex) ::= mklistL_(N,ex); /* (find-es "maxima" "create_list") */ /* «MatrixL-tests» (to ".MatrixL-tests") * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load("2025-1-taylor.mac"); mym : MatrixL([[a], [b,c], [d,e,f,g]]); mym@@padrow([2,3]); mym@@padded(); mym@@matrix(); mkmatrixL__(2,[dg,xn,yn]); mkmatrixL_ (2,[dg,xn,yn]); mkmatrixL (2,[dg,xn,yn]); mklistL_ (2,[dg,xn,yn]); mklistL (2,[dg,xn,yn]); depends(z,[x,y]); derivabbrev : true; mkmatrixL(2,diff(z,x,xn,y,yn)); diff(z,x,2,y,3); myd : makelist(makelist([yn,dg] ,yn,0,dg), dg,0,2); myd : makelist(makelist(diff(z,x,dg-yn,y,yn) ,yn,0,dg), dg,0,2); MatrixL(myd)@@matrix(); */ /* «Taylor2» (to ".Taylor2") */ defstruct(Taylor2(f,x0,y0,maxdg)); Taylor2__aa__(T,xn,yn) := diff(T@f, x,xn, y,yn); Taylor2__bb__(T,xn,yn) := at(diff(T@f, x,xn, y,yn), [x=T@x0, y=T@y0]); Taylor2__cc__(T,xn,yn) := at(diff(T@f, x,xn, y,yn), [x=T@x0, y=T@y0]) / (xn!*yn!); Taylor2__dd__(T,xn,yn,xx,yy) := at(diff(T@f, x,xn, y,yn), [x=T@x0, y=T@y0]) / (xn!*yn!) * (xx-T@x0)^xn * (yy-T@y0)^yn; Taylor2__aa (T) := mkmatrixL(T@maxdg, T@@aa__(xn,yn)); Taylor2__bb (T) := mkmatrixL(T@maxdg, T@@bb__(xn,yn)); Taylor2__cc (T) := mkmatrixL(T@maxdg, T@@cc__(xn,yn)); Taylor2__dd (T,xx,yy) := mkmatrixL(T@maxdg, T@@dd__(xn,yn,xx,yy)); Taylor2__dd_ (T,xx,yy) := mklistL (T@maxdg, T@@dd__(xn,yn,xx,yy)); Taylor2__abcd(T,xx,yy) := [T@@aa(), T@@bb(), T@@cc(), T@@dd(xx,yy)]; Taylor2__s (T,xx,yy) := apply("+", T@@dd_(xx,yy)); /* «Taylor2-tests» (to ".Taylor2-tests") * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load("2025-1-taylor.mac"); depends(z,[x,y]); derivabbrev : true; myt : Taylor2(z ,0,0,2); myt : Taylor2(2+x^2+y^2,0,0,2); myt@@aa(); myt@@abcd(x,y); myt@@s (x,y); */ /* * Local Variables: * coding: utf-8-unix * End: */