From: gotoken@... (GOTO Kentaro) Date: 1998-07-09T12:37:18+09:00 Subject: [ruby-list:8657] sin(complex) ごとけんです In message "[ruby-list:8648] sin(complex)" on 98/07/08, toyofuku@juice.or.jp writes: > 豊福@パパイヤです。 >> complex ** complex は正しいような気がします。 >> sin と cos は両方とも虚数部の符号が逆のような気がするの >> ですがどうやって確認したものか。 > > やっと http://www.rkmath.rikkyo.ac.jp/~kida/ubasic.htm >から UBASIC を落としてきて確認しました。 UBASIC で検算ってのもなんか本質的ではないので ^^;; L.V.アルフォースの教科書「複素解析」(現代数学社)で定義だけ 調べてみました。数学の表記法を使って書きます。 まず複素数 z について exp(z) とは単に微分方程式 f(z) = f'(z), 初期値 f(0) = 1 の解の表記法です(存在は証明される)。また、exp(z) が指数法則 exp(a+b) = exp(a)exp(b) を満たすことは微分の性質と上の微分方程式だけから分かります。 # 複素解析では先に代数則と収束と微分と解析関数が定義されます。 これを使って、 sin(z) と cos(z) は sin(z) = (exp(iz) - exp(-iz)) / 2i cos(z) = (exp(iz) + exp(-iz)) / 2 で定義されます。これからオイラーの公式 exp(iz)= cos z + i sin(z) が導かれます。 # 複素平面のような幾何を一切用いないで済むとこがポイント。 # 偏角も exp の逆関数 log の虚部として幾何学的でない定義を # 与えられる。 ここまでは複素数一般のはなしですが、 上の sin, cos, の定義とオイラーの公式、指数法則、 そして双曲型三角関数 cosh(x) = (exp(x)+exp(-x)) / 2 sinh(x) = (exp(x)-exp(-x)) / 2i および、 ii = -1 1/i = iiii/i = iii = -i を使うと libm で演算できる実装が求まります。 んが、時間がなくなったのでここまで (__; -- gotoken