Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/* * This file: * http://anggtwu.net/MAXIMA/LI_split1.mac.html * http://anggtwu.net/MAXIMA/LI_split1.mac * (find-angg "MAXIMA/LI_split1.mac") * Author: Eduardo Ochs <eduardoochs@gmail.com> * * Superseded by: * (find-angg "MAXIMA/LI_Axb1.mac") * * (defun e () (interactive) (find-angg "MAXIMA/LI_split1.mac")) * (find-es "maxima" "augcoefmatrix") * (find-es "maxima" "LI_split") * (find-es "maxima" "2023-2-C2-P2") * (find-es "maxima" "2023-2-C2-P2" "Questao 2 por s e c") */ columnvector(x) := transpose(matrix(x)); vtolist(v) := transpose(v)[1]; Mtolist(M) := args(M); LI_delta (i,j) := if is(i=j) then 1 else 0; LI_subst1(lis, k) := makelist(lis[ii]=LI_delta(ii,k), ii,1,length(lis)); LI_subst (ex, lis, k) := subst(LI_subst1(lis, k), ex); LI_split (ex, lis) := makelist(LI_subst(ex, lis, k), k,1,length(lis)); LI_lastrow (M) := M[length(M)]; LI_lastcolumn(M) := transpose(LI_lastrow(transpose(M))); LI_eqs (bigeq,lis) := makelist(LI_subst(bigeq, lis, k), k,1,length(lis)); LI_coefmatrix(bigeq,lis,xx) := coefmatrix(LI_eqs(bigeq,lis), xx); LI_augmatrix (bigeq,lis,xx) := augcoefmatrix(LI_eqs(bigeq,lis), xx); LI_right (bigeq,lis,xx) := -LI_lastcolumn(augcoefmatrix(LI_eqs(bigeq,lis), xx)); LI_Axx (bigeq,lis,xx) := [LI_coefmatrix(bigeq,lis,xx), LI_right(bigeq,lis,xx)]; LI_matreq3 (bigeq,lis,xx) := block([A,vv], [A,vv]:LI_Axx(bigeq,lis,xx), [A,columnvector(xx),vv]); LI_matreq (bigeq,lis,xx) := block([A,vv], [A,vv]:LI_Axx(bigeq,lis,xx), [A,columnvector(xx)]=vv); /* * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load("LI_split1.mac"); LI_split(A*s+B*c=C*s, [s,c]); A : matrix([a,b,c], [d,e,f]); xyz : matrix([x], [y], [z]); A. xyz; eq1 : (A.xyz)[1][1] = u; eq2 : (A.xyz)[2][1] = v; ss*eq1 + cc*eq2; eq3 : expand(ss*eq1 + cc*eq2); LI_split (eq3, [ss,cc]); LI_coefmatrix(eq3, [ss,cc], [x,y,z]); LI_augmatrix (eq3, [ss,cc], [x,y,z]); LI_right (eq3, [ss,cc], [x,y,z]); LI_matreq (eq3, [ss,cc], [x,y,z]); */