SnowflakeのDIV0NULL関数

Snowflakeとは大規模データを処理するための日本製のプラットホームらしいです。そのSnowflakeになんと0除算が採用されているとのことです。勿論、我々が主張している$1/0=0$と同じものです。以下のサイトに解説があるので、見てみましょう。

dev.classmethod.jp

ここに次の記述がります。

一言でいうと、除算(割り算)を行う場合、分母が「0」や「NULL」であってもエラーやNULLを返すことなく、「0」を返す関数です。

これ以外にも以下のサイトにあるように0で割ると0を返す関数があるのですが、現在のところ違いがよくわかりません。 docs.snowflake.com

いずれにせよ、すばらしいですね。

酷い例

0除算をめぐる誤った主張のなかで、一番酷いと思われるのは1/0=\inftyです。

その理由は、先ずは良く定義されてもいない\inftyを持ち出していることです。

次に\inftyを持ち出す主張は連続性を仮定していると思われます。すなわち、以下のように考えたと思われます。

$x$が0に近くなれば、1/xはいくらでも大きい値をとる。よって、x=0でこの関数が連続なら、1/x=\inftyと考えてよいだろう。

算学小筌にあるアルベロスの問題

線分AB上の点Cについて、|BC|=2a, |CA|=2bとし、BC, CA, ABを直径とする円をそれぞれ\alpha, \beta, \gammaとします。 3円に囲まれた2つの合同な図形はそれぞれアルベロスと呼ばれます。ここでは算学小筌にあるアルベロスに関する次の問題を考えます。 問題([1]). \delta\alphaに外接し\gammaに内接する半径dの円で、\varepsilon\betaに外接し\gammaに内接する半径eの円である。この2円が外接するとき、次式が成り立つことを示せ。 e=\dfrac{a(a+b)^{2}(b-d)}{(a+b)^{2}b-(a-b)^{2}d}.\tag1

解答

先ずは、この問題の解答を与えます。点Cが原点で点Bの座標が(2a,0)となる座標系で考えます。円\delta\varepsilonの中心の座標をそれぞれ、(x_d,y_d), (x_e,y_e)とします。\deltaの中心から\alpha\gammaの中心への距離の平方は

(x_d − a)^{2} + y_d^{2} = (a + d)^{2},\tag2

(x_d − (a − b))^{2} + y_d^{2} = (a + b − d)^{2}\tag3

となります。同様に\varepsilonの中心から\beta\gammaの中心への距離の平方は

(x_e + b)2 + y_e^{2} = (b + e)^{2},\tag4

(x_e − (a − b))^{2} + y_e^{2} = (a + b − e)^{2}\tag5

となります。\delta\varepsilonの中心の距離の平方は次式で与えられます。

(x_d − x_e)^{2} + (y_d − y_e)^{2} = (d + e)^{2}.\tag6

(2), (3), (4), (5), (6)からx_d, y_d, x_e, y_eを消去すると、次式が得られます。

\dfrac{ab}{ed}-\left(\dfrac{a}{e}+\dfrac{b}{d}\right)+\left(\dfrac{a-b}{a+b}\right)^{2}=0.\tag7

これをeについて解き、(1)を得ます。

(d,e)=(0,a)となる場合

直線を半径0の円,直交する図形を接する図形と考えることができることを以前に述べました。 hoinori.hatenablog.com hoinori.hatenablog.com これらを考慮するとき、2円\delta\varepsilonとして、(1)や(7)からどんなものが導かれるのかを考えます([2])。先ず(1)より次式を得ます。

a-e=\dfrac{4a^{2}b}{(a+b)^{2}b-(a-b)^{2}d}d.\tag7

これより、a=eからd=0を得ます。よって、\alpha=\varepsilon\deltaは点円か直線です。\delta\alpha\gammaに接するので、点B, 直線ABBにおける\gammaの接線のいずれかと一致すると考えられます。これらを下図では\delta_1, \delta_2, \delta_3で表しています。ただし、\deltaは点または直線なので、問題文にある「内接する」と「外接する」は単に「接する」と読み替えています。

(d,e)=(b,0)となる場合

同様に、(d,e)=(b,0)となる場合を考察します。この場合には、\beta=\deltaで、\varepsilonは点円か直線です。\varepsilon\beta\gammaに接するので、点A, 直線ABAにおける\gammaの接線のいずれかと一致すると考えられます。これらを下図では\varepsilon_1, \varepsilon_2, \varepsilon_3で表しています。

(d,e)=(b,a)となる場合

さて、(7)より次式を得ます。

\left(\dfrac{a}{e}-1\right)\left(\dfrac{b}{d}-1\right)=\dfrac{4ab}{(a+b)^{2}}.

これより、次式を得ます。

\left(\dfrac{a}{e}-1\right)=\dfrac{4ab}{(a+b)^{2}}\Biggr/\left(\dfrac{b}{d}-1\right).

ここで、\dfrac{w}{z}=0w=0またはz=0が同値であることに注意すると、a=eからb=dが導かれます。すなわり、\alpha=\varepsilonなら、\beta=\deltaとなります(下図)。

[1] 牛島盛庸, 算学小筌, 1794, 東北大学デジタルコレクション.

[2] H. Okumura, The arbelos in Wasan geometry: a problem in Sangaku Shosen, Sangaku J. Math., 5 (2021), pp. 39-42. https://www.researchgate.net/publication/354854485_The_arbelos_in_Wasan_geometry_a_problem_in_Sangaku_Shosen

0除算算法による幾何学の考察例 1の改訂版

以前に述べた0除算算法に関する以下の記事の改訂版を述べます。 hoinori.hatenablog.com 先ずは0除算算法の復習から。次の定義を0除算算法と呼びます。

関数f(x)x=aにおける値をf(x)=\sum_{n=-\infty}^{\infty}C_n(x-a)^{n}とべき級数展開するとき、f(a)=C_0と定義する。

さて、ABが直径、中心がOの円を\alphaとします。半径を|AO|=aとし、これとABに平行な直線が2点P, Qで交わっています。た だし、Oが原点Aの座標が'(a,0)となる座標で考え、Pが第一象限にあると仮定します。さらに、2直線AB, PQの距離をsとします。

直線PQ上の点Zに対して、ZPQの間にあるときは、\delta_zPQZで接し、\alphaの劣弧PQに内接する円とします。ZPQの間にないときは、PQAと同じ側からZで接し、\alphaに外接する円とします(下図)。 Zの座標を(z,b), \delta_zの半径と中心の座標をそれぞれr, (z,w)とします。

さて、ZPQの間にあると仮定します。2円\alpha\delta_zの中心の距離の平方は z^{2}+w^{2}=(a-r)^{2}\tag 1 となります。これに w=b+r\tag 2 を代入した式をrについて解いて、次式を得ます。 r=\dfrac{a^{2}-b^{2}-z^{2}}{2(a+b)}\tag 3 以上より、(3)を前提にして、\delta_z(x,y)=(x-z)^{2}+(y-(b+r))^{2}-r^{2}とするとき、 \delta_zは次式で表されます。 \delta_z(x,z)=0.\tag4

次に、ZPQの間にないと仮定します。この場合に、z^{2}+w^{2}=(a+r)^{2}, w=b-rが成立しますが、これは(1)と(2)においてr の符号を変更することにより得られます。ですから、この場合にはrはマイナスの符号をもつとすれば、この場合にも\delta_zは(4)で表されます 。すなわち、いずれの場合にも\delta_zは(3)を前提にして、(4)で表されます。

そこで、\delta_z(x,y)z=\sqrt{a^{2}-b^{2}}におけるべき級数(Laurent)展開を考えます。次のようになります。

{\begin{align}
\delta_z(x,y)=\displaystyle\sum_{n=-\infty}^{\infty} C_n\left(z-\sqrt{a^{2}-b^{2}}\right)^{n}=\left((x-\sqrt{a^{2}-b^{2}})^{2}+(y-b)^{2}\right)\\
+2\left(\dfrac{-\sqrt{a+b}x+\sqrt{a-b}y+a\sqrt{a+b}}{\sqrt{a+b}}\right)\left(z-\sqrt{a^{2}-b^{2}}\right) \\
+\left(\dfrac{a+y}{a+b}\right)\left(z-\sqrt{a^{2}-b^{2}}\right) ^{2}.
\end{align}}

すなわち、n\ne 0, 1, 2ならC_n=0となります。それ以外のnについては、以下を得ます。

C_0=\left(x-\sqrt{a^{2}-b^{2}}\right)^{2}+(y-b)^{2},\tag5\nonumber

C_1=2\left(\dfrac{-\sqrt{a+b}x+\sqrt{a-b}y+a\sqrt{a+b}}{\sqrt{a+b}}\right),\tag6\nonumber

C_2=\dfrac{a+y}{a+b}.\tag7\nonumber

よって、C_0=0は点Pを表します。C_1=0は直線PRを表します。ただし、Rは優弧PQの中点です。また。C_2=0Rにおけ る\alphaの接線です。これらの図形を下図では赤で表しています。 ここで、点PRにおける\alphaの接線は、ともに\alphaPQに接すると考えることができます。直線PRはこれらと交わりますが、これらと同じ角度で交わります。

以上が0除算算法による考察です。直線PRRにおける\alphaの接線が点Pに深く関連する図形であることには否定できない事実であると思われます。しかし、なぜそのような図形が登場するのかについては説明が現時点ではできません。いずれにせよ、この例だけでも、0除算算法の凄さがかいま見られる思いがします。

一般化されたアルベロスの合同な円群

線分AB上の一点Cについて、直径がCB, CA, ABの半円をABの同じ側に作るとき、3半円の囲む図形をアルベロスと呼びます。これは以前にも考えました。$C$におけるABの垂線でアルベロスを分割するとき、それらの内接円は合同であることが知られていますが(図1の赤円)、これらはアルキメデスが研究したと考えられており、アルキメデスの双子の円と呼ばれます。今回はアルベロスを一般化して、そこに複数の合同な円が存在することを示します。

図1. アルベロスとアルキメデスの双子の円

一般化したアルベロス

先ず、一般化したアルベロスを定義します。直線AB上の2点$P$, $Q$ に対して、$PQ$を直径とする半円を$(PQ)$で表します。このような半円はすべてABの同じ側にあるものとします。(AB), $(A_1B_1)$, $(A_2B_2)$ が同心のとき、線分AB上の点$C$に対して、5個の半円 $\alpha_1=(CB_1)$, $\beta_1=(CA_1)$, $\alpha_2=(CB_2)$, $\beta_2=(CA_2)$, $\gamma=(AB)$ からなる図を考えます(図2)。$A=A_1=A_2$ならアルベロスが得られます。

図2. 一般化したアルベロス

次の定理を得ました。

定理. 2円$\delta_a$と$\delta_b$が接することなく、次の条件を満たせば、合同である。

(i) \delta_a\delta_b\gammaに内接する。または\delta_a\delta_b\gammaに外接する。

(ii) \delta_a\alpha_1は内接し、\delta_b\beta_1も内接する。または、\delta_a\alpha_1は外接し、\delta_b\beta_1も外接する。

(iii) \delta_a\alpha_2は内接し、\delta_b\beta_2も内接する。または、\delta_a\alpha_2は外接し、\delta_b\beta_2も外接する。

この定理を考えるとき、$\overrightarrow{AB}$と$\overrightarrow{A_iB_i}$が同じ向きか否か、$\delta_a$と$\alpha_i$が内接か外接か、$\delta_a$と\gammaが内接か外接かで場合分けすると、全部で$2^{5}=32$通りの場合があります。ここでは、この定理の証明は省略し、合同な2円が得られる場合を図3から図7で示します。

図3.

図4.

図5.

図6.

図7.

直線となる場合

さて、図5と図7に注目してください。図5ではすべて外接の状態、図7ではすべて内接の状態です。ここで、2円\delta_a\delta_bの半径が増加する場合を考えると、2円が直線になる場合がありそうです(図8)。|CB|=2a, |CA|=2b, |CB_i|=2a_i, |CA_i|=2b_i とするとき、\delta_a, \delta_bの半径 $r_a$, $r_b$は、図5については、次式で与えられます。 $$ r_a=\frac{ab(a_1+a_2)}{-aa_2+a_1(a_2-b)}=\frac{ab(b_1+b_2)}{-ab_1+b_1(b_1-b)}=r_b $$ 図7については、次式で与えられます。同じ分数式ですが、マイナスの符号が付きます。 $$ r_a=-\frac{ab(a_1+a_2)}{-aa_2+a_1(a_2-b)}=-\frac{ab(b_1+b_2)}{-ab_1+b_1(b_1-b)}=r_b $$ さて、それでは2円が直線になる場合を考えましょう。以下の以前の投稿を思い出してください。 hoinori.hatenablog.com すなわち、直線の円としての半径は0なので、 $$ \frac{ab(a_1+a_2)}{-aa_2+a_1(a_2-b)}=\frac{ab(b_1+b_2)}{-ab_1+b_1(b_1-b)}=0 $$ のときに2円は直線になります。分子は正なので、上式は次と同値です。 $$ -aa_2+a_1(a_2-b)=-ab_1+b_1(b_1-b)=0 $$ これを、abについて解くと、次式が得られます。これより、A_1, B_1, A_2, B_2を与えるとき、\delta_a\delta_bが直線となるABを求めることができます。 $$ (a,b)=\left(\frac{a_1b_2(b_1-a_2)}{a_1b_1-a_2b_2},\frac{a_2b_1(a_1-b_2)}{a_1b_1-a_2b_2}\right) $$

図8.