blob: e1172a9df4168709de8bcf3ddc48978a26ee05c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#!/bin/bash
typeset -i m2 m1 M n2 n1 N m n
typeset -i MM=5 NN=5
case $# in
0) :
;;
1) MM=$1; NN=$1
;;
2) MM=$1; NN=$2
;;
*) echo 1>&2 "Usage: $0 [m [n]]"
;;
esac
EMPTYLINE=: # echo
echo 'a = { ' # mathematica
let "M=1" # for (M=1; M<=MM; M++)
while let "M <= MM"; do
let "N=1" # for (N=1; N<=NN; N++)
while let "N <= NN"; do
let "m1 = M - 1"
let "m2 = M + 1"
let "n1 = N - 1"
let "n2 = N + 1"
echo -n '{ ' # math
let "m=1" # for(m=1; m<=MM; m++)
while let "m <= MM"; do
let "n=1" # for(n=1; n<=NN; n++)
while let "n <= NN"; do
let "x = (m-m1)*(m-M)*(m-m2)"
let "y = (n-n1)*(n-N)*(n-n2)"
if let "(x*x + (n-N)*(n-N)) * ((m-M)*(m-M) + y*y)"; then
echo -n "0,"
else # neighbour
echo -n "1,"
fi
let "n=n+1"
done
echo -n " "; let "m=m+1" # ". "
done
echo '},'
let "N=N+1"
$EMPTYLINE
done
$EMPTYLINE
let "M=M+1"
done
echo '}'
echo -n 'o = { '
let "m=1"
while let "m <= MM"; do
let "n=1"
while let "n <= NN"; do
echo -n "1,"
let "n=n+1"
done
let "m=m+1"
done
echo " }"
echo 'x = LinearSolve[a,o] '
exit 0
|