Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- s[n_Integer] /; n >= 3 :=
- SparseArray[{Band[{1, 1}] -> -1, Band[{1, 2}] -> 2, Band[{1, 3}] -> -1}, {n - 2, n}];
- NullSpace[s[4]]
- magic[n_Integer] /; n >= 1 :=
- Module[{index, rowSums, colSums, diagonal, invDiagonal},
- index = Function[{i, j}, (i - 1) n + j];
- rowSums = Table[{i, index[i, #]} -> 1 & /@ Range[n], {i, Range[n]}] // Flatten;
- colSums = Table[{i + n, index[#, i]} -> 1 & /@ Range[n], {i, Range[n]}] // Flatten;
- diagonal = {2 n + 1, index[#, #]} -> 1 & /@ Range[n];
- invDiagonal = {2 n + 2, index[n + 1 - #, #]} -> 1 & /@ Range[n];
- SparseArray[rowSums~Join~colSums~Join~diagonal~Join~invDiagonal]
- ]
- magic[2] // MatrixForm
- With[{n = 2}, Join[magic[n], ConstantArray[{-1}, 2 n + 2], 2]]
- % // NullSpace
- basis[std_, n_] :=
- If[n < Length[std], "Invalid specs",
- With[{null = ConstantArray[0, n - Length[std]},
- Flatten /@ Permutations[Prepend[null, std]]]]
- eqn[n_ /; (IntegerQ[n] && NonNegative[n])] := Array[x^(# - 1) &, n]
- combine[std_, n_] := eqn[n].# & /@ basis[std, n]
- TableForm[Table[Row[{ToString[k] <> "->", combine[{1, -2, 1}, k]}],
- {k, {4, 8, 16, 20}}], TableDepth -> 1]
- (*
- 4->{1-2 x+x^2,x-2 x^2+x^3}
- 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}
- 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,...}
- 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,...}
- *)
Add Comment
Please, Sign In to add comment