ごとけんです
In message "[ruby-list:8659] Re: sin(complex)"
on 98/07/09, Shin-ichro Hara <sinara / blade.nagaokaut.ac.jp> writes:
>原です。
>sinh は
>
> sinh(x) = (exp(x)-exp(-x)) / 2
>
>かな。ついでに
あう; またもやありがとうございます。
# 原先生と呼ばせて下さい ^^;;
> exp(x + iy)= exp(x)(cos(y) + i sin(y))
> cos(x + iy)= cos(x)cosh(y) - i sin(x)sinh(y)
> sin(x + iy)= sin(x)cosh(y) + i cos(x)sinh(y)
どうもです。ぼくが計算してたのと同じです。
ところで、Complex#** を考えるとき、
数学的な定義によると、まず、exp の逆関数として
log を定義し、
z**w = exp(w log(z))
で与えられます。ここで、 log は無限個の値を持つ
多価関数なので、 z**w も無限個の値を持つことに
なります。で、一つの値(主値)を決めるんですが、
この範囲はどんなライブラリに準拠するのが自然なん
でしょうか?
FORTRAN あたりで標準化されてればそれに合わせるのが
よいと思います。
なお僕が自然だと思うのは、log(z) の虚部 arg(z) を
libm の atan2(x,y) の範囲に合わせるとゆー、
いまの complex.rb の仕様(?)と同じモノです。
が、この atan2 の範囲は標準化されてるのでしょうか?
# IEEE の浮動点小数演算の規格の解説がどっか行ってしまった ;_;
-- gotoken