passagemath-repl 10.5.28__py3-none-any.whl → 10.5.30__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/kernel.json +1 -0
- passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/logo-64x64.png +0 -0
- passagemath_repl-10.5.30.data/data/share/jupyter/kernels/sagemath/logo.svg +352 -0
- {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/METADATA +3 -3
- {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/RECORD +95 -24
- {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/top_level.txt +1 -0
- sage/ext_data/all__sagemath_repl.py +1 -0
- sage/interfaces/all__sagemath_repl.py +1 -0
- sage/repl/ipython_kernel/install.py +6 -8
- sage/tests/books/__init__.py +2 -0
- sage/tests/books/computational-mathematics-with-sagemath/__init__.py +1 -0
- sage/tests/books/computational-mathematics-with-sagemath/calculus_doctest.py +550 -0
- sage/tests/books/computational-mathematics-with-sagemath/combinat_doctest.py +1054 -0
- sage/tests/books/computational-mathematics-with-sagemath/domaines_doctest.py +444 -0
- sage/tests/books/computational-mathematics-with-sagemath/float_doctest.py +478 -0
- sage/tests/books/computational-mathematics-with-sagemath/graphique_doctest.py +255 -0
- sage/tests/books/computational-mathematics-with-sagemath/graphtheory_doctest.py +419 -0
- sage/tests/books/computational-mathematics-with-sagemath/integration_doctest.py +291 -0
- sage/tests/books/computational-mathematics-with-sagemath/linalg_doctest.py +455 -0
- sage/tests/books/computational-mathematics-with-sagemath/linsolve_doctest.py +422 -0
- sage/tests/books/computational-mathematics-with-sagemath/lp_doctest.py +235 -0
- sage/tests/books/computational-mathematics-with-sagemath/mpoly_doctest.py +561 -0
- sage/tests/books/computational-mathematics-with-sagemath/nonlinear_doctest.py +491 -0
- sage/tests/books/computational-mathematics-with-sagemath/numbertheory_doctest.py +156 -0
- sage/tests/books/computational-mathematics-with-sagemath/polynomes_doctest.py +406 -0
- sage/tests/books/computational-mathematics-with-sagemath/premierspas_doctest.py +181 -0
- sage/tests/books/computational-mathematics-with-sagemath/programmation_doctest.py +663 -0
- sage/tests/books/computational-mathematics-with-sagemath/recequadiff_doctest.py +393 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/__init__.py +1 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/calculus_doctest.py +265 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/combinat_doctest.py +218 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/domaines_doctest.py +60 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/float_doctest.py +142 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/graphique_doctest.py +106 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/graphtheory_doctest.py +54 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/integration_doctest.py +57 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/linalg_doctest.py +57 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/linsolve_doctest.py +26 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/lp_doctest.py +48 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/mpoly_doctest.py +116 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/nonlinear_doctest.py +112 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/numbertheory_doctest.py +168 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/polynomes_doctest.py +108 -0
- sage/tests/books/computational-mathematics-with-sagemath/sol/recequadiff_doctest.py +59 -0
- sage/tests/books/judson-abstract-algebra/__init__.py +1 -0
- sage/tests/books/judson-abstract-algebra/actions-sage-exercises.py +52 -0
- sage/tests/books/judson-abstract-algebra/actions-sage.py +174 -0
- sage/tests/books/judson-abstract-algebra/algcodes-sage.py +131 -0
- sage/tests/books/judson-abstract-algebra/boolean-sage.py +270 -0
- sage/tests/books/judson-abstract-algebra/cosets-sage-exercises.py +88 -0
- sage/tests/books/judson-abstract-algebra/cosets-sage.py +171 -0
- sage/tests/books/judson-abstract-algebra/crypt-sage.py +152 -0
- sage/tests/books/judson-abstract-algebra/cyclic-sage.py +451 -0
- sage/tests/books/judson-abstract-algebra/domains-sage.py +164 -0
- sage/tests/books/judson-abstract-algebra/fields-sage.py +300 -0
- sage/tests/books/judson-abstract-algebra/finite-sage.py +109 -0
- sage/tests/books/judson-abstract-algebra/galois-sage.py +485 -0
- sage/tests/books/judson-abstract-algebra/groups-sage.py +281 -0
- sage/tests/books/judson-abstract-algebra/homomorph-sage-exercises.py +66 -0
- sage/tests/books/judson-abstract-algebra/homomorph-sage.py +201 -0
- sage/tests/books/judson-abstract-algebra/integers-sage.py +198 -0
- sage/tests/books/judson-abstract-algebra/isomorph-sage.py +173 -0
- sage/tests/books/judson-abstract-algebra/normal-sage.py +134 -0
- sage/tests/books/judson-abstract-algebra/permute-sage.py +320 -0
- sage/tests/books/judson-abstract-algebra/poly-sage.py +301 -0
- sage/tests/books/judson-abstract-algebra/rings-sage.py +414 -0
- sage/tests/books/judson-abstract-algebra/sets-sage.py +164 -0
- sage/tests/books/judson-abstract-algebra/struct-sage.py +64 -0
- sage/tests/books/judson-abstract-algebra/sylow-sage.py +251 -0
- sage/tests/books/judson-abstract-algebra/vect-sage-exercises.py +49 -0
- sage/tests/books/judson-abstract-algebra/vect-sage.py +212 -0
- sage/tests/memcheck/__init__.py +1 -0
- sage/tests/memcheck/run_tests.py +25 -0
- sage/tests/memcheck/run_tests_in_valgrind.py +36 -0
- sage/tests/memcheck/symbolic_expression.py +12 -0
- sage/tests/memcheck/verify_no_leak.py +28 -0
- sage/tests/all.py +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-cachegrind +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-callgrind +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-cleaner +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-coverage +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-eval +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-fixdoctests +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-inline-fortran +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-ipynb2rst +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-ipython +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-massif +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-notebook +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-omega +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-preparse +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-run +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-run-cython +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-runtests +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-startuptime.py +0 -0
- {passagemath_repl-10.5.28.data → passagemath_repl-10.5.30.data}/scripts/sage-valgrind +0 -0
- {passagemath_repl-10.5.28.dist-info → passagemath_repl-10.5.30.dist-info}/WHEEL +0 -0
@@ -0,0 +1,422 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-repl
|
2
|
+
# sage.doctest: needs scipy sage.modules
|
3
|
+
r"""
|
4
|
+
This file (./linsolve_doctest.sage) was *autogenerated* from ./linsolve.tex,
|
5
|
+
with sagetex.sty version 2011/05/27 v2.3.1.
|
6
|
+
It contains the contents of all the sageexample environments from this file.
|
7
|
+
You should be able to doctest this file with:
|
8
|
+
sage -t ./linsolve_doctest.sage
|
9
|
+
It is always safe to delete this file; it is not used in typesetting your
|
10
|
+
document.
|
11
|
+
|
12
|
+
Sage example in ./linsolve.tex, line 294::
|
13
|
+
|
14
|
+
sage: def cond_hilbert(n):
|
15
|
+
....: A = matrix(QQ, [[1/(i+j-1) for j in [1..n]] for i in [1..n]])
|
16
|
+
....: return A.norm(Infinity) * (A^-1).norm(Infinity)
|
17
|
+
|
18
|
+
Sage example in ./linsolve.tex, line 346::
|
19
|
+
|
20
|
+
sage: def diff_hilbert(n):
|
21
|
+
....: x = vector(QQ,[1 for i in range(0,n)])
|
22
|
+
....: A = matrix(QQ, [[1/(i+j-1) for j in [1..n]] for i in [1..n]])
|
23
|
+
....: y = A*x
|
24
|
+
....: A[n-1,n-1] = (1/(2*n-1))*(1+1/(10^5)) # modifies the matrix
|
25
|
+
....: s = A\y
|
26
|
+
....: return max(abs(float(s[i]-x[i])) for i in range(0,n))
|
27
|
+
|
28
|
+
Sage example in ./linsolve.tex, line 396::
|
29
|
+
|
30
|
+
sage: def hilbert_diff(n):
|
31
|
+
....: j = var("j")
|
32
|
+
....: f = lambda i: sum(1/(i+j-1),j,1,n)
|
33
|
+
....: y = vector(RDF, [f(i+1) for i in range(0,n)])
|
34
|
+
....: A = matrix(RDF, [[1/(i+j-1) for i in [1..n]] for j in [1..n]])
|
35
|
+
....: x = A.solve_right(y)
|
36
|
+
....: return max(abs(x[i]-1.0) for i in range(0,n))
|
37
|
+
|
38
|
+
Sage example in ./linsolve.tex, line 543::
|
39
|
+
|
40
|
+
sage: n = 20; cost = (n+1)*factorial(n); cost
|
41
|
+
51090942171709440000
|
42
|
+
|
43
|
+
Sage example in ./linsolve.tex, line 559::
|
44
|
+
|
45
|
+
sage: v = 3*10^9
|
46
|
+
sage: print("%3.3f" % float(cost/v/3600/24/365))
|
47
|
+
540.028
|
48
|
+
|
49
|
+
Sage example in ./linsolve.tex, line 653::
|
50
|
+
|
51
|
+
sage: A = matrix(RDF, [[-1,2],[3,4]])
|
52
|
+
sage: b = vector(RDF, [2,3])
|
53
|
+
sage: x = A.solve_right(b); x
|
54
|
+
(-0.20000000000000018, 0.9000000000000001)
|
55
|
+
|
56
|
+
Sage example in ./linsolve.tex, line 666::
|
57
|
+
|
58
|
+
sage: x = A.solve_right(b)
|
59
|
+
|
60
|
+
Sage example in ./linsolve.tex, line 678::
|
61
|
+
|
62
|
+
sage: A = matrix(RDF, [[-1,2],[3,4]])
|
63
|
+
sage: P, L, U = A.LU()
|
64
|
+
|
65
|
+
Sage example in ./linsolve.tex, line 723::
|
66
|
+
|
67
|
+
sage: eps = 1e-16
|
68
|
+
sage: y = (1-2*eps)/(1-eps)
|
69
|
+
sage: x = (1-y)/eps
|
70
|
+
sage: x, y
|
71
|
+
(1.11022302462516, 1.00000000000000)
|
72
|
+
|
73
|
+
Sage example in ./linsolve.tex, line 736::
|
74
|
+
|
75
|
+
sage: 1. + eps == 1.
|
76
|
+
True
|
77
|
+
|
78
|
+
Sage example in ./linsolve.tex, line 758::
|
79
|
+
|
80
|
+
sage: y = (1-2*eps)/(1-eps)
|
81
|
+
sage: x = 2-y
|
82
|
+
sage: x, y
|
83
|
+
(1.00000000000000, 1.00000000000000)
|
84
|
+
|
85
|
+
Sage example in ./linsolve.tex, line 803::
|
86
|
+
|
87
|
+
sage: A = random_matrix(RDF, 1000)
|
88
|
+
sage: b = vector(RDF, range(1000))
|
89
|
+
sage: c = vector(RDF, 2*list(range(500)))
|
90
|
+
|
91
|
+
Sage example in ./linsolve.tex, line 858::
|
92
|
+
|
93
|
+
sage: m = random_matrix(RDF, 10)
|
94
|
+
sage: A = transpose(m)*m
|
95
|
+
sage: C = A.cholesky()
|
96
|
+
|
97
|
+
Sage example in ./linsolve.tex, line 946::
|
98
|
+
|
99
|
+
sage: A = random_matrix(RDF,6,5)
|
100
|
+
sage: Q, R = A.QR()
|
101
|
+
|
102
|
+
Sage example in ./linsolve.tex, line 1012::
|
103
|
+
|
104
|
+
sage: A = matrix(RDF, [[1,3,2],[1,2,3],[0,5,2],[1,1,1]])
|
105
|
+
sage: U, Sig, V = A.SVD()
|
106
|
+
sage: A1 = A - U*Sig*transpose(V); A1 # abs tol 1e-9
|
107
|
+
[ 2.220446049250313e-16 0.0 0.0]
|
108
|
+
[3.3306690738754696e-16 -4.440892098500626e-16 -4.440892098500626e-16]
|
109
|
+
[-9.298117831235686e-16 1.7763568394002505e-15 -4.440892098500626e-16]
|
110
|
+
[ 4.440892098500626e-16 -8.881784197001252e-16 -4.440892098500626e-16]
|
111
|
+
|
112
|
+
Sage example in ./linsolve.tex, line 1123::
|
113
|
+
|
114
|
+
sage: A = matrix(RDF, [[1,3,2],[1,4,2],[0,5,2],[1,3,2]])
|
115
|
+
sage: b = vector(RDF, [1,2,3,4])
|
116
|
+
sage: Z = transpose(A)*A
|
117
|
+
sage: C = Z.cholesky()
|
118
|
+
sage: R = transpose(A)*b
|
119
|
+
sage: Z.solve_right(R) # abs tol 2e-13
|
120
|
+
(-1.5000000000000135, -0.5000000000000085, 2.7500000000000213)
|
121
|
+
|
122
|
+
Sage example in ./linsolve.tex, line 1188::
|
123
|
+
|
124
|
+
sage: A = matrix(RDF, [[1,3,2],[1,4,2],[0,5,2],[1,3,2]])
|
125
|
+
sage: b = vector(RDF, [1,2,3,4])
|
126
|
+
sage: Q, R = A.QR()
|
127
|
+
sage: R1 = R[0:3,0:3]
|
128
|
+
sage: b1 = transpose(Q)*b
|
129
|
+
sage: c = b1[0:3]
|
130
|
+
sage: R1.solve_right(c) # abs tol 1e-13
|
131
|
+
(-1.499999999999999, -0.49999999999999867, 2.749999999999997)
|
132
|
+
|
133
|
+
Sage example in ./linsolve.tex, line 1202::
|
134
|
+
|
135
|
+
sage: Z = A.transpose()*A
|
136
|
+
sage: Z.norm(Infinity)*(Z^-1).norm(Infinity) # abs tol 2e-10
|
137
|
+
1992.3750000000168
|
138
|
+
|
139
|
+
Sage example in ./linsolve.tex, line 1256::
|
140
|
+
|
141
|
+
sage: A = matrix(RDF, [[1,3,2],[1,3,2],[0,5,2],[1,3,2]])
|
142
|
+
sage: B = vector(RDF, [1,2,3,4])
|
143
|
+
sage: U, Sig, V = A.SVD()
|
144
|
+
sage: m = A.ncols()
|
145
|
+
sage: x = vector(RDF, [0]*m)
|
146
|
+
sage: lamb = vector(RDF, [0]*m)
|
147
|
+
sage: for i in range(0,m):
|
148
|
+
....: s = Sig[i,i]
|
149
|
+
....: if s!=0.0:
|
150
|
+
....: lamb[i]=U.column(i)*B/s
|
151
|
+
sage: x = V*lamb; x # random
|
152
|
+
(0.2370370370370367, 0.4518518518518521, 0.3703703703703702)
|
153
|
+
|
154
|
+
Sage example in ./linsolve.tex, line 1289::
|
155
|
+
|
156
|
+
sage: m = 3; [ Sig[i,i] for i in range(0,m) ] # abs tol 1e-15
|
157
|
+
[8.309316833256451, 1.3983038884881154, 0.0]
|
158
|
+
|
159
|
+
Sage example in ./linsolve.tex, line 1358::
|
160
|
+
|
161
|
+
sage: A = matrix(RDF, [[1,2],[3,4],[5,6],[7,8]])
|
162
|
+
|
163
|
+
Sage example in ./linsolve.tex, line 1366::
|
164
|
+
|
165
|
+
sage: set_random_seed(0) # to get reproducible values below
|
166
|
+
|
167
|
+
Sage example in ./linsolve.tex, line 1369::
|
168
|
+
|
169
|
+
sage: th = 0.7
|
170
|
+
sage: R = matrix(RDF, [[cos(th),sin(th)],[-sin(th),cos(th)]])
|
171
|
+
sage: B = (A + 0.1*random_matrix(RDF,4,2)) * transpose(R)
|
172
|
+
|
173
|
+
Sage example in ./linsolve.tex, line 1374::
|
174
|
+
|
175
|
+
sage: C = transpose(B)*A
|
176
|
+
sage: U, Sigma, V = C.SVD()
|
177
|
+
sage: Q = U*transpose(V)
|
178
|
+
|
179
|
+
Sage example in ./linsolve.tex, line 1381::
|
180
|
+
|
181
|
+
sage: Q # rel tol 1e-15
|
182
|
+
[ 0.7612151656410957 0.648499399843978]
|
183
|
+
[-0.6484993998439779 0.7612151656410955]
|
184
|
+
sage: R
|
185
|
+
[0.7648421872844885 0.644217687237691]
|
186
|
+
[-0.644217687237691 0.7648421872844885]
|
187
|
+
|
188
|
+
Sage example in ./linsolve.tex, line 1562::
|
189
|
+
|
190
|
+
sage: set_random_seed(0) # to get reproducible values below
|
191
|
+
|
192
|
+
Sage example in ./linsolve.tex, line 1675::
|
193
|
+
|
194
|
+
sage: A = matrix(RDF, [[1,3,2],[1,2,3],[0,5,2]])
|
195
|
+
|
196
|
+
Sage example in ./linsolve.tex, line 1698::
|
197
|
+
|
198
|
+
sage: A = matrix(RDF,[[1,3,2],[1,2,3],[0,5,2]])
|
199
|
+
sage: mu = 0.56
|
200
|
+
sage: AT = A - mu*identity_matrix(RDF,3)
|
201
|
+
sage: X = vector(RDF,[1 for i in range(0,A.nrows())])
|
202
|
+
sage: lam_old = 0
|
203
|
+
sage: for i in range(1,1000): # abs tol 1e-9
|
204
|
+
....: Z = AT.solve_right(X)
|
205
|
+
....: X = Z/Z.norm()
|
206
|
+
....: lam = X.dot_product(A*X)
|
207
|
+
....: s = abs(lam - lam_old)
|
208
|
+
....: print("{i} s={s} lambda={lam}".format(i=i, s=s, lam=lam))
|
209
|
+
....: lam_old = lam
|
210
|
+
....: if s<1.e-10:
|
211
|
+
....: break
|
212
|
+
1 s=0.56423627407 lambda=0.56423627407
|
213
|
+
2 s=0.00371649959176 lambda=0.560519774478
|
214
|
+
3 s=2.9833340176e-07 lambda=0.560519476145
|
215
|
+
4 s=3.30288019157e-11 lambda=0.560519476112
|
216
|
+
sage: X # abs tol 1e-15
|
217
|
+
(0.9276845629439007, 0.10329475725387141, -0.3587917847435305)
|
218
|
+
|
219
|
+
Sage example in ./linsolve.tex, line 1724::
|
220
|
+
|
221
|
+
sage: A*X-lam*X # abs tol 1e-14
|
222
|
+
(2.886579864025407e-15, 1.672273430841642e-15, 8.326672684688674e-15)
|
223
|
+
|
224
|
+
Sage example in ./linsolve.tex, line 1801::
|
225
|
+
|
226
|
+
sage: m = matrix(RDF, [[1,2,3,4],[1,0,2,6],[1,8,4,-2],[1,5,-10,-20]])
|
227
|
+
sage: Aref = transpose(m)*m
|
228
|
+
sage: A = copy(Aref)
|
229
|
+
sage: for i in range(0,20):
|
230
|
+
....: Q, R = A.QR()
|
231
|
+
....: A = R*Q
|
232
|
+
|
233
|
+
Sage example in ./linsolve.tex, line 1835::
|
234
|
+
|
235
|
+
sage: Aref.eigenvalues() # abs tol 1e-12
|
236
|
+
[585.0305586200212, 92.91426499150643, 0.03226690899408103, 4.022909479477674]
|
237
|
+
|
238
|
+
Sage example in ./linsolve.tex, line 1895::
|
239
|
+
|
240
|
+
sage: A = matrix(RDF, [[1,3,2],[1,2,3],[0,5,2]])
|
241
|
+
sage: eigen_vals, eigen_vects = A.eigenmatrix_right()
|
242
|
+
sage: eigen_vals # abs tol 1e-12
|
243
|
+
[ 6.39294791648918 0.0 0.0]
|
244
|
+
[ 0.0 0.560519476111939 0.0]
|
245
|
+
[ 0.0 0.0 -1.9534673926011215]
|
246
|
+
sage: eigen_vects # abs tol 2e-15
|
247
|
+
[ 0.5424840601106511 0.9276845629439008 0.09834254667424457]
|
248
|
+
[ 0.5544692861094349 0.10329475725386986 -0.617227053099068]
|
249
|
+
[ 0.6310902116870117 -0.3587917847435306 0.780614827194734]
|
250
|
+
|
251
|
+
Sage example in ./linsolve.tex, line 1939::
|
252
|
+
|
253
|
+
sage: def pol2companion(p):
|
254
|
+
....: n = len(p)
|
255
|
+
....: m = matrix(RDF,n)
|
256
|
+
....: for i in range(1,n):
|
257
|
+
....: m[i,i-1]=1
|
258
|
+
....: m.set_column(n-1,-p)
|
259
|
+
....: return m
|
260
|
+
|
261
|
+
Sage example in ./linsolve.tex, line 1965::
|
262
|
+
|
263
|
+
sage: q = vector(RDF,[1,-1,2,3,5,-1,10,11])
|
264
|
+
sage: comp = pol2companion(q); comp
|
265
|
+
[ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0]
|
266
|
+
[ 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0]
|
267
|
+
[ 0.0 1.0 0.0 0.0 0.0 0.0 0.0 -2.0]
|
268
|
+
[ 0.0 0.0 1.0 0.0 0.0 0.0 0.0 -3.0]
|
269
|
+
[ 0.0 0.0 0.0 1.0 0.0 0.0 0.0 -5.0]
|
270
|
+
[ 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0]
|
271
|
+
[ 0.0 0.0 0.0 0.0 0.0 1.0 0.0 -10.0]
|
272
|
+
[ 0.0 0.0 0.0 0.0 0.0 0.0 1.0 -11.0]
|
273
|
+
sage: roots = comp.eigenvalues(); roots # abs tol 1e-12
|
274
|
+
[0.3475215101190289 + 0.5665505533984981*I, 0.3475215101190289 - 0.5665505533984981*I,
|
275
|
+
0.34502377696179265 + 0.43990870238588275*I, 0.34502377696179265 - 0.43990870238588275*I,
|
276
|
+
-0.5172576143252197 + 0.5129582067889322*I, -0.5172576143252197 - 0.5129582067889322*I,
|
277
|
+
-1.3669971645459291, -9.983578180965276]
|
278
|
+
|
279
|
+
Sage example in ./linsolve.tex, line 2121::
|
280
|
+
|
281
|
+
sage: reset()
|
282
|
+
|
283
|
+
Sage example in ./linsolve.tex, line 2124::
|
284
|
+
|
285
|
+
sage: def eval(P, x):
|
286
|
+
....: if len(P) == 0:
|
287
|
+
....: return 0
|
288
|
+
....: else:
|
289
|
+
....: return P[0]+x*eval(P[1:],x)
|
290
|
+
|
291
|
+
Sage example in ./linsolve.tex, line 2133::
|
292
|
+
|
293
|
+
sage: def pscal(P, Q, lx):
|
294
|
+
....: return float(sum(eval(P,s)*eval(Q,s) for s in lx))
|
295
|
+
|
296
|
+
Sage example in ./linsolve.tex, line 2139::
|
297
|
+
|
298
|
+
sage: def padd(P, a, Q):
|
299
|
+
....: for i in range(0,len(Q)):
|
300
|
+
....: P[i] += a*Q[i]
|
301
|
+
|
302
|
+
Sage example in ./linsolve.tex, line 2149::
|
303
|
+
|
304
|
+
sage: class BadParamsforOrthop(Exception):
|
305
|
+
....: def __init__(self, degreeplusone, npoints):
|
306
|
+
....: self.deg = degreeplusone - 1
|
307
|
+
....: self.np = npoints
|
308
|
+
....: def __str__(self):
|
309
|
+
....: return "degree: " + str(self.deg) + \
|
310
|
+
....: " nb. points: " + repr(self.np)
|
311
|
+
|
312
|
+
Sage example in ./linsolve.tex, line 2160::
|
313
|
+
|
314
|
+
sage: def orthopoly(n, x):
|
315
|
+
....: if n > len(x):
|
316
|
+
....: raise BadParamsforOrthop(n, len(x))
|
317
|
+
....: orth = [[1./sqrt(float(len(x)))]]
|
318
|
+
....: for p in range(1,n):
|
319
|
+
....: nextp = copy(orth[p-1])
|
320
|
+
....: nextp.insert(0,0)
|
321
|
+
....: s = []
|
322
|
+
....: for i in range(p-1,max(p-3,-1),-1):
|
323
|
+
....: s.append(pscal(nextp, orth[i], x))
|
324
|
+
....: j = 0
|
325
|
+
....: for i in range(p-1,max(p-3,-1),-1):
|
326
|
+
....: padd(nextp, -s[j], orth[i])
|
327
|
+
....: j += 1
|
328
|
+
....: norm = sqrt(pscal(nextp, nextp, x))
|
329
|
+
....: nextpn = [nextp[i]/norm for i in range(len(nextp))]
|
330
|
+
....: orth.append(nextpn)
|
331
|
+
....: return orth
|
332
|
+
|
333
|
+
Sage example in ./linsolve.tex, line 2209::
|
334
|
+
|
335
|
+
sage: set_random_seed(3) # to get reproducible values below
|
336
|
+
|
337
|
+
Sage example in ./linsolve.tex, line 2212::
|
338
|
+
|
339
|
+
sage: L = 40
|
340
|
+
sage: X = [100*float(i)/L for i in range(40)]
|
341
|
+
sage: Y = [float(1/(1+25*X[i]^2)+0.25*random()) for i in range(40)]
|
342
|
+
sage: n = 15; orth = orthopoly(n, X)
|
343
|
+
|
344
|
+
Sage example in ./linsolve.tex, line 2222::
|
345
|
+
|
346
|
+
sage: coeff = [sum(Y[j]*eval(orth[i],X[j]) for j in
|
347
|
+
....: range(0,len(X))) for i in range(0,n)]
|
348
|
+
|
349
|
+
Sage example in ./linsolve.tex, line 2230::
|
350
|
+
|
351
|
+
sage: polmin = [0 for i in range(0,n)]
|
352
|
+
sage: for i in range(0,n):
|
353
|
+
....: padd(polmin, coeff[i], orth[i])
|
354
|
+
sage: p = lambda x: eval(polmin, x)
|
355
|
+
sage: plot(p(x), x, 0, X[len(X)-1])
|
356
|
+
Graphics object consisting of 1 graphics primitive
|
357
|
+
|
358
|
+
Sage example in ./linsolve.tex, line 2609::
|
359
|
+
|
360
|
+
sage: from scipy.sparse.linalg import factorized
|
361
|
+
sage: from scipy.sparse import lil_matrix
|
362
|
+
sage: from numpy import array
|
363
|
+
sage: n = 200
|
364
|
+
sage: n2 = n*n
|
365
|
+
sage: A = lil_matrix((n2, n2))
|
366
|
+
sage: h2 = 1./float((n+1)^2)
|
367
|
+
sage: for i in range(0,n2):
|
368
|
+
....: A[i,i]=4*h2+1.
|
369
|
+
....: if i+1<n2: A[i,int(i+1)]=-h2
|
370
|
+
....: if i>0: A[i,int(i-1)]=-h2
|
371
|
+
....: if i+n<n2: A[i,int(i+n)]=-h2
|
372
|
+
....: if i-n>=0: A[i,int(i-n)]=-h2
|
373
|
+
sage: Acsc = A.tocsc()
|
374
|
+
sage: b = array([1 for i in range(0,n2)])
|
375
|
+
sage: solve = factorized(Acsc) # LU factorization
|
376
|
+
sage: S = solve(b) # resolution
|
377
|
+
|
378
|
+
Sage example in ./linsolve.tex, line 2784::
|
379
|
+
|
380
|
+
sage: from numpy.random import seed
|
381
|
+
sage: seed(0) # to get reproducible values below
|
382
|
+
|
383
|
+
Sage example in ./linsolve.tex, line 2828::
|
384
|
+
|
385
|
+
sage: from scipy import sparse
|
386
|
+
sage: from numpy.linalg import *
|
387
|
+
sage: from numpy import array
|
388
|
+
sage: from numpy.random import rand
|
389
|
+
sage: def power(A, x, N): # power iteration
|
390
|
+
....: for i in range(N):
|
391
|
+
....: y = A*x
|
392
|
+
....: z = y/norm(y)
|
393
|
+
....: lam = sum(x*y)
|
394
|
+
....: s = norm(x-z)
|
395
|
+
....: print("{i} s={s} lambda={lam}".format(i=i, s=s, lam=lam))
|
396
|
+
....: if s < 1e-3:
|
397
|
+
....: break
|
398
|
+
....: x = z
|
399
|
+
....: return x
|
400
|
+
sage: n = 1000
|
401
|
+
sage: m = 5
|
402
|
+
sage: # build a stochastic matrix of size n
|
403
|
+
sage: # with m nonzero coefficients per row
|
404
|
+
sage: A1 = sparse.lil_matrix((n, n))
|
405
|
+
sage: for i in range(0,n):
|
406
|
+
....: for j in range(0,m):
|
407
|
+
....: l = int(n*rand())
|
408
|
+
....: A1[l,i] = rand()
|
409
|
+
sage: for i in range(0,n):
|
410
|
+
....: s = sum(A1[i,0:n])
|
411
|
+
....: A1[i,0:n] /= s
|
412
|
+
sage: At = A1.transpose().tocsc()
|
413
|
+
sage: x = array([rand() for i in range(0,n)])
|
414
|
+
sage: # compute the dominant eigenvalue
|
415
|
+
sage: # and the associated eigenvector
|
416
|
+
sage: y = power(At, x, 5) # rel tol 1e-10
|
417
|
+
0 s=17.0241218112 lambda=235.567796432
|
418
|
+
1 s=0.39337173784 lambda=0.908668201953
|
419
|
+
2 s=0.230865716856 lambda=0.967356896036
|
420
|
+
3 s=0.134156683993 lambda=0.986660315554
|
421
|
+
4 s=0.0789423487458 lambda=0.995424635219
|
422
|
+
"""
|
@@ -0,0 +1,235 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-repl
|
2
|
+
# sage.doctest: needs sage.graphs sage.numerical.mip
|
3
|
+
"""
|
4
|
+
This file (./lp_doctest.sage) was *autogenerated* from ./lp.tex,
|
5
|
+
with sagetex.sty version 2011/05/27 v2.3.1.
|
6
|
+
It contains the contents of all the sageexample environments from this file.
|
7
|
+
You should be able to doctest this file with:
|
8
|
+
sage -t ./lp_doctest.sage
|
9
|
+
It is always safe to delete this file; it is not used in typesetting your
|
10
|
+
document.
|
11
|
+
|
12
|
+
Sage example in ./lp.tex, line 14::
|
13
|
+
|
14
|
+
sage: set_random_seed(158888)
|
15
|
+
sage: sage.numerical.backends.generic_backend.default_solver = "Glpk"
|
16
|
+
|
17
|
+
Sage example in ./lp.tex, line 124::
|
18
|
+
|
19
|
+
sage: p = MixedIntegerLinearProgram()
|
20
|
+
|
21
|
+
Sage example in ./lp.tex, line 137::
|
22
|
+
|
23
|
+
sage: x, y, z = p['x'], p['y'], p['z']
|
24
|
+
sage: p.set_min(x, 0)
|
25
|
+
sage: p.set_min(y, 0)
|
26
|
+
sage: p.set_min(z, 0)
|
27
|
+
|
28
|
+
Sage example in ./lp.tex, line 154::
|
29
|
+
|
30
|
+
sage: p.set_objective( x + y + 3*z )
|
31
|
+
|
32
|
+
Sage example in ./lp.tex, line 166::
|
33
|
+
|
34
|
+
sage: p.add_constraint( x + 2*y <= 4 )
|
35
|
+
sage: p.add_constraint( 5*z - y <= 8 )
|
36
|
+
|
37
|
+
Sage example in ./lp.tex, line 180::
|
38
|
+
|
39
|
+
sage: p.solve() # abs tol 1e-10
|
40
|
+
8.8
|
41
|
+
|
42
|
+
Sage example in ./lp.tex, line 194::
|
43
|
+
|
44
|
+
sage: p.get_values(x), p.get_values(y), p.get_values(z) # abs tol 1e-10
|
45
|
+
(4.0, 0.0, 1.6)
|
46
|
+
|
47
|
+
Sage example in ./lp.tex, line 214::
|
48
|
+
|
49
|
+
sage: x = p.new_variable()
|
50
|
+
|
51
|
+
Sage example in ./lp.tex, line 224::
|
52
|
+
|
53
|
+
sage: p.add_constraint( x[1] + x[12] - x[14] >= 8 )
|
54
|
+
|
55
|
+
Sage example in ./lp.tex, line 236::
|
56
|
+
|
57
|
+
sage: p.add_constraint( x["i_am_a_valid_index"] + x["a",pi] <= 3 )
|
58
|
+
|
59
|
+
Sage example in ./lp.tex, line 248::
|
60
|
+
|
61
|
+
sage: p.add_constraint( p.sum(
|
62
|
+
....: x[i,j] for i in range(4) for j in range(4)) <= 1 )
|
63
|
+
|
64
|
+
Sage example in ./lp.tex, line 287::
|
65
|
+
|
66
|
+
sage: p = MixedIntegerLinearProgram()
|
67
|
+
sage: p.set_objective( p[3] + p[2] )
|
68
|
+
sage: p.add_constraint( p[3] <= 5 )
|
69
|
+
|
70
|
+
Sage example in ./lp.tex, line 293::
|
71
|
+
|
72
|
+
sage: p.solve()
|
73
|
+
Traceback (most recent call last):
|
74
|
+
...
|
75
|
+
MIPSolverException: GLPK: The LP (relaxation) problem has no dual feasible solution
|
76
|
+
|
77
|
+
Sage example in ./lp.tex, line 301::
|
78
|
+
|
79
|
+
sage: p.add_constraint( p[2] <= 8 )
|
80
|
+
sage: p.solve() # abs tol 1e-10
|
81
|
+
13.0
|
82
|
+
|
83
|
+
Sage example in ./lp.tex, line 306::
|
84
|
+
|
85
|
+
sage: p.add_constraint( p[3] >= 6 ); p.solve()
|
86
|
+
Traceback (most recent call last):
|
87
|
+
...
|
88
|
+
MIPSolverException: GLPK: Problem has no feasible solution
|
89
|
+
|
90
|
+
Sage example in ./lp.tex, line 319::
|
91
|
+
|
92
|
+
sage: p = MixedIntegerLinearProgram()
|
93
|
+
sage: p.set_objective( p[3] )
|
94
|
+
sage: p.add_constraint( p[3] <= 4.75 ); p.add_constraint( p[3] >= 4.25 )
|
95
|
+
sage: p.solve() # abs tol 1e-10
|
96
|
+
4.75
|
97
|
+
sage: p.set_integer(p[3]); p.solve()
|
98
|
+
Traceback (most recent call last):
|
99
|
+
...
|
100
|
+
MIPSolverException: GLPK: Problem has no feasible solution
|
101
|
+
|
102
|
+
Sage example in ./lp.tex, line 360::
|
103
|
+
|
104
|
+
sage: try:
|
105
|
+
....: p.solve()
|
106
|
+
....: print("The problem has a solution!")
|
107
|
+
....: except RuntimeError:
|
108
|
+
....: print("The problem is infeasible!")
|
109
|
+
The problem is infeasible!
|
110
|
+
|
111
|
+
Sage example in ./lp.tex, line 429::
|
112
|
+
|
113
|
+
sage: C = 1
|
114
|
+
sage: L = ["Pan", "Book", "Knife", "Flask", "Flashlight"]
|
115
|
+
sage: w = [0.57,0.35,0.98,0.39,0.08]; u = [0.57,0.26,0.29,0.85,0.23]
|
116
|
+
sage: weight = {}; utility = {}
|
117
|
+
sage: for o in L:
|
118
|
+
....: weight[o] = w[L.index(o)]; utility[o] = u[L.index(o)]
|
119
|
+
|
120
|
+
Sage example in ./lp.tex, line 451::
|
121
|
+
|
122
|
+
sage: p = MixedIntegerLinearProgram()
|
123
|
+
sage: taken = p.new_variable( binary = True )
|
124
|
+
sage: p.add_constraint(
|
125
|
+
....: p.sum( weight[o] * taken[o] for o in L ) <= C )
|
126
|
+
sage: p.set_objective(
|
127
|
+
....: p.sum( utility[o] * taken[o] for o in L ) )
|
128
|
+
sage: p.solve() # abs tol 1e-10
|
129
|
+
1.4199999999999999
|
130
|
+
sage: taken = p.get_values(taken)
|
131
|
+
|
132
|
+
Sage example in ./lp.tex, line 470::
|
133
|
+
|
134
|
+
sage: sum( weight[o] * taken[o] for o in L ) # abs tol 1e-10
|
135
|
+
0.960000000000000
|
136
|
+
|
137
|
+
Sage example in ./lp.tex, line 482::
|
138
|
+
|
139
|
+
sage: taken["Flask"]
|
140
|
+
1.0
|
141
|
+
|
142
|
+
Sage example in ./lp.tex, line 551::
|
143
|
+
|
144
|
+
sage: g = graphs.PetersenGraph()
|
145
|
+
sage: p = MixedIntegerLinearProgram()
|
146
|
+
sage: matching = p.new_variable(binary = True)
|
147
|
+
|
148
|
+
Sage example in ./lp.tex, line 561::
|
149
|
+
|
150
|
+
sage: p.set_objective(p.sum(matching[e]
|
151
|
+
....: for e in g.edges(sort=True, labels = False)))
|
152
|
+
|
153
|
+
Sage example in ./lp.tex, line 573::
|
154
|
+
|
155
|
+
sage: for v in g:
|
156
|
+
....: p.add_constraint(p.sum(matching[e]
|
157
|
+
....: for e in g.edges_incident(v, labels = False)) <= 1)
|
158
|
+
sage: p.solve()
|
159
|
+
5.0
|
160
|
+
|
161
|
+
Sage example in ./lp.tex, line 586::
|
162
|
+
|
163
|
+
sage: matching = p.get_values(matching, convert=ZZ, tolerance=1e-3)
|
164
|
+
sage: sorted(e for e, b in matching.items() if b == 1)
|
165
|
+
[(0, 1), (2, 3), (4, 9), (5, 7), (6, 8)]
|
166
|
+
|
167
|
+
Sage example in ./lp.tex, line 665::
|
168
|
+
|
169
|
+
sage: g = graphs.ChvatalGraph()
|
170
|
+
sage: g = g.minimum_outdegree_orientation()
|
171
|
+
|
172
|
+
Sage example in ./lp.tex, line 669::
|
173
|
+
|
174
|
+
sage: p = MixedIntegerLinearProgram()
|
175
|
+
sage: f = p.new_variable()
|
176
|
+
sage: s, t = 0, 2
|
177
|
+
|
178
|
+
Sage example in ./lp.tex, line 674::
|
179
|
+
|
180
|
+
sage: for v in g:
|
181
|
+
....: if v == s or v == t: continue
|
182
|
+
....: p.add_constraint(
|
183
|
+
....: p.sum(f[v,u] for u in g.neighbors_out(v)) ==
|
184
|
+
....: p.sum(f[u,v] for u in g.neighbors_in(v)))
|
185
|
+
|
186
|
+
Sage example in ./lp.tex, line 681::
|
187
|
+
|
188
|
+
sage: for e in g.edges(sort=True, labels = False): p.add_constraint( f[e] <= 1 )
|
189
|
+
|
190
|
+
Sage example in ./lp.tex, line 684::
|
191
|
+
|
192
|
+
sage: p.set_objective(p.sum( f[s,u] for u in g.neighbors_out(s)))
|
193
|
+
|
194
|
+
Sage example in ./lp.tex, line 687::
|
195
|
+
|
196
|
+
sage: p.solve()
|
197
|
+
2.0
|
198
|
+
|
199
|
+
Sage example in ./lp.tex, line 847::
|
200
|
+
|
201
|
+
sage: g = graphs.Grid2dGraph(4, 6)
|
202
|
+
sage: p = MixedIntegerLinearProgram()
|
203
|
+
sage: b = p.new_variable(binary = True)
|
204
|
+
|
205
|
+
Sage example in ./lp.tex, line 861::
|
206
|
+
|
207
|
+
sage: B = lambda x,y : b[frozenset([x,y])]
|
208
|
+
|
209
|
+
Sage example in ./lp.tex, line 874::
|
210
|
+
|
211
|
+
sage: for u in g:
|
212
|
+
....: p.add_constraint( p.sum( B(u,v) for v in g.neighbors(u) ) == 2 )
|
213
|
+
|
214
|
+
Sage example in ./lp.tex, line 892::
|
215
|
+
|
216
|
+
sage: p.solve()
|
217
|
+
0.0
|
218
|
+
sage: h = Graph()
|
219
|
+
sage: h.add_edges( [(u,v) for u, v in g.edges(sort=True, labels = False)
|
220
|
+
....: if p.get_values(B(u,v), convert=ZZ, tolerance=1e-3) == 1] )
|
221
|
+
|
222
|
+
Sage example in ./lp.tex, line 906::
|
223
|
+
|
224
|
+
sage: while not h.is_connected():
|
225
|
+
....: S = h.connected_components(sort=False)[0]
|
226
|
+
....: p.add_constraint(
|
227
|
+
....: p.sum( B(u,v) for u,v
|
228
|
+
....: in g.edge_boundary(S, labels = False))
|
229
|
+
....: >= 2)
|
230
|
+
....: zero = p.solve()
|
231
|
+
....: h = Graph()
|
232
|
+
....: h.add_edges( [(u,v)
|
233
|
+
....: for u,v in g.edges(sort=True, labels = False)
|
234
|
+
....: if p.get_values(B(u,v), convert=ZZ, tolerance=1e-3) == 1] )
|
235
|
+
"""
|