|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/*
* This file:
* https://anggtwu.net/bad-foundations/edrx-myintegrates.mac.html
* https://anggtwu.net/bad-foundations/edrx-myintegrates.mac
* (find-angg "bad-foundations/edrx-myintegrates.mac")
* (find-baf "edrx-myintegrates.mac")
* See: http://anggtwu.net/bad-foundations.html#change-of-variables
* Author: Eduardo Ochs <eduardoochs@gmail.com>
* License: Public Domain
* Date: 2026mar03
*
* This file defines a "class" - i.e., a "structure with methods" -
* that can be used to draw changes of variables using underbraces.
* For example:
*
* (%i3) mi : new(myintegrates(cos(u), x^2, 2*x, x, u, sin(u)))$
* (%i4) mi@@L_u() = mi@@R();
* ⌠ ⌠
* ⎮ 2 ⎮
* (%o4) ⎮ cos(x ) 2 x dx = ⎮ cos(u) du
* ⎮ :: ::: ⎮
* ⌡ u du ⌡
* ──
* dx
* ::::::
* du
*
* See: (find-baf "edrxbox-examples.lisp" "myintegrate")
* (find-baf "edrxbox-examples.lisp" "_d")
* (find-baf "edrx-methods.lisp")
*
* This file is a quick hack full of bad notational conventions -
* for example, in some places a "u" in a name means "using u
* instead of g(x)", and in other places it means "with an
* underbrace"... I need to rewrite this!
*
* «.myintegrates» (to "myintegrates")
* «.myintegrates-tests» (to "myintegrates-tests")
* «.latex» (to "latex")
*/
texput(sd0, sd0_tex);
sd0_tex(o) := format("\\setdepthto{0pt}{~a}", tex1(args(o)[1]));
/* «myintegrates» (to ".myintegrates")
*/
defstruct(myintegrates(fu,gx,gpx,x_,u_,Fu));
myintegrates__du (myi) := _d(myi@u_)$
myintegrates__dx (myi) := _d(myi@x_)$
myintegrates__dudx (myi) := _diff(myi@u_, myi@x_, 1)$
myintegrates__dudx (myi) := myi@@du() /. myi@@dx()$
myintegrates__u_gx (myi) := underbrace(myi@u_,myi@gx);
myintegrates__gx_u (myi) := underbrace(myi@gx,myi@u_);
myintegrates__fgx (myi) := subst([myi@u_=myi@gx], myi@fu)$
myintegrates__fgx_u (myi) := subst([myi@u_=myi@@gx_u()], myi@fu)$
myintegrates__fu_gx (myi) := subst([myi@u_=myi@@u_gx()], myi@fu)$
myintegrates__gpx_u (myi) := underbrace(myi@gpx, myi@@dudx());
myintegrates__gpx_du(myi) := underbrace(myi@@gpx_u() *. myi@@dx(), myi@@du());
myintegrates__L (myi) := myintegrate(myi@@fgx() *. myi@gpx, myi@x_);
myintegrates__L_u (myi) := myintegrate(myi@@fgx_u() *. myi@@gpx_du());
myintegrates__du_x (myi) := underbrace(myi@@du(), myi@@dudx() *. myi@@dx());
myintegrates__du_gpx(myi) := underbrace(myi@@du_x(), myi@gpx *. myi@@dx());
myintegrates__R (myi) := myintegrate(myi@fu, myi@u_);
myintegrates__R_u (myi) := myintegrate(myi@@fu_gx() *. myi@@du_gpx());
myintegrates__LR (myi) := myi@@L () = myi@@R ();
myintegrates__LR_u (myi) := myi@@L_u() = myi@@R_u();
myintegrates__FGx (myi) := subst([myi@u_=myi@gx], myi@Fu);
myintegrates__LM (myi) := myi@@FGx();
myintegrates__RM (myi) := myi@Fu;
myintegrates__LRI3 (myi) := myi@@L() =. myi@@LM() =. myi@@RM() =. myi@@R();
myintegrates__LR6 (myi) := align_eqs(myi@@LR(), myi@@LRI3());
myintegrates__LR8 (myi) := align_eqs(myi@@LR(), myi@@LR_u(), myi@@LRI3());
myintegrates__xa (myi) := myi@x_ = a;
myintegrates__xb (myi) := myi@x_ = b;
myintegrates__ga (myi) := subst([myi@x_=a], myi@gx)$
myintegrates__gb (myi) := subst([myi@x_=b], myi@gx)$
myintegrates__Fga (myi) := subst([myi@u_=myi@@ga()], myi@Fu)$
myintegrates__Fgb (myi) := subst([myi@u_=myi@@gb()], myi@Fu)$
myintegrates__MMD (myi) := myi@@Fgb() -. myi@@Fga();
myintegrates__uga (myi) := myi@u_ = myi@@ga()$
myintegrates__ugb (myi) := myi@u_ = myi@@gb()$
myintegrates__LMD (myi) := _At2(myi@@LM(), myi@x_, a, b);
myintegrates__RMD (myi) := _At2(myi@@RM(), myi@u_, myi@@ga(), myi@@gb());
myintegrates__LD (myi) := myintegrate(myi@@fgx() *. myi@gpx, myi@x_, myi@@xa(), myi@@xb());
myintegrates__RD (myi) := myintegrate(myi@fu, myi@u_, myi@@uga(), myi@@ugb());
myintegrates__LRD4 (myi) := myi@@LD() =. myi@@LMD() =. myi@@MMD() =. myi@@RMD() =. myi@@RD();
myintegrates__LR12 (myi) := align_eqs(myi@@LR(), myi@@LR_u(), myi@@LRI3(), myi@@LRD4());
/*
** «myintegrates-tests» (to ".myintegrates-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("bad-foundations.mac");
load("edrx-myintegrates.mac");
mm : new(myintegrates(cos(u), x^2, 2*x, x, u, F(u)));
mm : new(myintegrates(cos(u), x^2, 2*x, x, u, sin(u)));
mm@gx;
mm@x_;
mm@u_;
mm@@dudx();
mm@@fgx();
mm@@u_gx();
mm@@gx_u();
mm@@fgx_u();
mm@@fu_gx();
mm@@gpx_u();
mm@@gpx_du();
mm@@L();
mm@@L_u();
mm@@R();
mm@@du_x();
mm@@du_gpx();
mm@@R_u();
mm@@LR();
mm@@LR_u();
mm@@LR4();
mm@@LR6();
o8 : mm@@LR8();
o8 : makebare(mm@@LR8());
mm@@xa();
mm@@xb();
mm@@uga();
mm@@ugb();
mm@@Fga();
mm@@Fgb();
mm@@LMD();
mm@@RMD();
mm@@LRD4();
mm@@LR12();
o12 : mm@@LR12();
o12 : makebare(mm@@LR12());
mma : new(myintegrates(fp(u), g(x), gp(x), x, u, f(u)));
o12a : mma@@LR12();
o12a : makebare(mma@@LR12());
sa("LR8", o8);
sa("LR12", o12);
sa("LR12 abstract", o12a);
sa_bigstr;
sa_bigstr_writeto("/tmp/o");
*/
/*
** «latex» (to ".latex")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("bad-foundations.mac");
load("edrx-myintegrates.mac");
sa_generated_by("(find-baf \"edrx-myintegrates.mac\" \"latex\")");
mms : new(myintegrates(cos(u), x^2, 2*x, x, u, sin(u)));
mma : new(myintegrates(fp(u), g(x), gp(x), x, u, f(u)));
o1 : makebare(mms@@LR12());
o2 : makebare(mma@@LR12());
dpart(o2, 2,1,1,1,1);
dpart(o2, 2,3,1,1,1);
mms@@LR();
mms@@LR6();
o3 : copy(o2);
o3 : substpart(sd0(piece), o3, 2,1,1,1,1);
o3 : substpart(sd0(piece), o3, 2,3,1,1,1);
sa("MV sin(x^2)", o1);
sa("MV abstract", o3);
sa_bigstr;
sa_bigstr_writeto("/tmp/o");
*/
/*
* Local Variables:
* coding: utf-8-unix
* End:
*/