ごとけんです
In message "[ruby-list:8648] sin(complex)"
on 98/07/08, toyofuku / juice.or.jp <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