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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
|
{
"cells": [
{
"cell_type": "code",
"execution_count": 354,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import math\n",
"import statistics\n",
"from itertools import product\n",
"\n",
"from tabulate import tabulate\n",
"\n",
"from IPython.core.display import display, HTML"
]
},
{
"cell_type": "code",
"execution_count": 235,
"metadata": {},
"outputs": [],
"source": [
"e3 = np.array([1.0, 2.2, 4.7])\n",
"e6 = np.array([1.0, 1.5, 2.2, 3.3, 4.7, 6.8])\n",
"e12 = np.array([1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2])\n",
"e24 = np.array([1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1])\n",
"e48 = np.array([1.00, 1.05, 1.10, 1.15, 1.21, 1.27, 1.33, 1.40, 1.47, 1.54, 1.62, 1.69, 1.78, 1.87, 1.96, 2.05, 2.15, 2.26, 2.37, 2.49, 2.61, 2.74, 2.87, 3.01, 3.16, 3.32, 3.48, 3.65, 3.83, 4.02, 4.22, 4.42, 4.64, 4.87, 5.11, 5.36, 5.62, 5.90, 6.19, 6.49, 6.81, 7.15, 7.50, 7.87, 8.25, 8.66, 9.09, 9.53])\n",
"e96 = np.array([1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87, 1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32, 2.37, 2.43, 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87, 2.94, 3.01, 3.09, 3.16, 3.24, 3.32, 3.40, 3.48, 3.57, 3.65, 3.74, 3.83, 3.92, 4.02, 4.12, 4.22, 4.32, 4.42, 4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49, 5.62, 5.76, 5.90, 6.04, 6.19, 6.34, 6.49, 6.65, 6.81, 6.98, 7.15, 7.32, 7.50, 7.68, 7.87, 8.06, 8.25, 8.45, 8.66, 8.87, 9.09, 9.31, 9.53, 9.76])\n",
"e192 = np.array([1.00, 1.01, 1.02, 1.04, 1.05, 1.06, 1.07, 1.09, 1.10, 1.11, 1.13, 1.14, 1.15, 1.17, 1.18, 1.20, 1.21, 1.23, 1.24, 1.26, 1.27, 1.29, 1.30, 1.32, 1.33, 1.35, 1.37, 1.38, 1.40, 1.42, 1.43, 1.45, 1.47, 1.49, 1.50, 1.52, 1.54, 1.56, 1.58, 1.60, 1.62, 1.64, 1.65, 1.67, 1.69, 1.72, 1.74, 1.76, 1.78, 1.80, 1.82, 1.84, 1.87, 1.89, 1.91, 1.93, 1.96, 1.98, 2.00, 2.03, 2.05, 2.08, 2.10, 2.13, 2.15, 2.18, 2.21, 2.23, 2.26, 2.29, 2.32, 2.34, 2.37, 2.40, 2.43, 2.46, 2.49, 2.52, 2.55, 2.58, 2.61, 2.64, 2.67, 2.71, 2.74, 2.77, 2.80, 2.84, 2.87, 2.91, 2.94, 2.98, 3.01, 3.05, 3.09, 3.12, 3.16, 3.20, 3.24, 3.28, 3.32, 3.36, 3.40, 3.44, 3.48, 3.52, 3.57, 3.61, 3.65, 3.70, 3.74, 3.79, 3.83, 3.88, 3.92, 3.97, 4.02, 4.07, 4.12, 4.17, 4.22, 4.27, 4.32, 4.37, 4.42, 4.48, 4.53, 4.59, 4.64, 4.70, 4.75, 4.81, 4.87, 4.93, 4.99, 5.05, 5.11, 5.17, 5.23, 5.30, 5.36, 5.42, 5.49, 5.56, 5.62, 5.69, 5.76, 5.83, 5.90, 5.97, 6.04, 6.12, 6.19, 6.26, 6.34, 6.42, 6.49, 6.57, 6.65, 6.73, 6.81, 6.90, 6.98, 7.06, 7.15, 7.23, 7.32, 7.41, 7.50, 7.59, 7.68, 7.77, 7.87, 7.96, 8.06, 8.16, 8.25, 8.35, 8.45, 8.56, 8.66, 8.76, 8.87, 8.98, 9.09, 9.20, 9.31, 9.42, 9.53, 9.65, 9.76, 9.88])\n",
"\n",
"def decades(series, n):\n",
" return np.hstack([series*(10**i) for i in range(n)] + [10**n])"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {},
"outputs": [],
"source": [
"def r_ratio(Utot, U2):\n",
" return Utot/U2 - 1"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {},
"outputs": [],
"source": [
"def check_ratios(Utot, U2, series=e24, tolerance=0.01):\n",
" values = decades(series, 7)\n",
" ratios = np.outer(values, 1/values)\n",
" target_ratio = r_ratio(Utot, U2)\n",
" found = np.where(np.abs(1 - ratios/target_ratio) < tolerance)\n",
" return list(zip(values[found[0]], values[found[1]])), np.abs(1 - ratios/target_ratio)"
]
},
{
"cell_type": "code",
"execution_count": 355,
"metadata": {},
"outputs": [],
"source": [
"def par(a, b):\n",
" return 1/(1/a + 1/b)"
]
},
{
"cell_type": "code",
"execution_count": 414,
"metadata": {},
"outputs": [],
"source": [
"def sig_round(val, ndigits):\n",
" log = math.floor(math.log10(val))\n",
" return round(val/(10**log), ndigits) * (10**log)"
]
},
{
"cell_type": "code",
"execution_count": 430,
"metadata": {},
"outputs": [],
"source": [
"def crossref_ratios(Utots, U2, offx=0, series=e24, allow_parallel=False):\n",
" values = e24_n_decades(7)\n",
" par_map = { sig_round(par(a, b), 4): (a, b) for a, b in product(values, values) }\n",
" for val in values:\n",
" if val in par_map:\n",
" del par_map[val]\n",
" par_arr = np.array(list(par_map.keys()) + list(values))\n",
" if allow_parallel:\n",
" values_com = par_arr + offx/2\n",
" else:\n",
" values_com = values + offx/2\n",
" values_choice = values + offx\n",
" ratios = np.outer(values_choice, 1/values_com)\n",
" target_ratios = [ r_ratio(Utot, U2) for Utot in Utots ]\n",
" deltas = np.array([ np.abs(1 - ratios/target_ratio) for target_ratio in target_ratios])\n",
"\n",
" deltas_x = deltas #[:,:,:len(series)]\n",
" idx_x, mins_x = deltas_x.argmin(axis=1), deltas_x.min(axis=1)\n",
" #errs_out_x = np.array([elem.dot(elem) for elem in np.swapaxes(mins_x, 0, 1)])\n",
" errs_out_x = mins_x.max(axis=0)\n",
" best_x = [ (errs_out_x[j], list(mins_x[:,j]), list(values_choice[idx_x[:,j]]), values_com[j]) for j in np.argsort(errs_out_x) ]\n",
"\n",
" deltas_y = deltas #[:,:len(series),:]\n",
" idx_y, mins_y = deltas_y.argmin(axis=2), deltas_y.min(axis=2)\n",
" #errs_out_y = np.array([elem.dot(elem) for elem in np.swapaxes(mins_y, 0, 1)])\n",
" errs_out_y = mins_y.max(axis=0)\n",
" best_y = [ (errs_out_y[j], list(mins_y[:,j]), list(values_com[idx_y[:,j]]), values_choice[j]) for j in np.argsort(errs_out_y) ]\n",
" \n",
" return sorted(best_x), sorted(best_y), par_map"
]
},
{
"cell_type": "code",
"execution_count": 443,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R1 fixed, R2 choices\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
"<thead>\n",
"<tr><th>R1 (3.8V) </th><th>R1 (5.0V) </th><th>R1 (12V) </th><th>R2 </th><th>Δ </th><th>R total (min) </th><th>R total (max) </th><th>Iq </th></tr>\n",
"</thead>\n",
"<tbody>\n",
"<tr><td>1.60M </td><td>2.20M </td><td>5.60M </td><td>300k </td><td>0.00%, 0.00%, <strong>1.75%</strong> </td><td>1.90M </td><td>5.90M </td><td>2.01μA</td></tr>\n",
"<tr><td>160k </td><td>220k </td><td>560k </td><td>30.0k</td><td>0.00%, 0.00%, <strong>1.75%</strong> </td><td>190k </td><td>590k </td><td>20.1μA</td></tr>\n",
"<tr><td>360k </td><td>510k </td><td>1.30M </td><td>68.0k</td><td>0.74%, <strong>2.27%</strong>, 0.62% </td><td>428k </td><td>1.37M </td><td>8.77μA</td></tr>\n",
"<tr><td>180k </td><td>240k </td><td>620k </td><td>33.0k</td><td><strong>2.27%</strong>, 0.83%, 1.12% </td><td>213k </td><td>653k </td><td>18.2μA</td></tr>\n",
"<tr><td>1.80M </td><td>2.40M </td><td>6.20M </td><td>330k </td><td><strong>2.27%</strong>, 0.83%, 1.12% </td><td>2.13M </td><td>6.53M </td><td>1.82μA</td></tr>\n",
"<tr><td>1.20M </td><td>1.60M </td><td>4.30M </td><td>220k </td><td>2.27%, 0.83%, <strong>2.87%</strong> </td><td>1.42M </td><td>4.52M </td><td>2.69μA</td></tr>\n",
"<tr><td>120k </td><td>160k </td><td>430k </td><td>22.0k</td><td>2.27%, 0.83%, <strong>2.87%</strong> </td><td>142k </td><td>452k </td><td>26.9μA</td></tr>\n",
"<tr><td>130k </td><td>180k </td><td>470k </td><td>24.0k</td><td>1.56%, 2.27%, <strong>3.07%</strong> </td><td>154k </td><td>494k </td><td>24.5μA</td></tr>\n",
"<tr><td>1.30M </td><td>1.80M </td><td>4.70M </td><td>240k </td><td>1.56%, 2.27%, <strong>3.07%</strong> </td><td>1.54M </td><td>4.94M </td><td>2.45μA</td></tr>\n",
"<tr><td>430k </td><td>620k </td><td>1.60M </td><td>82.0k</td><td>1.68%, <strong>3.10%</strong>, 2.70% </td><td>512k </td><td>1.68M </td><td>7.23μA</td></tr>\n",
"<tr><td>110k </td><td>150k </td><td>390k </td><td>20.0k</td><td><strong>3.13%</strong>, 2.27%, 2.63% </td><td>130k </td><td>410k </td><td>29.3μA</td></tr>\n",
"<tr><td>1.10M </td><td>1.50M </td><td>3.90M </td><td>200k </td><td><strong>3.13%</strong>, 2.27%, 2.63% </td><td>1.30M </td><td>4.10M </td><td>2.93μA</td></tr>\n",
"<tr><td>330k </td><td>470k </td><td>1.20M </td><td>62.0k</td><td>0.20%, <strong>3.37%</strong>, 1.87% </td><td>392k </td><td>1.26M </td><td>9.53μA</td></tr>\n",
"<tr><td>620k </td><td>910k </td><td>2.20M </td><td>120k </td><td>3.12%, 3.41%, <strong>3.51%</strong> </td><td>740k </td><td>2.32M </td><td>5.05μA</td></tr>\n",
"<tr><td>270k </td><td>360k </td><td>1.00M </td><td>51.0k</td><td>0.74%, <strong>3.74%</strong>, 3.20% </td><td>321k </td><td>1.05M </td><td>11.8μA</td></tr>\n",
"<tr><td>820k </td><td>1.20M </td><td>3.00M </td><td>160k </td><td><strong>3.91%</strong>, 2.27%, 1.32% </td><td>980k </td><td>3.16M </td><td>3.78μA</td></tr>\n",
"<tr><td>470k </td><td>680k </td><td>1.80M </td><td>91.0k</td><td>3.16%, 1.90%, <strong>4.11%</strong> </td><td>561k </td><td>1.89M </td><td>6.53μA</td></tr>\n",
"<tr><td>1.50M </td><td>2.00M </td><td>5.10M </td><td>270k </td><td><strong>4.17%</strong>, 1.01%, 0.58% </td><td>1.77M </td><td>5.37M </td><td>2.19μA</td></tr>\n",
"<tr><td>150k </td><td>200k </td><td>510k </td><td>27.0k</td><td><strong>4.17%</strong>, 1.01%, 0.58% </td><td>177k </td><td>537k </td><td>21.9μA</td></tr>\n",
"<tr><td>100k </td><td>130k </td><td>330k </td><td>18.0k</td><td><strong>4.17%</strong>, 1.52%, 3.51% </td><td>118k </td><td>348k </td><td>33.5μA</td></tr>\n",
"<tr><td>1.00M </td><td>1.30M </td><td>3.30M </td><td>180k </td><td><strong>4.17%</strong>, 1.52%, 3.51% </td><td>1.18M </td><td>3.48M </td><td>3.35μA</td></tr>\n",
"<tr><td>200k </td><td>270k </td><td>680k </td><td>36.0k</td><td><strong>4.17%</strong>, 2.27%, 0.58% </td><td>236k </td><td>716k </td><td>16.4μA</td></tr>\n",
"<tr><td>2.00M </td><td>2.70M </td><td>6.80M </td><td>360k </td><td><strong>4.17%</strong>, 2.27%, 0.58% </td><td>2.36M </td><td>7.16M </td><td>1.64μA</td></tr>\n",
"<tr><td>240k </td><td>330k </td><td>910k </td><td>47.0k</td><td><strong>4.26%</strong>, <strong>4.26%</strong>, 1.90%</td><td>287k </td><td>957k </td><td>13.0μA</td></tr>\n",
"<tr><td>2.40M </td><td>3.30M </td><td>9.10M </td><td>470k </td><td><strong>4.26%</strong>, <strong>4.26%</strong>, 1.90%</td><td>2.87M </td><td>9.57M </td><td>1.30μA</td></tr>\n",
"<tr><td>680k </td><td>910k </td><td>2.40M </td><td>130k </td><td>1.92%, <strong>4.55%</strong>, 2.83% </td><td>810k </td><td>2.53M </td><td>4.75μA</td></tr>\n",
"<tr><td>560k </td><td>820k </td><td>2.00M </td><td>110k </td><td><strong>4.55%</strong>, 1.65%, 4.31% </td><td>670k </td><td>2.11M </td><td>5.58μA</td></tr>\n",
"<tr><td>220k </td><td>330k </td><td>820k </td><td>43.0k</td><td>4.07%, <strong>4.65%</strong>, 0.37% </td><td>263k </td><td>863k </td><td>13.9μA</td></tr>\n",
"<tr><td>2.20M </td><td>3.30M </td><td>8.20M </td><td>430k </td><td>4.07%, <strong>4.65%</strong>, 0.37% </td><td>2.63M </td><td>8.63M </td><td>1.39μA</td></tr>\n",
"<tr><td>300k </td><td>430k </td><td>1.10M </td><td>56.0k</td><td>0.45%, <strong>4.71%</strong>, 3.38% </td><td>356k </td><td>1.16M </td><td>10.4μA</td></tr>\n",
"<tr><td>200k </td><td>300k </td><td>750k </td><td>39.0k</td><td>3.85%, <strong>4.90%</strong>, 1.21% </td><td>239k </td><td>789k </td><td>15.3μA</td></tr>\n",
"<tr><td>2.00M </td><td>3.00M </td><td>7.50M </td><td>390k </td><td>3.85%, <strong>4.90%</strong>, 1.21% </td><td>2.39M </td><td>7.89M </td><td>1.53μA</td></tr>\n",
"<tr><td>820k </td><td>1.10M </td><td>3.00M </td><td>150k </td><td>2.50%, 0.00%, <strong>5.26%</strong> </td><td>970k </td><td>3.15M </td><td>3.91μA</td></tr>\n",
"<tr><td>390k </td><td>560k </td><td>1.50M </td><td>75.0k</td><td>2.50%, 1.82%, <strong>5.26%</strong> </td><td>465k </td><td>1.57M </td><td>7.89μA</td></tr>\n",
"<tr><td>510k </td><td>750k </td><td>2.00M </td><td>100k </td><td>4.38%, 2.27%, <strong>5.26%</strong> </td><td>610k </td><td>2.10M </td><td>5.94μA</td></tr>\n",
"<tr><td>2.70M </td><td>3.60M </td><td>9.10M </td><td>510k </td><td>0.74%, 3.74%, <strong>6.09%</strong> </td><td>3.21M </td><td>9.61M </td><td>1.22μA</td></tr>\n",
"<tr><td>3.00M </td><td>4.30M </td><td>9.10M </td><td>560k </td><td>0.45%, <strong>4.71%</strong>, 14.47% </td><td>3.56M </td><td>9.66M </td><td>1.11μA</td></tr>\n",
"<tr><td>3.30M </td><td>4.70M </td><td>9.10M </td><td>620k </td><td>0.20%, <strong>3.37%</strong>, 22.75% </td><td>3.92M </td><td>9.72M </td><td>1.05μA</td></tr>\n",
"<tr><td>3.60M </td><td>5.10M </td><td>9.10M </td><td>680k </td><td>0.74%, 2.27%, <strong>29.57%</strong> </td><td>4.28M </td><td>9.78M </td><td>993nA </td></tr>\n",
"<tr><td>3.90M </td><td>5.60M </td><td>9.10M </td><td>750k </td><td>2.50%, 1.82%, <strong>36.14%</strong> </td><td>4.65M </td><td>9.85M </td><td>941nA </td></tr>\n",
"<tr><td>4.30M </td><td>6.20M </td><td>9.10M </td><td>820k </td><td>1.68%, 3.10%, <strong>41.59%</strong> </td><td>5.12M </td><td>9.92M </td><td>888nA </td></tr>\n",
"<tr><td>4.70M </td><td>6.80M </td><td>9.10M </td><td>910k </td><td>3.16%, 1.90%, <strong>47.37%</strong> </td><td>5.61M </td><td>10.0M </td><td>842nA </td></tr>\n",
"<tr><td>5.10M </td><td>7.50M </td><td>9.10M </td><td>1.00M</td><td>4.38%, 2.27%, <strong>52.11%</strong> </td><td>6.10M </td><td>10.1M </td><td>800nA </td></tr>\n",
"<tr><td>5.60M </td><td>8.20M </td><td>9.10M </td><td>1.10M</td><td>4.55%, 1.65%, <strong>56.46%</strong> </td><td>6.70M </td><td>10.2M </td><td>760nA </td></tr>\n",
"<tr><td>6.20M </td><td>9.10M </td><td>9.10M </td><td>1.20M</td><td>3.12%, 3.41%, <strong>60.09%</strong> </td><td>7.40M </td><td>10.3M </td><td>721nA </td></tr>\n",
"<tr><td>6.80M </td><td>9.10M </td><td>9.10M </td><td>1.30M</td><td>1.92%, 4.55%, <strong>63.16%</strong> </td><td>8.10M </td><td>10.4M </td><td>701nA </td></tr>\n",
"<tr><td>8.20M </td><td>9.10M </td><td>9.10M </td><td>1.50M</td><td>2.50%, 17.27%, <strong>68.07%</strong> </td><td>9.70M </td><td>10.6M </td><td>665nA </td></tr>\n",
"<tr><td>8.20M </td><td>9.10M </td><td>9.10M </td><td>1.60M</td><td>3.91%, 22.44%, <strong>70.07%</strong> </td><td>9.80M </td><td>10.7M </td><td>659nA </td></tr>\n",
"</tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Utots = [3.8, 5, 12]\n",
"U2 = 0.6\n",
"series = e48\n",
"r_tot_min, r_tot_max = 100e3, 10e6\n",
"\n",
"si_prefix = ['y', 'z', 'a', 'f', 'p', 'n', 'μ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']\n",
"def format_si(val, digits=2, suffix='', unity_prefix=''):\n",
" mul = math.floor(math.log10(val))\n",
" prefixes = [prefix or unity_prefix for prefix in si_prefix]\n",
" prefix = prefixes[min(len(si_prefix)-1, max(0, si_prefix.index('') + mul//3))]\n",
" le_format = f'{{:.{digits-mul%3}f}}{{}}{{}}'\n",
" return le_format.format(val/(10**(mul//3*3)), prefix, suffix)\n",
"format_r = lambda val, digits=2: format_si(val, digits=digits, unity_prefix='R')\n",
"\n",
"com = 'low'\n",
"#com ='high'\n",
"\n",
"data = []\n",
"best_x, best_y, par_map = crossref_ratios(Utots, U2, series=series, allow_parallel=False)\n",
"print('R1 fixed, R2 choices')\n",
"for _acc, deltas, r1_vals, r2 in best_x if com == 'low' else best_y:\n",
" if len(data) >= 50:\n",
" break\n",
" \n",
" r_tots = [ r1+r2 for r1 in r1_vals ]\n",
" iqs = [u/(r1+r2) for r1, u in zip(r1_vals, Utots)]\n",
" iq = statistics.mean(iqs)\n",
" #if min(r_tots) > r_tot_max or max(r_tots) < r_tot_min:\n",
" \n",
" if not r_tot_min < min(r_tots) < r_tot_max:\n",
" continue\n",
" \n",
" r1_vals = [ format_r(val) for val in r1_vals ]\n",
" deltas = [ f'{d:.2%}' for d in deltas ]\n",
" deltas = [ f'<strong>{d}</strong>' if d == max(deltas) else d for d in deltas ]\n",
" data.append((\n",
" *r1_vals,\n",
" f'{format_r(par_map[r2][0])} || {format_r(par_map[r2][1])}' if r2 in par_map else f'{format_r(r2)}',\n",
" f'{\", \".join(deltas)}',\n",
" f'{format_r(min(r_tots))}', f'{format_r(max(r_tots))}',\n",
" f'{format_si(iq, suffix=\"A\")}'))\n",
"s, c = (1,2) if com == 'low' else (2,1)\n",
"display(HTML(tabulate(data, [*[ f'R{s} ({format_si(u, suffix=\"V\", digits=1)})' for u in Utots ], f'R{c}', 'Δ', 'R total (min)', 'R total (max)', 'Iq'], tablefmt='html')))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|