![](https://blogimg.goo.ne.jp/user_image/2c/9c/da43f7fb205497b17f0e6d141ff3f98d.jpg)
Zを複素平面上の点とし、f(Z)を任意の複素関数とするとき、複素関数:Z^f(Z)の実数部と虚数部を求める計算プログラムをサブルーチン化ておく。
そのために、Z^f(Z)の実数部と虚数部を以下のようにして求める。
Z=X+iY=R*e^iθとし,ここで、R=(X^2+Y^2)^0.5 ,θ=arctan(Y/X)から、Rとθは、このサブルーチンの入力値とする。また、任意のf(Z)の実数部(これをREFとする)と虚数部(これをIMFとする)も既に与えられているとする。
即ち、f(Z)=FZR+i*FZI とする。 (ここで、FZR , FZI は既知の実数とする)
(以下の計算式において掛け算の記号(*)は煩雑さを避けるため適宜省略する。)
Z^f(Z)=( R*e^iθ)^( FZR+i*FZI)=( (R*e^iθ)^FZR)*( (R*e^iθ)^iFZI )
=(R^FZR)*(e^(iθ*FZR))*(R^iFZI)*e^(-θ*FZI)
=(R^FZR)*e^(-θ*FZI)*e^(iθ*FZR)*R^(i*FZI)
ここで、ZF1=(R^FZR)*e^(-θ*FZI) とおくと、
Z^f(Z)=ZF1* ( e^(iθ*FZR)*R^(i*FZI) ) ・・・・・(1)
ここで、R=e^logR (但し、logの底はeとする) だから
R^(i*FZI)=(e^logR)^(i*FZI)=e^(i*logR*FZI)
従って、(1)より、
Z^f(Z)=ZF1*e^i(θ*FZR+logR*FZI)
ここで、ZF2=θ*FZR+logR*FZI とおくと、
Z^f(Z)=ZF1*e^(*ZF2)=ZF1*(cosZF2+i*sinZF2)
=ZF1*cosZF2 + i*(ZF1*sinZF2)
となるから、
Z^f(Z)の実数部= ZF1*cosZF2
Z^f(Z)の虚数部= ZF1*sinZF2
( 但し、ZF1=(R^FZR)*e^(-θ*FZI) , ZF2=θ*FZR+logR*FZI )
となり、Z^f(Z)の実数部と虚数部が求まった。
従って、Z^f(Z)の実数部と虚数部を、それぞれ、ZFZR,ZFZIとすれば、求めるサブルーチン・プログラムは下記のようになる。
20000 REM Z^(f(z)の計算:file name ZFZ
20010 IF R=0 THEN 20060
20020 ZF1=(R^FZR)*EXP(-TH*FZI)
20030 ZF2=TH*FZR+LOG(R)*FZI
20040 ZFZR=ZF1*COS(ZF2)
20050 ZFZI=ZF1*SIN(ZF2)
20060 RETURN