Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
alpha-mind
Commits
b13506cf
Commit
b13506cf
authored
Jun 27, 2017
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added mean variance builder
parent
5fa76dd3
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
372 additions
and
52 deletions
+372
-52
meanvariancebuilder.py
alphamind/portfolio/meanvariancebuilder.py
+62
-0
test_meanvariancebuild.py
alphamind/tests/portfolio/test_meanvariancebuild.py
+39
-0
optimizer check.ipynb
notebooks/optimizer check.ipynb
+271
-52
No files found.
alphamind/portfolio/meanvariancebuilder.py
0 → 100644
View file @
b13506cf
# -*- coding: utf-8 -*-
"""
Created on 2017-6-27
@author: cheng.li
"""
import
numpy
as
np
from
typing
import
Union
from
typing
import
Tuple
from
cvxopt
import
matrix
from
cvxopt
import
solvers
solvers
.
options
[
'show_progress'
]
=
False
def
mean_variance_builder
(
er
:
np
.
ndarray
,
cov
:
np
.
ndarray
,
bm
:
np
.
ndarray
,
lbound
:
Union
[
np
.
ndarray
,
float
],
ubound
:
Union
[
np
.
ndarray
,
float
],
risk_exposure
:
np
.
ndarray
,
risk_target
:
Tuple
[
np
.
ndarray
,
np
.
ndarray
]):
lbound
=
lbound
-
bm
ubound
=
ubound
-
bm
transposed_risk_exposure
=
risk_exposure
.
T
risk_target
=
risk_target
-
transposed_risk_exposure
@
bm
# set up problem for net position
n
=
len
(
er
)
P
=
matrix
(
cov
)
q
=
-
matrix
(
er
)
G1
=
np
.
zeros
((
2
*
n
,
n
))
h1
=
np
.
zeros
(
2
*
n
)
for
i
in
range
(
n
):
G1
[
i
,
i
]
=
1.
h1
[
i
]
=
ubound
[
i
]
G1
[
i
+
n
,
i
]
=
-
1.
h1
[
i
+
n
]
=
-
lbound
[
i
]
m
=
len
(
transposed_risk_exposure
)
G2
=
np
.
concatenate
([
transposed_risk_exposure
,
-
transposed_risk_exposure
])
h2
=
np
.
zeros
(
2
*
m
)
for
i
in
range
(
m
):
h2
[
i
]
=
risk_target
[
1
][
i
]
h2
[
i
+
m
]
=
-
risk_target
[
0
][
i
]
G
=
matrix
(
np
.
concatenate
([
G1
,
G2
]))
h
=
matrix
(
np
.
concatenate
([
h1
,
h2
]))
sol
=
solvers
.
qp
(
P
,
q
,
G
,
h
)
return
sol
[
'status'
],
sol
[
'dual objective'
],
np
.
array
(
sol
[
'x'
])
.
flatten
()
+
bm
alphamind/tests/portfolio/test_meanvariancebuild.py
0 → 100644
View file @
b13506cf
# -*- coding: utf-8 -*-
"""
Created on 2017-6-27
@author: cheng.li
"""
import
unittest
import
numpy
as
np
from
alphamind.portfolio.meanvariancebuilder
import
mean_variance_builder
class
TestMeanVarianceBuild
(
unittest
.
TestCase
):
def
test_mean_variance_builder
(
self
):
er
=
np
.
random
.
randint
(
0
,
10
,
size
=
3
)
/
10.
cov
=
np
.
array
([[
0.04
,
0.01
,
0.02
],
[
0.01
,
0.05
,
0.03
],
[
0.02
,
0.03
,
0.06
]])
ids_var
=
np
.
diag
(
np
.
random
.
randint
(
2
,
5
,
size
=
3
)
/
100.
)
cov
+=
ids_var
bm
=
np
.
array
([
0.3
,
0.3
,
0.4
])
lbound
=
np
.
array
([
0.
,
0.
,
0.
])
ubound
=
np
.
array
([
0.4
,
0.4
,
0.5
])
risk_exposure
=
np
.
array
([[
1.
,
1.
,
1.
],
[
1.
,
0.
,
1.
]])
.
T
risk_target
=
(
np
.
array
([
bm
.
sum
(),
0.3
]),
np
.
array
([
bm
.
sum
(),
0.7
]))
status
,
value
,
x
=
mean_variance_builder
(
er
,
cov
,
bm
,
lbound
,
ubound
,
risk_exposure
,
risk_target
)
self
.
assertTrue
(
status
==
'optimal'
)
self
.
assertAlmostEqual
(
x
.
sum
(),
bm
.
sum
())
self
.
assertTrue
(
np
.
all
(
x
<=
ubound
+
1.e-6
))
self
.
assertTrue
(
np
.
all
(
x
>=
lbound
)
-
1.e-6
)
self
.
assertTrue
(
np
.
all
(
x
@
risk_exposure
<=
risk_target
[
1
]
+
1.e-6
))
self
.
assertTrue
(
np
.
all
(
x
@
risk_exposure
>=
risk_target
[
0
]
-
1.e-6
))
notebooks/optimizer check.ipynb
View file @
b13506cf
...
...
@@ -62,7 +62,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
948 m
s\n"
"Wall time:
1.18
s\n"
]
}
],
...
...
@@ -125,7 +125,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
453
ms\n"
"Wall time:
95.1
ms\n"
]
}
],
...
...
@@ -164,7 +164,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
110
ms\n"
"Wall time:
96.6
ms\n"
]
}
],
...
...
@@ -205,7 +205,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
68.6
ms\n"
"Wall time:
40.5
ms\n"
]
}
],
...
...
@@ -261,9 +261,9 @@
"21 -8.611e+00 -8.611e+00 +2e-08 9e-10 8e-19 2e-11 2e-11 0.9360 9e-03 3 3 3 | 0 0\n",
"\n",
"OPTIMAL (within feastol=8.6e-10, reltol=2.8e-09, abstol=2.4e-08).\n",
"Runtime: 1.9
56442
seconds.\n",
"Runtime: 1.9
07916
seconds.\n",
"\n",
"Wall time: 2.
2
s\n"
"Wall time: 2.
08
s\n"
]
},
{
...
...
@@ -328,16 +328,16 @@
"13: -8.6970e+00 -8.7087e+00 1e-01 1e-04 1e-08 2e-04\n",
"14: -8.6316e+00 -8.6344e+00 4e-02 3e-05 3e-09 4e-05\n",
"15: -8.6130e+00 -8.6133e+00 3e-03 3e-06 3e-10 3e-06\n",
"16: -8.6114e+00 -8.6114e+00 8e-05 7e-08
9
e-12 9e-08\n",
"17: -8.6114e+00 -8.6114e+00 8e-06 6e-09
3
e-11 8e-09\n",
"16: -8.6114e+00 -8.6114e+00 8e-05 7e-08
7
e-12 9e-08\n",
"17: -8.6114e+00 -8.6114e+00 8e-06 6e-09
1
e-11 8e-09\n",
"Optimal solution found.\n",
"Wall time: 2.
28
s\n"
"Wall time: 2.
16
s\n"
]
},
{
"data": {
"text/plain": [
"-8.6113958008
66157
"
"-8.6113958008
43123
"
]
},
"execution_count": 14,
...
...
@@ -358,7 +358,7 @@
{
"data": {
"text/plain": [
"('optimal', -8.6113958008
66157
)"
"('optimal', -8.6113958008
43123
)"
]
},
"execution_count": 15,
...
...
@@ -382,21 +382,21 @@
" pcost dcost gap pres dres\n",
" 0: -3.5750e+02 -4.1776e+02 2e+04 1e+02 5e-14\n",
" 1: -3.1011e+02 -2.5923e+02 1e+04 8e+01 4e-14\n",
" 2: -6.7480e+01 -1.4607e+02 2e+03 1e+01
4
e-14\n",
" 2: -6.7480e+01 -1.4607e+02 2e+03 1e+01
5
e-14\n",
" 3: -1.5291e+01 -1.3022e+02 4e+02 1e+00 1e-14\n",
" 4: -8.9120e+00 -5.0845e+01 6e+01 1e-01
2
e-15\n",
" 4: -8.9120e+00 -5.0845e+01 6e+01 1e-01
3
e-15\n",
" 5: -8.1091e+00 -1.9295e+01 1e+01 2e-02 2e-15\n",
" 6: -8.1870e+00 -1.1578e+01 4e+00 5e-03 2e-15\n",
" 7: -8.2484e+00 -9.7661e+00 2e+00 9e-04 1e-15\n",
" 8: -8.4016e+00 -9.1567e+00 8e-01
7
e-16 2e-15\n",
" 9: -8.5308e+00 -8.7593e+00 2e-01
4
e-16 1e-15\n",
"10: -8.5717e+00 -8.6888e+00 1e-01
1
e-16 2e-15\n",
"11: -8.6012e+00 -8.6299e+00 3e-02
6
e-16 2e-15\n",
"12: -8.6086e+00 -8.6152e+00 7e-03
2e-15 2
e-15\n",
"13: -8.6114e+00 -8.6114e+00 9e-05
2
e-15 2e-15\n",
"14: -8.6114e+00 -8.6114e+00 1e-06
7e-16 2
e-15\n",
" 8: -8.4016e+00 -9.1567e+00 8e-01
2
e-16 2e-15\n",
" 9: -8.5308e+00 -8.7593e+00 2e-01
2
e-16 1e-15\n",
"10: -8.5717e+00 -8.6888e+00 1e-01
2
e-16 2e-15\n",
"11: -8.6012e+00 -8.6299e+00 3e-02
2
e-16 2e-15\n",
"12: -8.6086e+00 -8.6152e+00 7e-03
9e-16 1
e-15\n",
"13: -8.6114e+00 -8.6114e+00 9e-05
1
e-15 2e-15\n",
"14: -8.6114e+00 -8.6114e+00 1e-06
4e-16 1
e-15\n",
"Optimal solution found.\n",
"Wall time:
898
ms\n"
"Wall time:
789
ms\n"
]
}
],
...
...
@@ -523,7 +523,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"0.7
35152
\n"
"0.7
12124
\n"
]
}
],
...
...
@@ -643,62 +643,62 @@
" <tbody>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>
50.551
</td>\n",
" <td>2
71.014
</td>\n",
" <td>
49.534
</td>\n",
" <td>2
01.142
</td>\n",
" <td>63.4241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>400</th>\n",
" <td>
398.852
</td>\n",
" <td>12
13.275
</td>\n",
" <td>
426.353
</td>\n",
" <td>12
54.889
</td>\n",
" <td>157.5680</td>\n",
" </tr>\n",
" <tr>\n",
" <th>600</th>\n",
" <td>1
377.988
</td>\n",
" <td>3
749.23
9</td>\n",
" <td>1
427.580
</td>\n",
" <td>3
833.46
9</td>\n",
" <td>208.7740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>800</th>\n",
" <td>34
37.146
</td>\n",
" <td>91
18.570
</td>\n",
" <td>34
04.400
</td>\n",
" <td>91
54.496
</td>\n",
" <td>436.1050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1000</th>\n",
" <td>6
459.141
</td>\n",
" <td>17
635.912
</td>\n",
" <td>6
363.836
</td>\n",
" <td>17
391.481
</td>\n",
" <td>522.8100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1200</th>\n",
" <td>128
70.03
7</td>\n",
" <td>
30207.671
</td>\n",
" <td>128
35.92
7</td>\n",
" <td>
29585.606
</td>\n",
" <td>744.1180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1400</th>\n",
" <td>2
1711.7
07</td>\n",
" <td>4
8569.790
</td>\n",
" <td>2
0837.4
07</td>\n",
" <td>4
7275.402
</td>\n",
" <td>1133.8700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1600</th>\n",
" <td>26
667.136
</td>\n",
" <td>66
676.783
</td>\n",
" <td>26
858.257
</td>\n",
" <td>66
219.215
</td>\n",
" <td>1685.5900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1800</th>\n",
" <td>3
8267.565
</td>\n",
" <td>10
8751.792
</td>\n",
" <td>3
7523.647
</td>\n",
" <td>10
4994.916
</td>\n",
" <td>1409.3600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>5
8030.362
</td>\n",
" <td>11
4277.842
</td>\n",
" <td>5
7507.285
</td>\n",
" <td>11
1186.259
</td>\n",
" <td>3364.3300</td>\n",
" </tr>\n",
" </tbody>\n",
...
...
@@ -708,16 +708,16 @@
"text/plain": [
" cvxopt cvxpy ipopt\n",
"Problem Scale (n) \n",
"200
50.551 271.014
63.4241\n",
"400
398.852 1213.275
157.5680\n",
"600 1
377.988 3749.23
9 208.7740\n",
"800 34
37.146 9118.570
436.1050\n",
"1000 6
459.141 17635.912
522.8100\n",
"1200 128
70.037 30207.671
744.1180\n",
"1400 2
1711.707 48569.790
1133.8700\n",
"1600 26
667.136 66676.783
1685.5900\n",
"1800 3
8267.565 108751.792
1409.3600\n",
"2000 5
8030.362 114277.842
3364.3300"
"200
49.534 201.142
63.4241\n",
"400
426.353 1254.889
157.5680\n",
"600 1
427.580 3833.46
9 208.7740\n",
"800 34
04.400 9154.496
436.1050\n",
"1000 6
363.836 17391.481
522.8100\n",
"1200 128
35.927 29585.606
744.1180\n",
"1400 2
0837.407 47275.402
1133.8700\n",
"1600 26
858.257 66219.215
1685.5900\n",
"1800 3
7523.647 104994.916
1409.3600\n",
"2000 5
7507.285 111186.259
3364.3300"
]
},
"execution_count": 26,
...
...
@@ -729,6 +729,225 @@
"df"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'dual infeasibility': 1.458726131447995e-15,\n",
" 'dual objective': -8.611392389649453,\n",
" 'dual slack': 2.1901323532949252e-08,\n",
" 'gap': 1.1402692474473834e-06,\n",
" 'iterations': 14,\n",
" 'primal infeasibility': 4.440892098500626e-16,\n",
" 'primal objective': -8.611391249380205,\n",
" 'primal slack': 5.626639017385082e-12,\n",
" 'relative gap': 1.3241405650096933e-07,\n",
" 's': <1000x1 matrix, tc='d'>,\n",
" 'status': 'optimal',\n",
" 'x': <500x1 matrix, tc='d'>,\n",
" 'y': <1x1 matrix, tc='d'>,\n",
" 'z': <1000x1 matrix, tc='d'>}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sol"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3.99999999e-02, 1.52782206e-02, 2.84044580e-10,\n",
" 3.07558142e-10, 7.78993110e-10, 3.35930031e-03,\n",
" 1.84550927e-09, 6.61073273e-10, 1.03430679e-02,\n",
" 1.34263821e-09, 5.69064297e-10, 3.05219658e-10,\n",
" 2.60845020e-10, 2.85509339e-10, 2.39306928e-09,\n",
" 2.98985475e-10, 2.33668730e-10, 3.47879281e-10,\n",
" 1.07586264e-06, 2.75856470e-10, 3.74775516e-10,\n",
" 3.38483745e-10, 3.68146995e-10, 8.52512820e-10,\n",
" 5.44855174e-10, 3.81254595e-10, 4.78878576e-10,\n",
" 5.69867403e-10, 3.06132868e-03, 3.77214754e-10,\n",
" 2.77278553e-10, 4.99240016e-10, 8.93210563e-10,\n",
" 4.34630996e-10, 5.91226248e-10, 9.55333837e-10,\n",
" 1.73775760e-10, 2.37724800e-10, 4.02462022e-10,\n",
" 2.09311560e-08, 2.94670815e-10, 8.30709967e-10,\n",
" 8.57422068e-10, 9.60387593e-10, 2.86417375e-10,\n",
" 1.94831139e-10, 2.59797059e-09, 1.25078637e-09,\n",
" 1.87196022e-10, 2.67694440e-10, 2.49804831e-02,\n",
" 1.02914259e-08, 2.86354629e-10, 3.51133854e-10,\n",
" 1.32508438e-09, 3.06881729e-10, 4.75562140e-10,\n",
" 5.95537564e-03, 3.64720100e-02, 3.44563375e-10,\n",
" 6.01326913e-10, 6.13169542e-10, 3.54813091e-10,\n",
" 2.40069893e-10, 2.75389796e-10, 3.08538284e-10,\n",
" 6.91465656e-03, 2.83503307e-10, 8.74846275e-10,\n",
" 7.65771738e-10, 4.56615636e-03, 3.47863841e-02,\n",
" 2.92575956e-10, 1.18387152e-09, 1.50144091e-08,\n",
" 1.76787398e-09, 3.87377323e-10, 8.14788939e-10,\n",
" 3.46230159e-10, 2.44240866e-10, 6.69485256e-10,\n",
" 5.17130830e-10, 7.96599256e-10, 3.99999999e-02,\n",
" 4.94998417e-10, 9.72509195e-10, 6.07492064e-10,\n",
" 2.67176175e-10, 3.15198817e-10, 4.53926076e-10,\n",
" 2.93766589e-10, 1.18003900e-09, 4.38567777e-10,\n",
" 9.06949745e-10, 3.78857702e-02, 2.48726790e-03,\n",
" 4.44820075e-10, 2.96561353e-10, 1.92713608e-09,\n",
" 8.77874115e-10, 3.87507851e-10, 2.76350871e-09,\n",
" 3.00640517e-10, 2.26342030e-10, 2.76316948e-10,\n",
" 4.00000000e-02, 6.59856706e-03, 7.86853880e-10,\n",
" 5.11873730e-10, 3.58240168e-10, 5.14954662e-10,\n",
" 3.61635892e-10, 4.46058611e-09, 2.81567065e-10,\n",
" 4.05940157e-10, 2.89242449e-10, 2.72513238e-10,\n",
" 1.51074280e-02, 4.28549870e-10, 2.68265123e-10,\n",
" 4.50221662e-10, 3.07973437e-10, 6.99783169e-10,\n",
" 3.99999999e-02, 5.32622908e-10, 6.11228497e-10,\n",
" 1.50915232e-09, 3.38116839e-10, 2.75728345e-10,\n",
" 2.39851328e-10, 4.17953908e-10, 3.29750895e-09,\n",
" 2.92206553e-10, 1.75582319e-02, 4.69712358e-10,\n",
" 3.79903062e-10, 1.77790656e-09, 3.44658233e-10,\n",
" 8.06697379e-05, 9.37194023e-10, 3.87665692e-10,\n",
" 5.48697424e-10, 1.71258942e-09, 4.80379421e-10,\n",
" 4.95673576e-10, 3.78256539e-02, 2.99091863e-10,\n",
" 2.88085206e-09, 3.23625662e-10, 2.47503528e-10,\n",
" 2.25750985e-10, 3.88717216e-10, 3.01416977e-10,\n",
" 2.72122355e-10, 5.62723291e-10, 7.92172432e-10,\n",
" 3.99431880e-10, 6.07081882e-10, 2.40422726e-10,\n",
" 5.52270922e-03, 5.98145453e-10, 1.27306297e-09,\n",
" 5.48260894e-10, 3.36809564e-10, 3.34424650e-10,\n",
" 2.96076228e-08, 1.76038473e-03, 1.03800673e-09,\n",
" 2.37067319e-10, 2.69621890e-10, 1.98072151e-10,\n",
" 3.89917271e-10, 2.26385315e-10, 2.36141894e-10,\n",
" 3.78402900e-10, 1.26992435e-09, 3.30696674e-10,\n",
" 4.02871184e-10, 1.63023090e-10, 8.94202901e-10,\n",
" 3.37533602e-10, 7.21421243e-10, 3.00712880e-10,\n",
" 1.42746739e-09, 6.90657341e-10, 4.83134323e-10,\n",
" 4.85545869e-10, 1.78566936e-10, 5.80314243e-10,\n",
" 7.86431976e-10, 2.92305854e-10, 7.65542509e-10,\n",
" 6.56450591e-10, 1.89619574e-09, 1.73804329e-10,\n",
" 3.99999984e-02, 6.42022127e-10, 2.62054710e-10,\n",
" 3.40358996e-10, 3.75278305e-02, 2.68884283e-02,\n",
" 2.11310670e-10, 9.54374751e-10, 5.32195682e-10,\n",
" 1.61592397e-03, 8.52312748e-03, 2.85815714e-10,\n",
" 2.36565902e-10, 2.37562803e-10, 4.26814374e-03,\n",
" 6.55804515e-10, 7.00905949e-10, 2.85611939e-10,\n",
" 2.49921651e-10, 4.13285630e-10, 1.36641147e-02,\n",
" 6.97544939e-10, 1.98099809e-09, 9.12481603e-10,\n",
" 6.67085137e-10, 2.07848620e-10, 1.75711670e-09,\n",
" 1.15210076e-09, 3.02580047e-10, 2.92106639e-10,\n",
" 3.15385762e-10, 2.28906082e-10, 1.49884957e-10,\n",
" 2.40967432e-10, 3.25252939e-10, 1.14927776e-09,\n",
" 4.00878373e-10, 2.36676373e-10, 4.98809103e-10,\n",
" 4.28493417e-10, 2.30458575e-10, 2.37370250e-10,\n",
" 5.40373057e-10, 2.13856083e-10, 1.11963535e-09,\n",
" 8.85662563e-03, 3.57270318e-02, 8.90077719e-10,\n",
" 3.17374248e-10, 4.39800988e-10, 3.04612964e-10,\n",
" 2.42589842e-10, 4.01844974e-10, 3.23905290e-10,\n",
" 2.43905460e-10, 3.43675563e-10, 5.13613505e-10,\n",
" 3.74611553e-10, 4.68298672e-10, 4.26075972e-10,\n",
" 2.75814946e-09, 3.79198165e-10, 6.63990037e-10,\n",
" 3.89294325e-10, 7.74683887e-10, 2.81002783e-10,\n",
" 2.67442507e-09, 2.03936612e-10, 4.99771152e-10,\n",
" 2.12806037e-10, 2.04972827e-10, 2.05058550e-02,\n",
" 3.70741331e-10, 2.48772126e-10, 1.70808944e-10,\n",
" 9.52046528e-10, 1.42795621e-09, 3.25593569e-02,\n",
" 3.73463405e-04, 5.52095041e-03, 2.75900720e-10,\n",
" 1.78025500e-09, 4.41509671e-10, 5.32367576e-10,\n",
" 4.19461165e-10, 3.48155060e-10, 3.96689482e-10,\n",
" 5.18741371e-10, 2.20201621e-03, 1.61746868e-09,\n",
" 3.23270913e-10, 7.42363957e-10, 5.89608973e-10,\n",
" 2.61714702e-10, 3.36496326e-10, 8.31038102e-10,\n",
" 3.58997676e-10, 2.63556541e-10, 7.97130662e-10,\n",
" 2.19103735e-10, 3.33853371e-10, 2.39362492e-10,\n",
" 1.60735856e-09, 4.88196702e-10, 4.06626177e-10,\n",
" 5.25811581e-03, 3.99999969e-02, 6.25495534e-10,\n",
" 1.87181179e-09, 3.12839550e-10, 1.74343212e-09,\n",
" 4.38295221e-10, 1.31864196e-09, 2.13593800e-10,\n",
" 6.88995567e-03, 2.50885620e-10, 3.39621513e-10,\n",
" 2.92559932e-10, 2.31567474e-10, 8.35872332e-10,\n",
" 5.23707275e-10, 1.38507684e-09, 7.27652171e-10,\n",
" 2.07920648e-10, 2.97169815e-10, 4.94814597e-10,\n",
" 4.97787089e-10, 1.68166627e-10, 2.46521474e-10,\n",
" 5.67132580e-10, 3.27936772e-03, 6.72131064e-10,\n",
" 8.56955701e-11, 3.73205858e-10, 5.37322211e-10,\n",
" 2.95855269e-10, 2.24002677e-09, 2.10352883e-10,\n",
" 1.72886018e-09, 9.37536042e-10, 3.32900253e-10,\n",
" 1.46131104e-09, 4.79478628e-10, 6.93480009e-10,\n",
" 1.88242915e-09, 2.70472591e-10, 1.00591618e-09,\n",
" 1.10101316e-09, 2.17604688e-10, 4.86098844e-10,\n",
" 5.23443217e-03, 2.91877340e-10, 3.34803117e-10,\n",
" 5.50527474e-10, 3.79913346e-10, 1.85193941e-10,\n",
" 2.93878860e-03, 2.77281871e-10, 4.52618892e-10,\n",
" 3.26266372e-10, 3.61367986e-10, 3.03754379e-03,\n",
" 2.57897603e-02, 7.43949956e-10, 2.11515289e-10,\n",
" 1.33557641e-10, 3.13187219e-10, 2.46362986e-10,\n",
" 2.88635033e-10, 3.57526589e-10, 4.29776154e-10,\n",
" 1.44393545e-02, 1.10936316e-09, 1.13995023e-09,\n",
" 6.09914742e-10, 7.73858755e-09, 2.20948146e-10,\n",
" 8.59197569e-03, 2.60929643e-10, 8.76978973e-10,\n",
" 5.57883437e-10, 1.13325836e-09, 3.39593411e-10,\n",
" 2.39511673e-10, 6.68584655e-10, 1.14491200e-09,\n",
" 9.23434159e-10, 3.46590302e-10, 8.51580988e-10,\n",
" 5.03454758e-10, 3.21181523e-10, 3.95273791e-10,\n",
" 8.19250641e-10, 3.83512479e-10, 4.08700338e-10,\n",
" 2.43173594e-10, 1.99020265e-10, 2.10813650e-10,\n",
" 4.23374048e-10, 1.92755421e-10, 3.99999999e-02,\n",
" 5.07885007e-10, 5.97508451e-10, 9.74969104e-03,\n",
" 2.13074976e-10, 4.05644867e-10, 3.67294697e-10,\n",
" 3.40095260e-10, 3.19857414e-10, 4.84094361e-10,\n",
" 8.83113456e-10, 4.02785427e-10, 7.69995355e-10,\n",
" 2.75839993e-10, 7.90942640e-03, 2.35347157e-10,\n",
" 3.59524109e-10, 3.31143166e-10, 3.31547342e-10,\n",
" 4.47930536e-10, 7.05046082e-10, 3.22886470e-10,\n",
" 1.93432598e-09, 2.29960757e-03, 3.07870191e-10,\n",
" 2.87934367e-10, 4.40769375e-10, 2.75485973e-10,\n",
" 4.31162354e-10, 3.12280557e-10, 1.24029867e-10,\n",
" 3.32281829e-10, 2.62743845e-10, 4.64367160e-10,\n",
" 6.29502695e-10, 5.92090057e-10, 7.83481706e-10,\n",
" 8.98232819e-10, 4.24756611e-09, 4.47175015e-10,\n",
" 3.03333934e-10, 1.09941506e-09, 7.05433000e-03,\n",
" 5.07493811e-10, 1.92444847e-03, 5.47108021e-10,\n",
" 2.44846668e-10, 3.72595829e-10, 1.99755991e-09,\n",
" 1.06136504e-09, 3.51314608e-10, 5.46012542e-10,\n",
" 3.21813201e-10, 3.02771776e-10, 3.88423155e-10,\n",
" 2.65136713e-10, 7.96177869e-10, 3.95339100e-10,\n",
" 2.20704940e-10, 6.68909256e-10, 4.76989894e-10,\n",
" 5.50652700e-09, 3.05732962e-10, 2.06929911e-10,\n",
" 3.57421753e-10, 5.98405195e-10, 5.42748761e-03,\n",
" 1.02375894e-09, 4.31296153e-10, 2.38410182e-10,\n",
" 1.75062181e-02, 7.50440280e-10, 5.13550144e-10,\n",
" 1.04557111e-09, 9.09235537e-10, 4.32680652e-10,\n",
" 5.12945130e-10, 7.48263434e-03, 1.28484049e-02,\n",
" 5.35157051e-10, 2.62473038e-02, 2.67230539e-10,\n",
" 3.21651739e-10, 5.45512347e-03, 2.98484843e-10,\n",
" 5.08132389e-10, 2.94145614e-10, 2.90235145e-10,\n",
" 4.23583265e-10, 6.27217842e-10, 4.75078208e-10,\n",
" 3.95909614e-10, 4.32008742e-10, 4.16133042e-10,\n",
" 3.87299556e-02, 9.43658042e-10, 1.16478522e-09,\n",
" 1.65489455e-02, 1.65791553e-02, 1.34821203e-09,\n",
" 3.31736699e-10, 3.78954127e-10, 4.09699106e-10,\n",
" 2.27903500e-08, 6.18015443e-10])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(sol['x']).flatten()"
]
},
{
"cell_type": "code",
"execution_count": null,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment