Skip to content

Instantly share code, notes, and snippets.

@denkiwakame
Created March 12, 2015 15:10
Show Gist options
  • Save denkiwakame/d5de263d386a2fc2e7d8 to your computer and use it in GitHub Desktop.
Save denkiwakame/d5de263d386a2fc2e7d8 to your computer and use it in GitHub Desktop.
includeすればよい
/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
/* [ Created with wxMaxima version 13.04.2 ] */
/* [wxMaxima: input start ] */
/*
get_M(_VARS,_F):=block([X,N,r,c,B,y,coeff,flag],
X:_VARS,
f:_F,
N:length(X),
M:[],
for r:1 step 1 thru N do (
coeff:ratcoeff(f,X[r]),
M:endcons(expand(coeff),M),
f:f-coeff*X[r]
),
M:endcons(expand(f),M),
X:endcons(1,X),
return([M,flag,f])
);
*/
get_M(_VARS,_F):=block([X,N,r,c,B,y,coeff,flag],
X:_VARS,
f:_F,
N:length(X),
M:[],
/* extract single term : x,1 */
for r:1 step 1 thru N do (
coeff:ratcoeff(f,X[r]), /* 0 if f has no X[r] terms */
M:endcons(expand(coeff),M),
f:f-coeff*X[r]
),
/* constant */
M:endcons(expand(f),M),
X:endcons(1,X),
/* exception */
DIFF: expand(M.X - _F),
if DIFF # 0 then ( flag:"ERROR:Mx neq original eq" ) else ( flag:"SUCCESS"),
return([M,flag,DIFF])
);
norm(x):=sqrt(x.x);
R01:transpose([1,0,0]);
R02:transpose([0,1,0]);
T0:transpose([0,0,0]);
R11:transpose([r11,r14,r17]);
R12:transpose([r12,r15,r18]);
R21:transpose([r21,r24,r27]);
R22:transpose([r22,r25,r28]);
T1:transpose([t11,t12,t13]);
T2:transpose([t21,t22,t23]);
P00:transpose([u00,v00]);
P01:transpose([u01,v01]);
P02:transpose([u02,v02]);
P03:transpose([u03,v03]);
P10:transpose([u10,v10]);
P11:transpose([u11,v11]);
P12:transpose([u12,v12]);
P13:transpose([u13,v13]);
P20:transpose([u20,v20]);
P21:transpose([u21,v21]);
P22:transpose([u22,v22]);
P23:transpose([u23,v23]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
xd1:(P11[1] - P10[1])[1];
yd1:(P11[2] - P10[2])[1];
xd2:(P21[1] - P20[1])[1];
yd2:(P21[2] - P20[2])[1];
/* CROSSING with PLANE 0 v00,v01 */
ld01:addrow(P01-P00,[0]);
/* CROSSING with PLANE 1 v10,v11 */
ld02:addrow(P03-P02,[0]);
RCONST1:sqrt(xd1^2 + yd1^2)*ld01/norm(ld01) - xd1*R11 - yd1*R12;
RCONST2:sqrt(xd2^2 + yd2^2)*ld02/norm(ld02) - xd2*R21 - yd2*R22;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
CROSS12A:T1+[R11,R12].P12 - T2-[R21,R22].P22;
CROSS12B:T1+[R11,R12].P13 - T2-[R21,R22].P23;
CROSS01A:T1+[R11,R12].P10 - T0-[R01,R02].P00;
CROSS01B:T1+[R11,R12].P11 - T0-[R01,R02].P01;
CROSS02A:T2+[R21,R22].P20 - T0-[R01,R02].P02;
CROSS02B:T2+[R21,R22].P21 - T0-[R01,R02].P03;
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
X:[r11,r12,r14,r15,r17,r18,r21,r22,r24,r25,r27,r28,t11,t12,t13,t21,t22,t23];
F1:get_M(X,CROSS12A[1][1]);
F2:get_M(X,CROSS12A[2][1]);
F3:get_M(X,CROSS12A[3][1]);
F4:get_M(X,CROSS12B[1][1]);
F5:get_M(X,CROSS12B[2][1]);
F6:get_M(X,CROSS12B[3][1]);
F7:get_M(X,CROSS01A[1][1]);
F8:get_M(X,CROSS01A[2][1]);
F9:get_M(X,CROSS01A[3][1]);
F10:get_M(X,CROSS01B[1][1]);
F11:get_M(X,CROSS01B[2][1]);
F12:get_M(X,CROSS01B[3][1]);
F13:get_M(X,CROSS02A[1][1]);
F14:get_M(X,CROSS02A[2][1]);
F15:get_M(X,CROSS02A[3][1]);
F16:get_M(X,CROSS02B[1][1]);
F17:get_M(X,CROSS02B[2][1]);
F18:get_M(X,CROSS02B[3][1]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
F19:get_M(X,RCONST1[1][1]);
F20:get_M(X,RCONST1[2][1]);
F21:get_M(X,RCONST1[3][1]);
F22:get_M(X,RCONST2[1][1]);
F23:get_M(X,RCONST2[2][1]);
F24:get_M(X,RCONST2[3][1]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
Madd:matrix(F19[1]);
Madd:addrow(Madd,F20[1]);
Madd:addrow(Madd,F21[1]);
Madd:addrow(Madd,F22[1]);
Madd:addrow(Madd,F23[1]);
Madd:addrow(Madd,F24[1]);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
Mall:matrix(F1[1]);
Mall:addrow(Mall,F2[1]);
Mall:addrow(Mall,F3[1]);
Mall:addrow(Mall,F4[1]);
Mall:addrow(Mall,F5[1]);
Mall:addrow(Mall,F6[1]);
Mall:addrow(Mall,F7[1]);
Mall:addrow(Mall,F8[1]);
Mall:addrow(Mall,F9[1]);
Mall:addrow(Mall,F10[1]);
Mall:addrow(Mall,F11[1]);
Mall:addrow(Mall,F12[1]);
Mall:addrow(Mall,F13[1]);
Mall:addrow(Mall,F14[1]);
Mall:addrow(Mall,F15[1]);
Mall:addrow(Mall,F16[1]);
Mall:addrow(Mall,F17[1]);
Mall:addrow(Mall,F18[1]);
X1:endcons(1,X);
Mall.X1;
TRUTH:transpose([CROSS12A[1][1],CROSS12A[2][1],CROSS12A[3][1],CROSS12B[1][1],CROSS12B[2][1],CROSS12B[3][1],CROSS01A[1][1],CROSS01A[2][1],CROSS01A[3][1],CROSS01B[1][1],CROSS01B[2][1],CROSS01B[3][1],CROSS02A[1][1],CROSS02A[2][1],CROSS02A[3][1],CROSS02B[1][1],CROSS02B[2][1],CROSS02B[3][1]]);
/* [wxMaxima: input end ] */
/* Maxima can't load/batch files which end with a comment! */
"Created with wxMaxima"$
@denkiwakame
Copy link
Author

for( この中は最後, あるとバグでハマる )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment