Guest User

Untitled

a guest
Mar 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. s[n_Integer] /; n >= 3 :=
  2. SparseArray[{Band[{1, 1}] -> -1, Band[{1, 2}] -> 2, Band[{1, 3}] -> -1}, {n - 2, n}];
  3.  
  4. NullSpace[s[4]]
  5.  
  6. magic[n_Integer] /; n >= 1 :=
  7. Module[{index, rowSums, colSums, diagonal, invDiagonal},
  8. index = Function[{i, j}, (i - 1) n + j];
  9. rowSums = Table[{i, index[i, #]} -> 1 & /@ Range[n], {i, Range[n]}] // Flatten;
  10. colSums = Table[{i + n, index[#, i]} -> 1 & /@ Range[n], {i, Range[n]}] // Flatten;
  11. diagonal = {2 n + 1, index[#, #]} -> 1 & /@ Range[n];
  12. invDiagonal = {2 n + 2, index[n + 1 - #, #]} -> 1 & /@ Range[n];
  13. SparseArray[rowSums~Join~colSums~Join~diagonal~Join~invDiagonal]
  14. ]
  15.  
  16. magic[2] // MatrixForm
  17.  
  18. With[{n = 2}, Join[magic[n], ConstantArray[{-1}, 2 n + 2], 2]]
  19.  
  20. % // NullSpace
  21.  
  22. basis[std_, n_] :=
  23. If[n < Length[std], "Invalid specs",
  24. With[{null = ConstantArray[0, n - Length[std]},
  25. Flatten /@ Permutations[Prepend[null, std]]]]
  26. eqn[n_ /; (IntegerQ[n] && NonNegative[n])] := Array[x^(# - 1) &, n]
  27. combine[std_, n_] := eqn[n].# & /@ basis[std, n]
  28. TableForm[Table[Row[{ToString[k] <> "->", combine[{1, -2, 1}, k]}],
  29. {k, {4, 8, 16, 20}}], TableDepth -> 1]
  30.  
  31. (*
  32. 4->{1-2 x+x^2,x-2 x^2+x^3}
  33. 8->{1-2 x+x^2,x-2 x^2+x^3,x^2-2 x^3+x^4,x^3-2 x^4+x^5,x^4-2 x^5+x^6,x^5-2 x^6+x^7}
  34. 16->{1-2 x+x^2,x-2 x^2+x^3,x^2-2 x^3+x^4,x^3-2 x^4+x^5,x^4-2 x^5+x^6,...}
  35. 20->{1-2 x+x^2,x-2 x^2+x^3,x^2-2 x^3+x^4,x^3-2 x^4+x^5,x^4-2 x^5+x^6,...}
  36. *)
Add Comment
Please, Sign In to add comment