Last active
November 30, 2023 17:05
-
-
Save raydsameshima/75580ba9ff51a154153cd24af5c882d7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(%i1) load("Schwinger.mac"); | |
The list of functions: | |
schwinger_matrix(list_of_loop_momenta, list_of_denominators) | |
symanzik_u(ls,ds) | |
symanzik_f(ls,ds) | |
lee_pomeransky_g(ls,ds) | |
homogeneous_lee_pomeransky_g(ls,ds) | |
As helper functions, the following functions are used: | |
det_but_outer_egdes(matrix) | |
lee_pomeransky_g_from_matrix(schwinger_matrix) | |
schwinger_parameters(ds) | |
schwinger_exponents(ds) | |
at_zero(ls) | |
c_of_schwinger_matrix(ls,ds) | |
b_of_schwinger_matrix(ls,ds) | |
a_of_schwinger_matrix_(ls,ds) | |
a_of_schwinger_matrix(ls,ds) | |
(%o0) Schwinger.mac | |
(%i1) ls: [l1,l2]; ds:[l1^2+m^2, l2^2+m^2, (l1+l2+p)^2+m^2, (l1+p)^2+m^2, (l1+l2)^2+m^2]; | |
(%o1) [l1, l2] | |
2 2 2 2 2 2 2 2 | |
(%o2) [m + l1 , m + l2 , (p + l2 + l1) + m , (p + l1) + m , | |
2 2 | |
m + (l2 + l1) ] | |
(%i3) lee_pomeransky_g(ls,ds), expand; | |
2 2 2 2 2 2 2 2 2 | |
(%o3) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 2 | |
+ m x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 + m x3 x4 | |
2 2 2 2 2 2 2 | |
+ m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 + 2 m x1 x3 x4 + x3 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 + m x2 x3 + m x1 x3 | |
2 2 2 2 2 2 | |
+ m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 + m x1 x3 + x1 x3 | |
2 2 2 2 | |
+ m x1 x2 + m x1 x2 + x1 x2 | |
(%i4) define(g(x1,x2,x3,x4,x5), %); | |
2 2 2 2 2 2 2 2 | |
(%o4) g(x1, x2, x3, x4, x5) := m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 | |
2 2 2 2 2 | |
+ p x3 x4 x5 + 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 | |
2 2 2 2 | |
+ 2 m x1 x4 x5 + x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 | |
2 2 2 2 2 2 | |
+ 2 m x1 x3 x5 + m x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 | |
2 2 2 2 2 2 2 2 | |
+ m x3 x4 + m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 | |
2 2 2 2 2 | |
+ 2 m x1 x3 x4 + x3 x4 + m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x3 + m x1 x3 + m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 | |
2 2 2 2 2 2 | |
+ m x1 x3 + x1 x3 + m x1 x2 + m x1 x2 + x1 x2 | |
(%i5) g2(x1,x2,x3,x4,x5): expand(lee_pomeransky_g(ls, [(-p-l1)^2+m^2, (l1+l2)^2+m^2, l2^2+m^2, l1^2+m^2, (p+l2)^2+m^2])); | |
assignment: cannot assign to g2(x1, x2, x3, x4, x5) | |
-- an error. To debug this try: debugmode(true); | |
(%i6) g2(x1,x2,x3,x4,x5):= expand(lee_pomeransky_g(ls, [(-p-l1)^2+m^2, (l1+l2)^2+m^2, l2^2+m^2, l1^2+m^2, (p+l2)^2+m^2])); | |
(%o6) g2(x1, x2, x3, x4, x5) := expand(lee_pomeransky_g(ls, | |
2 2 2 2 2 2 2 2 2 2 | |
[((- p) - l1) + m , (l1 + l2) + m , l2 + m , l1 + m , (p + l2) + m ])) | |
(%i7) g2(x1,x2,x3,x4,x5); | |
2 2 2 2 2 2 2 2 2 | |
(%o7) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 | |
+ m x2 x5 + 4 p x1 x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 | |
2 2 2 2 2 2 2 2 | |
+ m x3 x4 + m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 | |
2 2 2 2 2 | |
+ 2 m x1 x3 x4 + x3 x4 + m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x3 + m x1 x3 + m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 | |
2 2 2 2 2 2 | |
+ m x1 x3 + x1 x3 + m x1 x2 + m x1 x2 + x1 x2 | |
(%i8) (g(x1,x2,x3,x4,x5); | |
incorrect syntax: Missing ) | |
(g(x1,x2,x3,x4,x5); | |
^ | |
(%i8) g(x1,x2,x3,x4,x5); | |
2 2 2 2 2 2 2 2 2 | |
(%o8) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 2 | |
+ m x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 + m x3 x4 | |
2 2 2 2 2 2 2 | |
+ m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 + 2 m x1 x3 x4 + x3 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 + m x2 x3 + m x1 x3 | |
2 2 2 2 2 2 | |
+ m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 + m x1 x3 + x1 x3 | |
2 2 2 2 | |
+ m x1 x2 + m x1 x2 + x1 x2 | |
(%i9) g2(x1,x2,x3,x4,x5); | |
2 2 2 2 2 2 2 2 2 | |
(%o9) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 | |
+ m x2 x5 + 4 p x1 x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 | |
2 2 2 2 2 2 2 2 | |
+ m x3 x4 + m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 | |
2 2 2 2 2 | |
+ 2 m x1 x3 x4 + x3 x4 + m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x3 + m x1 x3 + m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 | |
2 2 2 2 2 2 | |
+ m x1 x3 + x1 x3 + m x1 x2 + m x1 x2 + x1 x2 | |
(%i10) g2(x1,x2,x3,x4,x5) - g(x1,x2,x3,x4,x5); | |
2 | |
(%o10) 4 p x1 x2 x5 | |
(%i11) ls: [l1,l2]; ds1:[l1^2+m^2, l2^2+m^2, (l1+l2+p)^2+m^2, (l1+p)^2+m^2, (l1+l2)^2+m^2]; | |
(%o11) [l1, l2] | |
2 2 2 2 2 2 2 2 | |
(%o12) [m + l1 , m + l2 , (p + l2 + l1) + m , (p + l1) + m , | |
2 2 | |
m + (l2 + l1) ] | |
(%i13) g1: expand(lee_pomeransky_g(ls,ds1)); | |
2 2 2 2 2 2 2 2 2 | |
(%o13) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 2 | |
+ m x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 + m x3 x4 | |
2 2 2 2 2 2 2 | |
+ m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 + 2 m x1 x3 x4 + x3 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 + m x2 x3 + m x1 x3 | |
2 2 2 2 2 2 | |
+ m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 + m x1 x3 + x1 x3 | |
2 2 2 2 | |
+ m x1 x2 + m x1 x2 + x1 x2 | |
(%i14) ds2: [(l1+p)^2+m^2, (l1+l2)^2+m^2, l2^2+m^2, l1^2+m^2, (p+l2)^2+m^2]; | |
2 2 2 2 2 2 2 2 2 2 | |
(%o14) [(p + l1) + m , m + (l2 + l1) , m + l2 , m + l1 , (p + l2) + m ] | |
(%i15) g2: expand(lee_pomeransky_g(ls,ds2)); | |
2 2 2 2 2 2 2 2 2 | |
(%o15) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 | |
+ m x2 x5 + 4 p x1 x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 | |
2 2 2 2 2 2 2 2 | |
+ m x3 x4 + m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 | |
2 2 2 2 2 | |
+ 2 m x1 x3 x4 + x3 x4 + m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x3 + m x1 x3 + m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 | |
2 2 2 2 2 2 | |
+ m x1 x3 + x1 x3 + m x1 x2 + m x1 x2 + x1 x2 | |
(%i16) g1-g2; | |
2 | |
(%o16) - 4 p x1 x2 x5 | |
(%i17) ds2: [(l1-p)^2+m^2, (l1+l2)^2+m^2, l2^2+m^2, l1^2+m^2, (p+l2)^2+m^2]; | |
2 2 2 2 2 2 2 2 2 2 | |
(%o17) [(l1 - p) + m , m + (l2 + l1) , m + l2 , m + l1 , (p + l2) + m ] | |
(%i18) g2: expand(lee_pomeransky_g(ls,ds2)); | |
2 2 2 2 2 2 2 2 2 | |
(%o18) m x4 x5 + m x2 x5 + m x1 x5 + m x4 x5 + p x3 x4 x5 | |
2 2 2 2 2 | |
+ 2 m x3 x4 x5 + p x2 x4 x5 + 3 m x2 x4 x5 + p x1 x4 x5 + 2 m x1 x4 x5 | |
2 2 2 2 | |
+ x4 x5 + p x2 x3 x5 + 2 m x2 x3 x5 + p x1 x3 x5 + 2 m x1 x3 x5 | |
2 2 2 2 2 2 2 | |
+ m x2 x5 + 3 m x1 x2 x5 + x2 x5 + m x1 x5 + x1 x5 + m x3 x4 | |
2 2 2 2 2 2 2 | |
+ m x2 x4 + m x3 x4 + 3 m x2 x3 x4 + p x1 x3 x4 + 2 m x1 x3 x4 + x3 x4 | |
2 2 2 2 2 2 2 2 | |
+ m x2 x4 + p x1 x2 x4 + 2 m x1 x2 x4 + x2 x4 + m x2 x3 + m x1 x3 | |
2 2 2 2 2 2 | |
+ m x2 x3 + p x1 x2 x3 + 3 m x1 x2 x3 + x2 x3 + m x1 x3 + x1 x3 | |
2 2 2 2 | |
+ m x1 x2 + m x1 x2 + x1 x2 | |
(%i19) g1-g2; | |
(%o19) 0 | |
(%i20) ? subst | |
-- Function: subst (<a>, <b>, <c>) | |
Substitutes <a> for <b> in <c>. <b> must be an atom or a complete | |
subexpression of <c>. For example, 'x+y+z' is a complete | |
subexpression of '2*(x+y+z)/w' while 'x+y' is not. When <b> does | |
not have these characteristics, one may sometimes use 'substpart' | |
or 'ratsubst' (see below). Alternatively, if <b> is of the form | |
'e/f' then one could use 'subst (a*f, e, c)' while if <b> is of the | |
form 'e^(1/f)' then one could use 'subst (a^f, e, c)'. The 'subst' | |
command also discerns the 'x^y' in 'x^-y' so that 'subst (a, | |
sqrt(x), 1/sqrt(x))' yields '1/a'. <a> and <b> may also be | |
operators of an expression enclosed in double-quotes '"' or they | |
may be function names. If one wishes to substitute for the | |
independent variable in derivative forms then the 'at' function | |
(see below) should be used. | |
'subst' is an alias for 'substitute'. | |
The commands 'subst (<eq_1>, <expr>)' or 'subst ([<eq_1>, ..., | |
<eq_k>], <expr>)' are other permissible forms. The <eq_i> are | |
equations indicating substitutions to be made. For each equation, | |
the right side will be substituted for the left in the expression | |
<expr>. The equations are substituted in serial from left to right | |
in <expr>. See the functions 'sublis' and 'psubst' for making | |
parallel substitutions. | |
'exptsubst' if 'true' permits substitutions like 'y' for '%e^x' in | |
'%e^(a*x)' to take place. | |
When 'opsubst' is 'false', 'subst' will not attempt to substitute | |
into the operator of an expression. E.g. '(opsubst: false, subst | |
(x^2, r, r+r[0]))' will work. | |
See also 'at', 'ev' and 'psubst', as well as 'let' and 'letsimp'. | |
Examples: | |
(%i1) subst (a, x+y, x + (x+y)^2 + y); | |
2 | |
(%o1) y + x + a | |
(%i2) subst (-%i, %i, a + b*%i); | |
(%o2) a - %i b | |
The substitution is done in serial for a list of equations. | |
Compare this with a parallel substitution: | |
(%i1) subst([a=b, b=c], a+b); | |
(%o1) 2 c | |
(%i2) sublis([a=b, b=c], a+b); | |
(%o2) c + b | |
Single-character Operators like '+' and '-' have to be quoted in | |
order to be replaced by subst. It is to note, though, that 'a+b-c' | |
might be expressed as 'a+b+(-1*c)' internally. | |
(%i3) subst(["+"="-"],a+b-c); | |
(%o3) c-b+a | |
The difference between 'subst' and 'at' can be seen in the | |
following example: | |
(%i1) g1:y(t)=a*x(t)+b*diff(x(t),t); | |
d | |
(%o1) y(t) = b (-- (x(t))) + a x(t) | |
dt | |
(%i2) subst('diff(x(t),t)=1,g1); | |
(%o2) y(t) = a x(t) + b | |
(%i3) at(g1,'diff(x(t),t)=1); | |
! | |
d ! | |
(%o3) y(t) = b (-- (x(t))! ) + a x(t) | |
dt !d | |
!-- (x(t)) = 1 | |
dt | |
For further examples, do 'example (subst)'. | |
There are also some inexact matches for `subst'. | |
Try `?? subst' to see them. | |
(%o20) true | |
(%i21) ? psubst | |
-- Function: psubst | |
psubst (<list>, <expr>) | |
psubst (<a>, <b>, <expr>) | |
'psubst(<a>, <b>, <expr>)' is simliar to 'subst'. See 'subst'. | |
In distinction from 'subst' the function 'psubst' makes parallel | |
substitutions, if the first argument <list> is a list of equations. | |
See also 'sublis' for making parallel substitutions and 'let' and | |
'letsimp' for others ways to do substitutions. | |
Example: | |
The first example shows parallel substitution with 'psubst'. The | |
second example shows the result for the function 'subst', which | |
does a serial substitution. | |
(%i1) psubst ([a^2=b, b=a], sin(a^2) + sin(b)); | |
(%o1) sin(b) + sin(a) | |
(%i2) subst ([a^2=b, b=a], sin(a^2) + sin(b)); | |
(%o2) 2 sin(a) | |
There are also some inexact matches for `psubst'. | |
Try `?? psubst' to see them. | |
(%o21) true | |
(%i22) g1- psubst([x1=x4, x4=x1, x3=x5,x5=x3], g1); | |
(%o22) 0 | |
(%i23) g1- psubst([x1=x4, x4=x1], g1); | |
2 2 2 2 | |
(%o23) p x2 x4 x5 - p x1 x2 x5 - p x2 x3 x4 + p x1 x2 x3 | |
(%i24) g1- psubst([x1=x5, x5=x1, x3=x4,x4=x3], g1); | |
(%o24) 0 | |
(%i1) ls: [l1,l2]; ds1:[l1^2+m^2, l2^2+m^2, (l1+l2+p)^2+m^2, (l1+p)^2+m^2, (l1+l2)^2+m^2]; | |
(%o1) [l1, l2] | |
2 2 2 2 2 2 2 2 | |
(%o2) [m + l1 , m + l2 , (p + l2 + l1) + m , (p + l1) + m , | |
2 2 | |
m + (l2 + l1) ] | |
(%i3) ds2: [(l1-p)^2+m^2, (l1+l2)^2+m^2, l2^2+m^2, l1^2+m^2, (p+l2)^2+m^2]; | |
2 2 2 2 2 2 2 2 2 2 | |
(%o3) [(l1 - p) + m , m + (l2 + l1) , m + l2 , m + l1 , (p + l2) + m ] | |
(%i4) schwinger_matrix (ls,ds1); | |
[ x5 + x4 + x3 + x1 ] [ x5 + x3 ] | |
[ ] [ ] | |
(%o4) Col 1 = [ x5 + x3 ] Col 2 = [ x5 + x3 + x2 ] | |
[ ] [ ] | |
[ p x4 + p x3 ] [ p x3 ] | |
[ p x4 + p x3 ] | |
[ ] | |
Col 3 = [ p x3 ] | |
[ ] | |
[ 2 2 2 2 2 2 2 ] | |
[ m x5 + p x4 + m x4 + p x3 + m x3 + m x2 + m x1 ] | |
(%i5) schwinger_matrix (ls,ds2); | |
[ x4 + x2 + x1 ] [ x2 ] | |
[ ] [ ] | |
(%o5) Col 1 = [ x2 ] Col 2 = [ x5 + x3 + x2 ] | |
[ ] [ ] | |
[ - p x1 ] [ p x5 ] | |
[ - p x1 ] | |
[ ] | |
Col 3 = [ p x5 ] | |
[ ] | |
[ 2 2 2 2 2 2 2 ] | |
[ p x5 + m x5 + m x4 + m x3 + m x2 + p x1 + m x1 ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment