eyeling 1.15.11 → 1.15.13
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.
- package/README.md +3 -3
- package/follows-from/artifacts/ackermann.html +678 -0
- package/follows-from/artifacts/auroracare.html +1297 -0
- package/follows-from/artifacts/bike-trip.html +752 -0
- package/follows-from/artifacts/binomial-theorem.html +631 -0
- package/follows-from/artifacts/bmi.html +511 -0
- package/follows-from/artifacts/building-performance.html +750 -0
- package/follows-from/artifacts/clinical-care.html +726 -0
- package/follows-from/artifacts/collatz.html +403 -0
- package/follows-from/artifacts/complex.html +321 -0
- package/follows-from/artifacts/control-system.html +482 -0
- package/follows-from/artifacts/delfour.html +849 -0
- package/follows-from/artifacts/earthquake-epicenter.html +982 -0
- package/follows-from/artifacts/eco-route.html +662 -0
- package/follows-from/artifacts/euclid-infinitude.html +564 -0
- package/follows-from/artifacts/euler-identity.html +667 -0
- package/follows-from/artifacts/exoplanet-transit.html +1000 -0
- package/follows-from/artifacts/faltings-theorem.html +1046 -0
- package/follows-from/artifacts/fibonacci.html +299 -0
- package/follows-from/artifacts/fundamental-theorem-arithmetic.html +398 -0
- package/follows-from/artifacts/godel-numbering.html +743 -0
- package/follows-from/artifacts/gps-bike.html +759 -0
- package/follows-from/artifacts/gps-clinical-bench.html +792 -0
- package/follows-from/artifacts/graph-french.html +449 -0
- package/follows-from/artifacts/grass-molecular.html +592 -0
- package/follows-from/artifacts/group-theory.html +740 -0
- package/follows-from/artifacts/health-info.html +833 -0
- package/follows-from/artifacts/kaprekar-constant.html +576 -0
- package/follows-from/artifacts/lee.html +805 -0
- package/follows-from/artifacts/linked-lists.html +502 -0
- package/follows-from/artifacts/lldm.html +612 -0
- package/follows-from/artifacts/matrix-multiplication.html +502 -0
- package/follows-from/artifacts/matrix.html +651 -0
- package/follows-from/artifacts/newton-raphson.html +944 -0
- package/follows-from/artifacts/peano-factorial.html +456 -0
- package/follows-from/artifacts/pi.html +363 -0
- package/follows-from/artifacts/polynomial.html +646 -0
- package/follows-from/artifacts/prime.html +366 -0
- package/follows-from/artifacts/pythagorean-theorem.html +468 -0
- package/follows-from/artifacts/rest-path.html +469 -0
- package/follows-from/artifacts/roots-of-unity.html +363 -0
- package/follows-from/artifacts/turing.html +409 -0
- package/follows-from/artifacts/wind-turbines.html +726 -0
- package/follows-from/index.html +549 -0
- package/follows-from/library/index.md +22 -0
- package/follows-from/logo.svg +12 -0
- package/follows-from/manifesto.md +48 -0
- package/follows-from/method/index.md +30 -0
- package/follows-from/path/index.md +20 -0
- package/package.json +4 -3
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Complex Identities — Explanatory Proofs</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--fg: #111;
|
|
10
|
+
--bg: #fff;
|
|
11
|
+
--muted: #666;
|
|
12
|
+
--accent: #2b6cb0;
|
|
13
|
+
}
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
:root {
|
|
16
|
+
--fg: #eee;
|
|
17
|
+
--bg: #0b0b0b;
|
|
18
|
+
--muted: #aaa;
|
|
19
|
+
--accent: #63b3ed;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
html,
|
|
23
|
+
body {
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
color: var(--fg);
|
|
27
|
+
background: var(--bg);
|
|
28
|
+
font:
|
|
29
|
+
16px/1.6 system-ui,
|
|
30
|
+
-apple-system,
|
|
31
|
+
Segoe UI,
|
|
32
|
+
Roboto,
|
|
33
|
+
Helvetica,
|
|
34
|
+
Arial,
|
|
35
|
+
'Apple Color Emoji',
|
|
36
|
+
'Segoe UI Emoji';
|
|
37
|
+
}
|
|
38
|
+
main {
|
|
39
|
+
max-width: 940px;
|
|
40
|
+
margin: 0 auto;
|
|
41
|
+
padding: 2.5rem 1.25rem 4rem;
|
|
42
|
+
}
|
|
43
|
+
header h1 {
|
|
44
|
+
font-size: clamp(1.6rem, 2.5vw + 1rem, 2.4rem);
|
|
45
|
+
margin: 0 0 0.25rem;
|
|
46
|
+
}
|
|
47
|
+
header p {
|
|
48
|
+
margin: 0;
|
|
49
|
+
color: var(--muted);
|
|
50
|
+
}
|
|
51
|
+
section {
|
|
52
|
+
background: color-mix(in srgb, var(--accent) 4%, transparent);
|
|
53
|
+
border: 1px solid color-mix(in srgb, var(--accent) 15%, transparent);
|
|
54
|
+
border-radius: 14px;
|
|
55
|
+
padding: 1rem 1.1rem;
|
|
56
|
+
margin: 1.1rem 0 1.4rem;
|
|
57
|
+
}
|
|
58
|
+
section h2 {
|
|
59
|
+
margin: 0 0 0.25rem;
|
|
60
|
+
font-size: 1.15rem;
|
|
61
|
+
}
|
|
62
|
+
hr {
|
|
63
|
+
border: none;
|
|
64
|
+
border-top: 1px dashed color-mix(in srgb, var(--fg) 25%, transparent);
|
|
65
|
+
margin: 0.6rem 0 0.8rem;
|
|
66
|
+
}
|
|
67
|
+
p {
|
|
68
|
+
margin: 0.35rem 0;
|
|
69
|
+
}
|
|
70
|
+
code,
|
|
71
|
+
pre {
|
|
72
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
|
|
73
|
+
}
|
|
74
|
+
footer {
|
|
75
|
+
margin-top: 2.5rem;
|
|
76
|
+
color: var(--muted);
|
|
77
|
+
font-size: 0.9rem;
|
|
78
|
+
}
|
|
79
|
+
.tag {
|
|
80
|
+
font-weight: 700;
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
83
|
+
</head>
|
|
84
|
+
<body>
|
|
85
|
+
<main>
|
|
86
|
+
<header>
|
|
87
|
+
<h1>Complex identities — explanatory proofs</h1>
|
|
88
|
+
</header>
|
|
89
|
+
|
|
90
|
+
<section>
|
|
91
|
+
<h2>What this is?</h2>
|
|
92
|
+
<p>
|
|
93
|
+
A single-page explainer of classic complex-number identities. Each card states the identity, gives a short
|
|
94
|
+
reason, and then performs a numeric check right in the browser to confirm the result. No external libraries or
|
|
95
|
+
servers are used.
|
|
96
|
+
</p>
|
|
97
|
+
<p class="muted">Numbers are shown to ~12 decimals.</p>
|
|
98
|
+
</section>
|
|
99
|
+
|
|
100
|
+
<section id="case1">
|
|
101
|
+
<h2>sqrt(-1)</h2>
|
|
102
|
+
<hr />
|
|
103
|
+
<p><span class="tag">Answer</span>: √(-1) = i</p>
|
|
104
|
+
<p>
|
|
105
|
+
<span class="tag">Reason</span>: −1 = e<sup>iπ</sup> (principal). √(e<sup>iπ</sup>) = e<sup>iπ/2</sup> = i.
|
|
106
|
+
</p>
|
|
107
|
+
<p><span class="tag">Check</span>: i² = <span id="check1"></span></p>
|
|
108
|
+
</section>
|
|
109
|
+
|
|
110
|
+
<section id="case2">
|
|
111
|
+
<h2>exp(i·π) + 1</h2>
|
|
112
|
+
<hr />
|
|
113
|
+
<p><span class="tag">Answer</span>: e<sup>iπ</sup> + 1 = 0</p>
|
|
114
|
+
<p><span class="tag">Reason</span>: Euler: e<sup>iθ</sup> = cos θ + i sin θ ⇒ e<sup>iπ</sup> = −1.</p>
|
|
115
|
+
<p><span class="tag">Check</span>: e<sup>iπ</sup> + 1 ≈ <span id="check2"></span></p>
|
|
116
|
+
</section>
|
|
117
|
+
|
|
118
|
+
<section id="case3">
|
|
119
|
+
<h2>log(-1)</h2>
|
|
120
|
+
<hr />
|
|
121
|
+
<p><span class="tag">Answer</span>: log(−1) = iπ (principal)</p>
|
|
122
|
+
<p><span class="tag">Reason</span>: log z = ln|z| + i Arg(z); |−1| = 1 ⇒ ln|z| = 0, Arg(−1) = π.</p>
|
|
123
|
+
<p><span class="tag">Check</span>: exp(log(−1)) = <span id="check3"></span></p>
|
|
124
|
+
</section>
|
|
125
|
+
|
|
126
|
+
<section id="case4">
|
|
127
|
+
<h2>log(-i)</h2>
|
|
128
|
+
<hr />
|
|
129
|
+
<p><span class="tag">Answer</span>: log(−i) = −iπ/2 (principal)</p>
|
|
130
|
+
<p><span class="tag">Reason</span>: |−i| = 1, Arg(−i) = −π/2 ⇒ log(−i) = 0 + i(−π/2).</p>
|
|
131
|
+
<p><span class="tag">Check</span>: exp(log(−i)) = <span id="check4"></span></p>
|
|
132
|
+
</section>
|
|
133
|
+
|
|
134
|
+
<section id="case5">
|
|
135
|
+
<h2>log(i·x) with x = 0.73</h2>
|
|
136
|
+
<hr />
|
|
137
|
+
<p><span class="tag">Answer</span>: log(i·x) = ln x + iπ/2 (x>0)</p>
|
|
138
|
+
<p><span class="tag">Reason</span>: Arg(i x) = π/2 (principal), |i x| = x ⇒ ln|·| = ln x.</p>
|
|
139
|
+
<p>
|
|
140
|
+
<span class="tag">Check</span>: exp(log(i·x)) ≈ <span id="check5a"></span> and i·x =
|
|
141
|
+
<span id="check5b"></span>
|
|
142
|
+
</p>
|
|
143
|
+
</section>
|
|
144
|
+
|
|
145
|
+
<section id="case6">
|
|
146
|
+
<h2>cos(i·x) with x = 0.73</h2>
|
|
147
|
+
<hr />
|
|
148
|
+
<p><span class="tag">Answer</span>: cos(i x) = cosh x</p>
|
|
149
|
+
<p>
|
|
150
|
+
<span class="tag">Reason</span>: cos z = (e<sup>iz</sup> + e<sup>−iz</sup>)/2; set z = i x ⇒ (e<sup>−x</sup> +
|
|
151
|
+
e<sup>x</sup>)/2.
|
|
152
|
+
</p>
|
|
153
|
+
<p>
|
|
154
|
+
<span class="tag">Check</span>: cos(i x) ≈ <span id="check6a"></span> ; cosh(x) =
|
|
155
|
+
<span id="check6b"></span>
|
|
156
|
+
</p>
|
|
157
|
+
</section>
|
|
158
|
+
|
|
159
|
+
<section id="case7">
|
|
160
|
+
<h2>sin(i·x) with x = 0.73</h2>
|
|
161
|
+
<hr />
|
|
162
|
+
<p><span class="tag">Answer</span>: sin(i x) = i·sinh x</p>
|
|
163
|
+
<p>
|
|
164
|
+
<span class="tag">Reason</span>: sin z = (e<sup>iz</sup> − e<sup>−iz</sup>)/(2i); set z = i x ⇒ i(e<sup
|
|
165
|
+
>−x</sup
|
|
166
|
+
>
|
|
167
|
+
− e<sup>x</sup>)/2.
|
|
168
|
+
</p>
|
|
169
|
+
<p>
|
|
170
|
+
<span class="tag">Check</span>: sin(i x) ≈ <span id="check7a"></span> ; i·sinh(x) =
|
|
171
|
+
<span id="check7b"></span>
|
|
172
|
+
</p>
|
|
173
|
+
</section>
|
|
174
|
+
|
|
175
|
+
<section id="case8">
|
|
176
|
+
<h2>asin(i·x) with x = 0.73</h2>
|
|
177
|
+
<hr />
|
|
178
|
+
<p><span class="tag">Answer</span>: asin(i x) = i·asinh x</p>
|
|
179
|
+
<p>
|
|
180
|
+
<span class="tag">Reason</span>: Definition asin z = −i·log( i z + √(1 − z²) ); put z = i x and use √(1 + x²)
|
|
181
|
+
− x > 0; also ln(√(1 + x²) − x) = −ln(x + √(1 + x²)).
|
|
182
|
+
</p>
|
|
183
|
+
<p>
|
|
184
|
+
<span class="tag">Check</span>: i·asinh(x) = <span id="check8a"></span> ; −i·ln(√(1 + x²) − x) =
|
|
185
|
+
<span id="check8b"></span>
|
|
186
|
+
</p>
|
|
187
|
+
</section>
|
|
188
|
+
|
|
189
|
+
<section id="case9">
|
|
190
|
+
<h2>sqrt(i)</h2>
|
|
191
|
+
<hr />
|
|
192
|
+
<p><span class="tag">Answer</span>: √i = (1 + i)/√2</p>
|
|
193
|
+
<p>
|
|
194
|
+
<span class="tag">Reason</span>: i = e<sup>iπ/2</sup>; √i = e<sup>iπ/4</sup> = cos(π/4) + i sin(π/4) = (1 +
|
|
195
|
+
i)/√2.
|
|
196
|
+
</p>
|
|
197
|
+
<p><span class="tag">Check</span>: (√i)² ≈ <span id="check9"></span></p>
|
|
198
|
+
</section>
|
|
199
|
+
|
|
200
|
+
<section id="case10">
|
|
201
|
+
<h2>acos(2)</h2>
|
|
202
|
+
<hr />
|
|
203
|
+
<p><span class="tag">Answer</span>: acos(2) = i·ln(2 + √3)</p>
|
|
204
|
+
<p>
|
|
205
|
+
<span class="tag">Reason</span>: For |z| > 1, acos z = i ln(z + √(z² − 1)) (principal). For z = 2: √3 and
|
|
206
|
+
ln(2 + √3).
|
|
207
|
+
</p>
|
|
208
|
+
<p>
|
|
209
|
+
<span class="tag">Check</span>: cos(acos(2)) = cos(i·ln(2 + √3)) = cosh(ln(2 + √3)) ≈
|
|
210
|
+
<span id="check10"></span>
|
|
211
|
+
</p>
|
|
212
|
+
</section>
|
|
213
|
+
|
|
214
|
+
<section id="case11">
|
|
215
|
+
<h2>asin(2)</h2>
|
|
216
|
+
<hr />
|
|
217
|
+
<p><span class="tag">Answer</span>: asin(2) = π/2 − i·ln(2 + √3)</p>
|
|
218
|
+
<p><span class="tag">Reason</span>: asin z = π/2 − acos z and acos(2) = i ln(2 + √3).</p>
|
|
219
|
+
<p><span class="tag">Check</span>: sin(asin(2)) = cosh(ln(2 + √3)) ≈ <span id="check11"></span></p>
|
|
220
|
+
</section>
|
|
221
|
+
|
|
222
|
+
<section id="case12">
|
|
223
|
+
<h2>i^i</h2>
|
|
224
|
+
<hr />
|
|
225
|
+
<p><span class="tag">Answer</span>: i^i = e<sup>−π/2</sup></p>
|
|
226
|
+
<p>
|
|
227
|
+
<span class="tag">Reason</span>: i^i = e^{i log(i)} with principal log(i) = iπ/2 ⇒ exponent = −π/2 (real).
|
|
228
|
+
</p>
|
|
229
|
+
<p><span class="tag">Check</span>: numeric value ≈ <span id="check12"></span></p>
|
|
230
|
+
</section>
|
|
231
|
+
|
|
232
|
+
<footer>Numeric tolerance ~1e−12.</footer>
|
|
233
|
+
</main>
|
|
234
|
+
|
|
235
|
+
<script>
|
|
236
|
+
(function () {
|
|
237
|
+
const PI = Math.PI;
|
|
238
|
+
|
|
239
|
+
// Complex helpers (minimal)
|
|
240
|
+
const c = (re, im) => ({ re, im });
|
|
241
|
+
const add = (z, w) => c(z.re + w.re, z.im + w.im);
|
|
242
|
+
const mul = (z, w) => c(z.re * w.re - z.im * w.im, z.re * w.im + z.im * w.re);
|
|
243
|
+
const square = (z) => mul(z, z);
|
|
244
|
+
const expComplex = (a, b) => c(Math.exp(a) * Math.cos(b), Math.exp(a) * Math.sin(b));
|
|
245
|
+
|
|
246
|
+
const fmtC = (z, d = 12) => {
|
|
247
|
+
const r = +z.re.toFixed(d);
|
|
248
|
+
const i = +z.im.toFixed(d);
|
|
249
|
+
if (Math.abs(i) < Math.pow(10, -d)) {
|
|
250
|
+
return r.toFixed(d);
|
|
251
|
+
}
|
|
252
|
+
if (Math.abs(r) < Math.pow(10, -d)) {
|
|
253
|
+
return i.toFixed(d) + 'i';
|
|
254
|
+
}
|
|
255
|
+
const sign = i >= 0 ? ' + ' : ' - ';
|
|
256
|
+
return r.toFixed(d) + sign + Math.abs(i).toFixed(d) + 'i';
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
const cosh = (x) => 0.5 * (Math.exp(x) + Math.exp(-x));
|
|
260
|
+
const sinh = (x) => 0.5 * (Math.exp(x) - Math.exp(-x));
|
|
261
|
+
|
|
262
|
+
const setText = (id, text) => {
|
|
263
|
+
const el = document.getElementById(id);
|
|
264
|
+
if (el) el.textContent = text;
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
// Case 1
|
|
268
|
+
const i = c(0, 1);
|
|
269
|
+
setText('check1', fmtC(square(i)));
|
|
270
|
+
|
|
271
|
+
// Case 2
|
|
272
|
+
const eipi = expComplex(0, PI);
|
|
273
|
+
setText('check2', fmtC(add(eipi, c(1, 0))));
|
|
274
|
+
|
|
275
|
+
// Case 3
|
|
276
|
+
const exp_log_minus1 = expComplex(0, PI);
|
|
277
|
+
setText('check3', fmtC(exp_log_minus1));
|
|
278
|
+
|
|
279
|
+
// Case 4
|
|
280
|
+
const exp_log_minusi = expComplex(0, -PI / 2);
|
|
281
|
+
setText('check4', fmtC(exp_log_minusi));
|
|
282
|
+
|
|
283
|
+
// Case 5 (x = 0.73)
|
|
284
|
+
const x = 0.73;
|
|
285
|
+
const exp_log_ix = expComplex(Math.log(x), PI / 2);
|
|
286
|
+
setText('check5a', fmtC(exp_log_ix));
|
|
287
|
+
setText('check5b', fmtC(c(0, x)));
|
|
288
|
+
|
|
289
|
+
// Case 6 cos(i x) = cosh x
|
|
290
|
+
const cos_ix = c(0.5 * (Math.exp(-x) + Math.exp(x)), 0);
|
|
291
|
+
setText('check6a', fmtC(cos_ix));
|
|
292
|
+
setText('check6b', cosh(x).toFixed(12));
|
|
293
|
+
|
|
294
|
+
// Case 7 sin(i x) = i*sinh x
|
|
295
|
+
const sin_ix = c(0, 0.5 * (Math.exp(-x) - Math.exp(x)));
|
|
296
|
+
setText('check7a', fmtC(sin_ix));
|
|
297
|
+
setText('check7b', fmtC(c(0, sinh(x))));
|
|
298
|
+
|
|
299
|
+
// Case 8 asin(i x) = i asinh x
|
|
300
|
+
const asinhx = Math.asinh(x);
|
|
301
|
+
const alt = -Math.log(Math.sqrt(1 + x * x) - x);
|
|
302
|
+
setText('check8a', fmtC(c(0, asinhx)));
|
|
303
|
+
setText('check8b', fmtC(c(0, alt)));
|
|
304
|
+
|
|
305
|
+
// Case 9 sqrt(i) = (1+i)/√2
|
|
306
|
+
const rooti = c(1 / Math.sqrt(2), 1 / Math.sqrt(2));
|
|
307
|
+
setText('check9', fmtC(square(rooti)));
|
|
308
|
+
|
|
309
|
+
// Case 10 acos(2)
|
|
310
|
+
const y = Math.log(2 + Math.sqrt(3));
|
|
311
|
+
setText('check10', cosh(y).toFixed(12));
|
|
312
|
+
|
|
313
|
+
// Case 11 asin(2)
|
|
314
|
+
setText('check11', cosh(y).toFixed(12));
|
|
315
|
+
|
|
316
|
+
// Case 12 i^i
|
|
317
|
+
setText('check12', Math.exp(-PI / 2).toFixed(12));
|
|
318
|
+
})();
|
|
319
|
+
</script>
|
|
320
|
+
</body>
|
|
321
|
+
</html>
|