home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / maths / b116_1 / jacal / test_math < prev    next >
Text File  |  1993-10-19  |  6KB  |  245 lines

  1. /*From: mjt@juliet.anu.edu.au (Michael Thomas)
  2. */
  3. set echogrammar standard;
  4.  
  5. verify(5^2, 25);
  6. a:[[1,2,3],[5,2,7]];
  7. b:[[3,2],[6,4]];
  8. verify(b.a, [[13,10,23], [26,20,46]]);
  9. c:[[1,3,5],[2,4,7]];
  10. d:[2,4];
  11. verify(c + d, [[3,5,7], [6,8,11]]);
  12. verify(3+2, 5);
  13. verify(e+d, [2 + e , 4 + e]);
  14. verify(-[1,2,3], [-1 , -2 , -3]);
  15. verify(3-7, -4);
  16. verify(+/-3, 3 * %sqrt1);
  17. verify((3 * %sqrt1)^2, 9);
  18. verify(+/-(3 * %sqrt1), 3);
  19. verify((x^2-y^2)/(x-y), x + y);
  20. verify(1=2, 0 = -1);
  21. verify((1+x)^4, 1 + 4* x + 6* x^2  + 4* x^3  + x^4);
  22.  
  23. a:[[1,0],[-1,1]];
  24. verify(a^^3,[ [1,0], [-3,1]]);
  25.  
  26. verify(bunch(1,2,3),[1 , 2 , 3]);
  27. verify(coeff((x+2)^4,x,0), 16);
  28. verify(coeff((x+2)^4,x,1), 32);
  29. verify(coeff((x+2)^4,x,2), 24);
  30. verify(coeff((x+2)^4,x,3), 8);
  31. verify(coeff((x+2)^4,x,4), 1);
  32. verify(coeffs((x+2)^4,x), [16 , 32 , 24 , 8 , 1]);
  33. verify(col([[1,2,4],[2,5,6]],2), [[2],[5]]);
  34. verify(content(2*x*y+4*x^2*y^2,y), [2* x , y + 2 *x* y^2 ]);
  35.  
  36. verify(crossproduct([1,2,3],[4,2,5]),[4 , 7 , -6]);
  37. verify(denom(4/5), 5);
  38.  
  39. a:[[1,2],[6,7]];
  40. verify(determinant(a), -5);
  41. verify(diagmatrix(12,3,a,s^2),
  42.          [[12,  0,    0,  0 ],
  43.           [0,   3,    0,  0 ],
  44.           [0,   0,    a,  0 ],
  45.           [0,   0,    0, s^2]]);
  46. verify(diagmatrix([1,2],2), [[[1 , 2],  0], [   0, 2]]);
  47.  
  48. verify(divide(x^2+y^2,x-7*y^2,x), [x + 7* y^2  , y^2  + 49* y^4 ]);
  49. verify(divide(-7,3), [-2 , -1]);
  50. verify(divide(x^2+y^2+z^2,x+y+z), [- x - y + z , 2* x^2  + 2* x* y + 2* y^2 ]);
  51. verify(divide(x^2+y^2+z^2,x+y+z,y), [- x + y - z , 2* x^2  + 2* x* z + 2*z^2 ]);
  52. verify(divide(x^2+y^2+z^2,x+y+z,z), [- x - y + z , 2* x^2  + 2* x* y + 2* y^2 ]);
  53.  
  54. a:[1,2,3];
  55.  
  56. b:[3,1,5];
  57.  
  58. verify(dotproduct(a,b), 20);
  59.  
  60. verify(eliminate([x^2+y=0,x^3+y=0],[x]), 0 = y + y^2);
  61. verify(eliminate([x+y+z=3,x^2+y^2+z^2=3,x^3+y^3+z^3=3],[x,y]), 0 = 1 - z);
  62.  
  63.  
  64. verify(factor(120), [2 , 2 , 2 , 3 , 5]);
  65. verify(factor(-120),[-1 , 2 , 2 , 2 , 3 , 5]);
  66.  
  67. w(t):=t+1;
  68. verify(finv(w), lambda([@1], -1 + @1));
  69.  
  70. verify(gcd(x^4-y^4,x^6+y^6),x^2  + y^2);
  71. verify(gcd(4,10), 2);
  72.  
  73. e4: lambda([@1 , @2], @1  + @2 );
  74.  
  75. verify(genmatrix(e4,3,5),
  76.    [[2,   3,   4,  5,  6],
  77.     [3,   4,   5,  6,  7],
  78.     [4,   5,   6,  7,  8]]);
  79.  
  80. verify(ident(4),
  81.    [[1,  0,  0,  0],
  82.     [0,  1,  0,  0],
  83.     [0,  0,  1,  0],
  84.     [0,  0,  0,  1]]);
  85.  
  86. e12 : lambda([x],x^2);
  87. e13 : lambda([x,y,z],x*y*z);
  88.  
  89. verify(e12+e13, lambda([@1, @2, @3], @1^2  + @1* @2* @3));
  90.  
  91. verify(listofvars(x^2+y^3),[x , y]);
  92. verify(listofvars((x^2+y^3)/(2*x^7+y*x+z)), [z , x , y]);
  93.  
  94. b:[[1,2,3],[3,1,5],[5,2,7]];
  95.  
  96. verify(minor(b,3,1),
  97.      [[2,  3],
  98.       [1,  5]]);
  99.  
  100. verify(mod(5,2), -1);
  101. verify(mod(x^4+4,x^2=2), 8);
  102.  
  103. verify(num((x^2+y^2)/(x^2-y^2)), -(x^2  + y^2));
  104. verify(num(7/4),7);
  105. verify(num(7/(4/3)),21);
  106.  
  107. verify(or(x=2,y=3), 0 = -6 + 3 *x + (2 - x)* y);
  108. /* verify(or(2,3), {x | 0 = 6 - 5 *x + x^2 }); */
  109. verify(or(x=2,17), 17);
  110.  
  111. verify(discriminant(x^3-1,x), -27);
  112.  
  113. verify(rapply([[1,2,3],[1,4,6],3],2,3),6);
  114. verify(rapply([a,b],2),b);
  115. verify(rapply([a,b]), [a,b]);
  116.  
  117. verify(resultant(x^2+n,x^3+n,x), n^2 + n^3);
  118.  
  119. u:[[1,2,3],[1,5,3]];
  120.  
  121. verify(row(u,2), [1, 5, 3]);
  122.  
  123. verify(scalarmatrix(3,6),
  124.    [[6,  0,  0],
  125.     [0,  6,  0],
  126.     [0,  0,  6]]);
  127.  
  128. verify(sylvester(a0+a1*x+a2*x^2+a3*x^3,b0+b1*x+b2*x^2,x),
  129.    [[a3,  a2,  a1,  a0,  0 ],
  130.     [0,   a3,  a2,  a1,  a0],
  131.     [b2,  b1,  b0,  0 ,  0 ],
  132.     [0,   b2,  b1,  b0,  0 ],
  133.     [0,   0,   b2,  b1,  b0]]);
  134.  
  135. verify(differential(x^2+y^3), 2* x* x' + 3* y^2 * y');
  136. verify((x^2+y^3)', 2*x*x' + 3*y^2*y');
  137. verify((x^2+x*y^3)', 2*x*x' + 3*x*y^2*y'+ y^3*x');
  138.  
  139. q:[[1,1,1,1,1],[1,2,3,4,5]];
  140.  
  141. verify(transpose(q),
  142.     [[1,  1],
  143.      [1,  2],
  144.      [1,  3],
  145.      [1,  4],
  146.      [1,  5]]);
  147.  
  148. A:[1,0];
  149. B:[1,3];
  150. C:[1,2];
  151. D:[0,0];
  152. E:[1,3,0];
  153. M : [
  154.       [1,2,3,0],
  155.       [3,7,4,2],
  156.       [4,4,5,6]
  157.      ];
  158.  
  159. verify(rank([A]),     1);
  160. verify(rank([E]),     1);
  161. verify(rank(M),       3);
  162. verify(rank([A,B,C]), 2);
  163. verify(rank([A,B]),   2);
  164. verify(rank([A,C]),   2);
  165. verify(rank([B,C]),   2);
  166.  
  167.  
  168. D: [[- k12 - k13, k21, k31], 
  169.     [k12, - k23 - k21, k32], 
  170.     [k13, k23, - k31 - k32]];
  171.  
  172. verify(determinant(D), 0);
  173.  
  174. /* Complex numbers */
  175.  
  176. verify((-1)^(1/2), %i);
  177. verify((-1)^(2/2), -1);
  178. verify((-1)^(3/2), -%i);
  179. verify((-1)^(5/2), %i);
  180.  
  181. /* The old eliminate problem */
  182.  
  183. YN1: 2 * A1 + 2 * L1 * M1;
  184. YN2: 4 * B1 - 2 * L1 * M1;
  185. YN3: A1 + 2* B1;
  186. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  187.  
  188. YN1: 2 * A1 + 2 * L1 * M1 ^ 2;
  189. YN2: 4 * B1 - 2 * L1 * M1 ^ 2;
  190. YN3: A1 + 2* B1;
  191. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  192.  
  193. YN1: 2 * A1 + 2 * L1 * M1 ^ 3;
  194. YN2: 4 * B1 - 2 * L1 * M1 ^ 3;
  195. YN3: A1 + 2* B1;
  196. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  197.  
  198. YN1: 2 * A1 + 2 * L1 * M1 ^ 2;
  199. YN2: 4 * B1 - 2 * L1 * M1;
  200. YN3: A1 * L1 + 4* B1^2;
  201. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  202.  
  203. YN1: 2 * A1 + 2 * L1 * M1 ^ 3;
  204. YN2: 4 * B1 - 2 * L1 * M1;
  205. YN3: A1 * L1^2 + 8 * B1^3;
  206. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  207.  
  208. YN1: 2 * A1 + 2 * L1 * M1 ^ 2;
  209. YN2: 4 * B1 - 2 * L1 * M1 ^ 3;
  210. YN3: A1^3 * L1 + 4 * B1^2 * L1^2;
  211. verify(eliminate([YN1=0,YN2=0],[M1]), YN3=0);
  212.  
  213. /* Manipulate the Gibbs equation */
  214.  
  215. verify({dU | T * dS = dU + P * dV - mu1 * dc1 - mu2 * dc2},  
  216.            T*dS-P*dV+mu1*dc1+mu2*dc2);
  217. verify({T | T * dS = dU + P * dV - mu1 * dc1 - mu2 * dc2},
  218.            (dU+P*dV-mu1*dc1-mu2*dc2)/dS);
  219. verify({mu1 | T * dS = dU + P * dV - mu1 * dc1 - mu2 * dc2},  
  220.            (dU+P*dV-T*dS-mu2*dc2)/dc1);
  221.  
  222. /* And again using the ' operator */
  223.  
  224. verify({U' | T * S' = U' + P * V' - mu1 * c1' - mu2 * c2'},  
  225.            T*S'-P*V'+mu1*c1'+mu2*c2');
  226. verify({T | T * S' = U' + P * V' - mu1 * c1' - mu2 * c2'},
  227.            (U'+P*V'-mu1*c1'-mu2*c2')/S');
  228. verify({mu1 | T * S' = U' + P * V' - mu1 * c1' - mu2 * c2'},  
  229.            (U'+P*V'-T*S'-mu2*c2')/c1');
  230.  
  231. /* Use a lambda expression for the power method of approximating a
  232.    dominant eigenvalue */
  233.    
  234. A: [[3,2], [-1,0]];
  235. X: [[1], [1]];
  236.  
  237. set echogrammar null;    /* because the next one crashes */
  238. /*
  239. power(a99, n99, x99): a99^^n99 . x99;
  240.  
  241. verify(power(A,3,X), [[29],[-13]]);
  242.  
  243. set echogrammar null;
  244. */
  245.