• API
• FAQ
• Tools
• Archive
SHARE
TWEET

Untitled

a guest Jul 16th, 2019 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. {
2.   "cells": [
3.     {
5.         "trusted": true
6.       },
7.       "cell_type": "code",
8.       "source": "using LinearAlgebra\nusing RowEchelon\nusing BenchmarkTools",
9.       "execution_count": 1,
10.       "outputs": []
11.     },
12.     {
14.         "trusted": true
15.       },
16.       "cell_type": "code",
17.       "source": "B = Float64[\n    1 2 1 3\n    4 5 1 6\n    7 8 1 9\n    1 2 2 3\n]\nB = Matrix(B')",
18.       "execution_count": 2,
19.       "outputs": [
20.         {
21.           "output_type": "execute_result",
22.           "execution_count": 2,
23.           "data": {
24.             "text/plain": "4×4 Array{Float64,2}:\n 1.0  4.0  7.0  1.0\n 2.0  5.0  8.0  2.0\n 1.0  1.0  1.0  2.0\n 3.0  6.0  9.0  3.0"
25.           },
27.         }
28.       ]
29.     },
30.     {
32.         "trusted": true
33.       },
34.       "cell_type": "code",
35.       "source": "qr(B)",
36.       "execution_count": 3,
37.       "outputs": [
38.         {
39.           "output_type": "execute_result",
40.           "execution_count": 3,
41.           "data": {
42.             "text/plain": "LinearAlgebra.QRCompactWY{Float64,Array{Float64,2}}\nQ factor:\n4×4 LinearAlgebra.QRCompactWYQ{Float64,Array{Float64,2}}:\n -0.258199   0.774597  -0.562294  -0.130991\n -0.516398   0.258199   0.693285  -0.431304\n -0.258199  -0.516398  -0.431304  -0.693285\n -0.774597  -0.258199  -0.130991   0.562294\nR factor:\n4×4 Array{Float64,2}:\n -3.87298  -8.52056  -13.1681       -4.13118 \n  0.0       2.32379    4.64758      -0.516398\n  0.0       0.0        4.17184e-15  -0.431304\n  0.0       0.0        0.0          -0.693285"
43.           },
45.         }
46.       ]
47.     },
48.     {
50.         "trusted": true
51.       },
52.       "cell_type": "code",
53.       "source": "rref(B)",
54.       "execution_count": 4,
55.       "outputs": [
56.         {
57.           "output_type": "execute_result",
58.           "execution_count": 4,
59.           "data": {
60.             "text/plain": "4×4 Array{Float64,2}:\n 1.0  0.0  -1.0  0.0\n 0.0  1.0   2.0  0.0\n 0.0  0.0   0.0  1.0\n 0.0  0.0   0.0  0.0"
61.           },
63.         }
64.       ]
65.     },
66.     {
68.         "trusted": true
69.       },
70.       "cell_type": "code",
71.       "source": "@benchmark qr(B)",
72.       "execution_count": 5,
73.       "outputs": [
74.         {
75.           "output_type": "execute_result",
76.           "execution_count": 5,
77.           "data": {
78.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  656 bytes\n  allocs estimate:  4\n  --------------\n  minimum time:     3.441 μs (0.00% GC)\n  median time:      3.791 μs (0.00% GC)\n  mean time:        4.592 μs (16.16% GC)\n  maximum time:     5.622 ms (99.83% GC)\n  --------------\n  samples:          10000\n  evals/sample:     8"
79.           },
81.         }
82.       ]
83.     },
84.     {
86.         "trusted": true
87.       },
88.       "cell_type": "code",
89.       "source": "@benchmark rref(B)",
90.       "execution_count": 6,
91.       "outputs": [
92.         {
93.           "output_type": "execute_result",
94.           "execution_count": 6,
95.           "data": {
96.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  1.02 KiB\n  allocs estimate:  9\n  --------------\n  minimum time:     468.913 ns (0.00% GC)\n  median time:      483.194 ns (0.00% GC)\n  mean time:        594.480 ns (12.76% GC)\n  maximum time:     233.954 μs (99.62% GC)\n  --------------\n  samples:          10000\n  evals/sample:     196"
97.           },
99.         }
100.       ]
101.     },
102.     {
104.         "trusted": true
105.       },
106.       "cell_type": "code",
107.       "source": "function equilibrium_qr(A::AbstractMatrix)\n    @assert size(A, 1) == size(A, 2)\n    R = qr(A).R\n    n = size(A, 1)\n    v = zeros(eltype(A), n)\n    a = abs.(diag(R))\n    m, k = findmin(a)\n    v[k] = 1\n    for i in k-1:-1:1\n        s = zero(eltype(A))\n        for j in i+1:n\n            s += R[i,j] * v[j]\n        end\n        v[i] = -s / R[i,i]\n    end\n    return v ./ norm(v)\nend",
108.       "execution_count": 7,
109.       "outputs": [
110.         {
111.           "output_type": "execute_result",
112.           "execution_count": 7,
113.           "data": {
114.             "text/plain": "equilibrium_qr (generic function with 1 method)"
115.           },
117.         }
118.       ]
119.     },
120.     {
122.         "trusted": true
123.       },
124.       "cell_type": "code",
125.       "source": "function equilibrium_rref(A::AbstractMatrix)\n    @assert size(A, 1) == size(A, 2)\n    R = rref!(copy(A), size(A,1)*eps(norm(A,Inf)))\n    n = size(A, 1)\n    v = zeros(eltype(A), n)\n    a = abs.(diag(R))\n    m, k = findmin(a)\n    v[k] = 1\n    for i in k-1:-1:1\n        s = zero(eltype(A))\n        for j in i+1:n\n            s += R[i,j] * v[j]\n        end\n        v[i] = -s / R[i,i]\n    end\n    return v ./ norm(v)\nend",
126.       "execution_count": 8,
127.       "outputs": [
128.         {
129.           "output_type": "execute_result",
130.           "execution_count": 8,
131.           "data": {
132.             "text/plain": "equilibrium_rref (generic function with 1 method)"
133.           },
135.         }
136.       ]
137.     },
138.     {
140.         "trusted": true
141.       },
142.       "cell_type": "code",
143.       "source": "@show x = equilibrium_qr(B)\nextrema(B*x)",
144.       "execution_count": 9,
145.       "outputs": [
146.         {
147.           "output_type": "stream",
148.           "text": "x = equilibrium_qr(B) = [0.408248, -0.816497, 0.408248, 0.0]\n",
149.           "name": "stdout"
150.         },
151.         {
152.           "output_type": "execute_result",
153.           "execution_count": 9,
154.           "data": {
155.             "text/plain": "(-6.661338147750939e-16, 1.7763568394002505e-15)"
156.           },
158.         }
159.       ]
160.     },
161.     {
163.         "trusted": true
164.       },
165.       "cell_type": "code",
166.       "source": "@show y = equilibrium_rref(B)\nextrema(B*y)",
167.       "execution_count": 10,
168.       "outputs": [
169.         {
170.           "output_type": "stream",
171.           "text": "y = equilibrium_rref(B) = [0.408248, -0.816497, 0.408248, 0.0]\n",
172.           "name": "stdout"
173.         },
174.         {
175.           "output_type": "execute_result",
176.           "execution_count": 10,
177.           "data": {
178.             "text/plain": "(0.0, 0.0)"
179.           },
181.         }
182.       ]
183.     },
184.     {
186.         "trusted": true
187.       },
188.       "cell_type": "code",
189.       "source": "@show z = nullspace(B)\nextrema(B*z)",
190.       "execution_count": 11,
191.       "outputs": [
192.         {
193.           "output_type": "stream",
194.           "text": "z = nullspace(B) = [0.408248; -0.816497; 0.408248; 7.77156e-16]\n",
195.           "name": "stdout"
196.         },
197.         {
198.           "output_type": "execute_result",
199.           "execution_count": 11,
200.           "data": {
201.             "text/plain": "(-1.1102230246251565e-16, 9.992007221626409e-16)"
202.           },
204.         }
205.       ]
206.     },
207.     {
209.         "trusted": true
210.       },
211.       "cell_type": "code",
212.       "source": "@benchmark equilibrium_qr(B)",
213.       "execution_count": 12,
214.       "outputs": [
215.         {
216.           "output_type": "execute_result",
217.           "execution_count": 12,
218.           "data": {
219.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  1.28 KiB\n  allocs estimate:  9\n  --------------\n  minimum time:     3.791 μs (0.00% GC)\n  median time:      3.966 μs (0.00% GC)\n  mean time:        5.706 μs (14.74% GC)\n  maximum time:     6.155 ms (99.82% GC)\n  --------------\n  samples:          10000\n  evals/sample:     8"
220.           },
222.         }
223.       ]
224.     },
225.     {
227.         "trusted": true
228.       },
229.       "cell_type": "code",
230.       "source": "@benchmark equilibrium_rref(B)",
231.       "execution_count": 13,
232.       "outputs": [
233.         {
234.           "output_type": "execute_result",
235.           "execution_count": 13,
236.           "data": {
237.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  1.45 KiB\n  allocs estimate:  13\n  --------------\n  minimum time:     663.571 ns (0.00% GC)\n  median time:      698.348 ns (0.00% GC)\n  mean time:        915.809 ns (12.82% GC)\n  maximum time:     298.575 μs (99.68% GC)\n  --------------\n  samples:          10000\n  evals/sample:     161"
238.           },
240.         }
241.       ]
242.     },
243.     {
245.         "trusted": true
246.       },
247.       "cell_type": "code",
248.       "source": "@benchmark nullspace(B)",
249.       "execution_count": 14,
250.       "outputs": [
251.         {
252.           "output_type": "execute_result",
253.           "execution_count": 14,
254.           "data": {
255.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  3.63 KiB\n  allocs estimate:  12\n  --------------\n  minimum time:     6.251 μs (0.00% GC)\n  median time:      6.905 μs (0.00% GC)\n  mean time:        10.602 μs (16.89% GC)\n  maximum time:     11.580 ms (99.86% GC)\n  --------------\n  samples:          10000\n  evals/sample:     5"
256.           },
258.         }
259.       ]
260.     },
261.     {
263.         "trusted": true
264.       },
265.       "cell_type": "code",
266.       "source": "n = 30\n# k = rand(1:n)\nk = n ÷ 2\n@show n, k\nQ = randn(n,n)\ntmp = randn(k-1)\nQ[:,k] = Q[:,1:k-1]*tmp\nsol = [tmp[1:k-1]; -1.0; zeros(n-k)]\nsol = sol/norm(sol)\nextrema(Q*sol)",
267.       "execution_count": 15,
268.       "outputs": [
269.         {
270.           "output_type": "stream",
271.           "text": "(n, k) = (30, 15)\n",
272.           "name": "stdout"
273.         },
274.         {
275.           "output_type": "execute_result",
276.           "execution_count": 15,
277.           "data": {
278.             "text/plain": "(-4.440892098500626e-16, 4.440892098500626e-16)"
279.           },
281.         }
282.       ]
283.     },
284.     {
286.         "trusted": true
287.       },
288.       "cell_type": "code",
289.       "source": "a = equilibrium_qr(Q)\nextrema(Q*a)",
290.       "execution_count": 16,
291.       "outputs": [
292.         {
293.           "output_type": "execute_result",
294.           "execution_count": 16,
295.           "data": {
296.             "text/plain": "(-4.996003610813204e-16, 5.551115123125783e-16)"
297.           },
299.         }
300.       ]
301.     },
302.     {
304.         "trusted": true
305.       },
306.       "cell_type": "code",
307.       "source": "b = equilibrium_rref(Q)\nextrema(Q*b)",
308.       "execution_count": 17,
309.       "outputs": [
310.         {
311.           "output_type": "execute_result",
312.           "execution_count": 17,
313.           "data": {
314.             "text/plain": "(-4.440892098500626e-16, 8.881784197001252e-16)"
315.           },
317.         }
318.       ]
319.     },
320.     {
322.         "trusted": true
323.       },
324.       "cell_type": "code",
325.       "source": "c = nullspace(Q)\nextrema(Q*c)",
326.       "execution_count": 18,
327.       "outputs": [
328.         {
329.           "output_type": "execute_result",
330.           "execution_count": 18,
331.           "data": {
332.             "text/plain": "(-2.220446049250313e-15, 1.3877787807814457e-15)"
333.           },
335.         }
336.       ]
337.     },
338.     {
340.         "trusted": true
341.       },
342.       "cell_type": "code",
343.       "source": "@benchmark equilibrium_qr(Q)",
344.       "execution_count": 19,
345.       "outputs": [
346.         {
347.           "output_type": "execute_result",
348.           "execution_count": 19,
349.           "data": {
350.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  30.09 KiB\n  allocs estimate:  9\n  --------------\n  minimum time:     296.714 μs (0.00% GC)\n  median time:      356.897 μs (0.00% GC)\n  mean time:        380.742 μs (2.94% GC)\n  maximum time:     70.192 ms (98.22% GC)\n  --------------\n  samples:          10000\n  evals/sample:     1"
351.           },
353.         }
354.       ]
355.     },
356.     {
358.         "trusted": true
359.       },
360.       "cell_type": "code",
361.       "source": "@benchmark equilibrium_rref(Q)",
362.       "execution_count": 20,
363.       "outputs": [
364.         {
365.           "output_type": "execute_result",
366.           "execution_count": 20,
367.           "data": {
368.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  20.97 KiB\n  allocs estimate:  65\n  --------------\n  minimum time:     20.060 μs (0.00% GC)\n  median time:      22.393 μs (0.00% GC)\n  mean time:        31.517 μs (22.87% GC)\n  maximum time:     48.760 ms (99.89% GC)\n  --------------\n  samples:          10000\n  evals/sample:     1"
369.           },
371.         }
372.       ]
373.     },
374.     {
376.         "trusted": true,
377.         "scrolled": false
378.       },
379.       "cell_type": "code",
380.       "source": "@benchmark nullspace(Q)",
381.       "execution_count": 21,
382.       "outputs": [
383.         {
384.           "output_type": "execute_result",
385.           "execution_count": 21,
386.           "data": {
387.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  47.52 KiB\n  allocs estimate:  12\n  --------------\n  minimum time:     293.916 μs (0.00% GC)\n  median time:      322.841 μs (0.00% GC)\n  mean time:        379.750 μs (3.03% GC)\n  maximum time:     52.384 ms (99.23% GC)\n  --------------\n  samples:          10000\n  evals/sample:     1"
388.           },
390.         }
391.       ]
392.     },
393.     {
395.         "trusted": true
396.       },
397.       "cell_type": "code",
398.       "source": "n = 100\n# k = rand(1:n)\nk = n ÷ 2\n@show n, k\nQ = randn(n,n)\ntmp = randn(k-1)\nQ[:,k] = Q[:,1:k-1]*tmp\nsol = [tmp[1:k-1]; -1.0; zeros(n-k)]\nsol = sol/norm(sol)\nextrema(Q*sol)",
399.       "execution_count": 22,
400.       "outputs": [
401.         {
402.           "output_type": "stream",
403.           "text": "(n, k) = (100, 50)\n",
404.           "name": "stdout"
405.         },
406.         {
407.           "output_type": "execute_result",
408.           "execution_count": 22,
409.           "data": {
410.             "text/plain": "(-6.661338147750939e-16, 6.661338147750939e-16)"
411.           },
413.         }
414.       ]
415.     },
416.     {
418.         "trusted": true
419.       },
420.       "cell_type": "code",
421.       "source": "a = equilibrium_qr(Q)\nextrema(Q*a)",
422.       "execution_count": 23,
423.       "outputs": [
424.         {
425.           "output_type": "execute_result",
426.           "execution_count": 23,
427.           "data": {
428.             "text/plain": "(-1.3322676295501878e-15, 1.5543122344752192e-15)"
429.           },
431.         }
432.       ]
433.     },
434.     {
436.         "trusted": true
437.       },
438.       "cell_type": "code",
439.       "source": "b = equilibrium_rref(Q)\nextrema(Q*b)",
440.       "execution_count": 24,
441.       "outputs": [
442.         {
443.           "output_type": "execute_result",
444.           "execution_count": 24,
445.           "data": {
446.             "text/plain": "(-5.10702591327572e-15, 5.10702591327572e-15)"
447.           },
449.         }
450.       ]
451.     },
452.     {
454.         "trusted": true
455.       },
456.       "cell_type": "code",
457.       "source": "c = nullspace(Q)\nextrema(Q*c)",
458.       "execution_count": 25,
459.       "outputs": [
460.         {
461.           "output_type": "execute_result",
462.           "execution_count": 25,
463.           "data": {
464.             "text/plain": "(-2.6645352591003757e-15, 2.886579864025407e-15)"
465.           },
467.         }
468.       ]
469.     },
470.     {
472.         "trusted": true
473.       },
474.       "cell_type": "code",
475.       "source": "@benchmark equilibrium_qr(Q)",
476.       "execution_count": 26,
477.       "outputs": [
478.         {
479.           "output_type": "execute_result",
480.           "execution_count": 26,
481.           "data": {
482.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  216.34 KiB\n  allocs estimate:  13\n  --------------\n  minimum time:     2.656 ms (0.00% GC)\n  median time:      2.949 ms (0.00% GC)\n  mean time:        3.127 ms (1.87% GC)\n  maximum time:     60.029 ms (94.73% GC)\n  --------------\n  samples:          1595\n  evals/sample:     1"
483.           },
485.         }
486.       ]
487.     },
488.     {
490.         "trusted": true
491.       },
492.       "cell_type": "code",
493.       "source": "@benchmark equilibrium_rref(Q)",
494.       "execution_count": 27,
495.       "outputs": [
496.         {
497.           "output_type": "execute_result",
498.           "execution_count": 27,
499.           "data": {
500.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  180.61 KiB\n  allocs estimate:  206\n  --------------\n  minimum time:     513.186 μs (0.00% GC)\n  median time:      542.111 μs (0.00% GC)\n  mean time:        591.065 μs (2.37% GC)\n  maximum time:     49.252 ms (98.73% GC)\n  --------------\n  samples:          8424\n  evals/sample:     1"
501.           },
503.         }
504.       ]
505.     },
506.     {
508.         "trusted": true,
509.         "scrolled": false
510.       },
511.       "cell_type": "code",
512.       "source": "@benchmark nullspace(Q)",
513.       "execution_count": 28,
514.       "outputs": [
515.         {
516.           "output_type": "execute_result",
517.           "execution_count": 28,
518.           "data": {
519.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  483.72 KiB\n  allocs estimate:  15\n  --------------\n  minimum time:     5.191 ms (0.00% GC)\n  median time:      6.131 ms (0.00% GC)\n  mean time:        6.439 ms (1.84% GC)\n  maximum time:     62.886 ms (89.39% GC)\n  --------------\n  samples:          775\n  evals/sample:     1"
520.           },
522.         }
523.       ]
524.     },
525.     {
527.         "trusted": true
528.       },
529.       "cell_type": "code",
530.       "source": "n = 300\n# k = rand(1:n)\nk = n ÷ 2\n@show n, k\nQ = randn(n,n)\ntmp = randn(k-1)\nQ[:,k] = Q[:,1:k-1]*tmp\nsol = [tmp[1:k-1]; -1.0; zeros(n-k)]\nsol = sol/norm(sol)\nextrema(Q*sol)",
531.       "execution_count": 29,
532.       "outputs": [
533.         {
534.           "output_type": "stream",
535.           "text": "(n, k) = (300, 150)\n",
536.           "name": "stdout"
537.         },
538.         {
539.           "output_type": "execute_result",
540.           "execution_count": 29,
541.           "data": {
542.             "text/plain": "(-2.4424906541753444e-15, 1.3322676295501878e-15)"
543.           },
545.         }
546.       ]
547.     },
548.     {
550.         "trusted": true
551.       },
552.       "cell_type": "code",
553.       "source": "a = equilibrium_qr(Q)\nextrema(Q*a)",
554.       "execution_count": 30,
555.       "outputs": [
556.         {
557.           "output_type": "execute_result",
558.           "execution_count": 30,
559.           "data": {
560.             "text/plain": "(-1.7763568394002505e-15, 2.220446049250313e-15)"
561.           },
563.         }
564.       ]
565.     },
566.     {
568.         "trusted": true
569.       },
570.       "cell_type": "code",
571.       "source": "b = equilibrium_rref(Q)\nextrema(Q*b)",
572.       "execution_count": 31,
573.       "outputs": [
574.         {
575.           "output_type": "execute_result",
576.           "execution_count": 31,
577.           "data": {
578.             "text/plain": "(-1.2434497875801753e-14, 1.84297022087776e-14)"
579.           },
581.         }
582.       ]
583.     },
584.     {
586.         "trusted": true
587.       },
588.       "cell_type": "code",
589.       "source": "c = nullspace(Q)\nextrema(Q*c)",
590.       "execution_count": 32,
591.       "outputs": [
592.         {
593.           "output_type": "execute_result",
594.           "execution_count": 32,
595.           "data": {
596.             "text/plain": "(-5.094685062006425e-15, 4.831242609835234e-15)"
597.           },
599.         }
600.       ]
601.     },
602.     {
604.         "trusted": true
605.       },
606.       "cell_type": "code",
607.       "source": "@benchmark equilibrium_qr(Q)",
608.       "execution_count": 33,
609.       "outputs": [
610.         {
611.           "output_type": "execute_result",
612.           "execution_count": 33,
613.           "data": {
614.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  1.55 MiB\n  allocs estimate:  13\n  --------------\n  minimum time:     11.598 ms (0.00% GC)\n  median time:      12.640 ms (0.00% GC)\n  mean time:        13.028 ms (2.26% GC)\n  maximum time:     75.597 ms (82.57% GC)\n  --------------\n  samples:          384\n  evals/sample:     1"
615.           },
617.         }
618.       ]
619.     },
620.     {
622.         "trusted": true
623.       },
624.       "cell_type": "code",
625.       "source": "@benchmark equilibrium_rref(Q)",
626.       "execution_count": 34,
627.       "outputs": [
628.         {
629.           "output_type": "execute_result",
630.           "execution_count": 34,
631.           "data": {
632.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  1.46 MiB\n  allocs estimate:  606\n  --------------\n  minimum time:     16.774 ms (0.00% GC)\n  median time:      17.592 ms (0.00% GC)\n  mean time:        20.066 ms (1.57% GC)\n  maximum time:     72.141 ms (72.59% GC)\n  --------------\n  samples:          249\n  evals/sample:     1"
633.           },
635.         }
636.       ]
637.     },
638.     {
640.         "trusted": true,
641.         "scrolled": true
642.       },
643.       "cell_type": "code",
644.       "source": "@benchmark nullspace(Q)",
645.       "execution_count": 35,
646.       "outputs": [
647.         {
648.           "output_type": "execute_result",
649.           "execution_count": 35,
650.           "data": {
651.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  4.16 MiB\n  allocs estimate:  16\n  --------------\n  minimum time:     53.393 ms (0.00% GC)\n  median time:      57.721 ms (0.00% GC)\n  mean time:        58.873 ms (1.84% GC)\n  maximum time:     110.145 ms (49.05% GC)\n  --------------\n  samples:          85\n  evals/sample:     1"
652.           },
654.         }
655.       ]
656.     },
657.     {
659.         "trusted": true
660.       },
661.       "cell_type": "code",
662.       "source": "n = 1000\n# k = rand(1:n)\nk = n ÷ 2\n@show n, k\nQ = randn(n,n)\ntmp = randn(k-1)\nQ[:,k] = Q[:,1:k-1]*tmp\nsol = [tmp[1:k-1]; -1.0; zeros(n-k)]\nsol = sol/norm(sol)\nextrema(Q*sol)",
663.       "execution_count": 36,
664.       "outputs": [
665.         {
666.           "output_type": "stream",
667.           "text": "(n, k) = (1000, 500)\n",
668.           "name": "stdout"
669.         },
670.         {
671.           "output_type": "execute_result",
672.           "execution_count": 36,
673.           "data": {
674.             "text/plain": "(-2.220446049250313e-15, 2.220446049250313e-15)"
675.           },
677.         }
678.       ]
679.     },
680.     {
682.         "trusted": true
683.       },
684.       "cell_type": "code",
685.       "source": "a = equilibrium_qr(Q)\nextrema(Q*a)",
686.       "execution_count": 37,
687.       "outputs": [
688.         {
689.           "output_type": "execute_result",
690.           "execution_count": 37,
691.           "data": {
692.             "text/plain": "(-2.6645352591003757e-15, 3.1086244689504383e-15)"
693.           },
695.         }
696.       ]
697.     },
698.     {
700.         "trusted": true
701.       },
702.       "cell_type": "code",
703.       "source": "b = equilibrium_rref(Q)\nextrema(Q*b)",
704.       "execution_count": 38,
705.       "outputs": [
706.         {
707.           "output_type": "execute_result",
708.           "execution_count": 38,
709.           "data": {
710.             "text/plain": "(-1.1246559239452836e-13, 7.638334409421077e-14)"
711.           },
713.         }
714.       ]
715.     },
716.     {
718.         "trusted": true
719.       },
720.       "cell_type": "code",
721.       "source": "c = nullspace(Q)\nextrema(Q*c)",
722.       "execution_count": 39,
723.       "outputs": [
724.         {
725.           "output_type": "execute_result",
726.           "execution_count": 39,
727.           "data": {
728.             "text/plain": "(-6.573094430595726e-15, 3.076616599214022e-14)"
729.           },
731.         }
732.       ]
733.     },
734.     {
736.         "trusted": true
737.       },
738.       "cell_type": "code",
739.       "source": "@benchmark equilibrium_qr(Q)",
740.       "execution_count": 40,
741.       "outputs": [
742.         {
743.           "output_type": "execute_result",
744.           "execution_count": 40,
745.           "data": {
746.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  15.84 MiB\n  allocs estimate:  13\n  --------------\n  minimum time:     89.966 ms (0.00% GC)\n  median time:      98.310 ms (2.00% GC)\n  mean time:        102.481 ms (2.73% GC)\n  maximum time:     177.349 ms (29.93% GC)\n  --------------\n  samples:          50\n  evals/sample:     1"
747.           },
749.         }
750.       ]
751.     },
752.     {
754.         "trusted": true
755.       },
756.       "cell_type": "code",
757.       "source": "@benchmark equilibrium_rref(Q)",
758.       "execution_count": 41,
759.       "outputs": [
760.         {
761.           "output_type": "execute_result",
762.           "execution_count": 41,
763.           "data": {
764.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  15.59 MiB\n  allocs estimate:  2006\n  --------------\n  minimum time:     5.239 s (0.00% GC)\n  median time:      5.239 s (0.00% GC)\n  mean time:        5.239 s (0.00% GC)\n  maximum time:     5.239 s (0.00% GC)\n  --------------\n  samples:          1\n  evals/sample:     1"
765.           },
767.         }
768.       ]
769.     },
770.     {
772.         "trusted": true
773.       },
774.       "cell_type": "code",
775.       "source": "@benchmark nullspace(Q)",
776.       "execution_count": 42,
777.       "outputs": [
778.         {
779.           "output_type": "execute_result",
780.           "execution_count": 42,
781.           "data": {
782.             "text/plain": "BenchmarkTools.Trial: \n  memory estimate:  45.91 MiB\n  allocs estimate:  16\n  --------------\n  minimum time:     872.940 ms (0.46% GC)\n  median time:      914.451 ms (0.83% GC)\n  mean time:        918.522 ms (2.72% GC)\n  maximum time:     984.217 ms (7.14% GC)\n  --------------\n  samples:          6\n  evals/sample:     1"
783.           },
785.         }
786.       ]
787.     },
788.     {
790.         "trusted": true
791.       },
792.       "cell_type": "code",
793.       "source": "",
794.       "execution_count": null,
795.       "outputs": []
796.     }
797.   ],
799.     "kernelspec": {
800.       "name": "julia-1.1",
801.       "display_name": "Julia 1.1.1",
802.       "language": "julia"
803.     },
804.     "toc": {
806.       "number_sections": true,
807.       "sideBar": true,
808.       "skip_h1_title": false,
809.       "base_numbering": 1,
811.       "title_sidebar": "Contents",
812.       "toc_cell": false,
813.       "toc_position": {},
814.       "toc_section_display": true,
815.       "toc_window_display": false
816.     },
817.     "language_info": {
818.       "file_extension": ".jl",
819.       "name": "julia",
820.       "mimetype": "application/julia",
821.       "version": "1.1.1"
822.     },
823.     "@webio": {
824.       "lastKernelId": null,
825.       "lastCommId": null
826.     },
827.     "gist": {
828.       "id": "",
829.       "data": {
830.         "description": "QR vs. RREF",
831.         "public": true
832.       }
833.     }
834.   },
835.   "nbformat": 4,
836.   "nbformat_minor": 2
837. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Not a member of Pastebin yet?