• 検索結果がありません。

複素関数とグラフィックス

N/A
N/A
Protected

Academic year: 2021

シェア "複素関数とグラフィックス"

Copied!
13
0
0

読み込み中.... (全文を見る)

全文

(1)

複素関数とグラフィックス

長崎大学教育学部数学教室 菅原民生

要約

複素関数には、実部の「等高線」と虚部の「等高線」が互いに直交しあう、

いわゆる等角写像の性質がある。実部を赤と白の縞、虚部を青と白の縞で表し

、赤と青の交わりを紫とすると、美しいグラフが得られる。そのグラフィック ス画面を作るには、N88Basicが依然として便利である。

本稿は、プログラムの基礎的な部分を、N88Basicのグラフィックス入門の テキストの形で解説している。

§ 1 平面を塗りつぶす

Practice 1

次の直接命令を一つづつ実行せよ。

SCREEN 3

LINE(500,150)-(600,200)

LINE(500,150)-(600,200) ,3 LINE(500,150)-(600,200) ,3,B LINE(500,150)-(600,200) ,3,BF

Practice 2

(1) 次のプログラムを打ち込んで実行せよ。

100 SCREEN 3 :CLS 2

110 FOR Q=150 TO 200

120 FOR P=500 TO 600

130 PSET(P ,Q)

140 NEXT P

150 NEXT Q :END

(2) 次のプログラムを追加して実行せよ。

スペースキーを打つごとに進行する事を観察せよ。

144 PRINT "q=";q

145 X$=INKEY$ :IF X$="u GOTO 145

−29−

(2)

( 3 )  

( 4 )  

次のプログラムを追加して実行せよ。

134  135 

PRINT 11 

Y$=INKEY$ 

P=II ;P 

:IF Y$="" GOTO 135 

RENUM 300

, 

100

を実行して番号がどう変わるかを観察せよ。

RENUM A

, 

B

, 

C

は B からを A から C きざみに番号を付け直す。

RENUM 100

, 

300

を実行して番号がどう変わるかを観察せよ。

プログラムは現在次のようになっていることを確かめよ。

100  SCREEN 3 :CLS 2  110  FOR Q=150 TO 200  120  FOR P=500 TO 600  130  PSET(P

Q) 

140  PRINT 11  P=" ;P 

150  Y$=INKEY$  :IF Y$="" GOTO 150  160  NEXT P 

170  PRINT lIQ=II;Q 

180  X$=INKEY$  :IF X$="" GOTO 180  190 NEXT 

Q : 

END 

今後、テキストのプログラムの文番号が、学習者のとずれることがあ るかも知れないが、あまり気にする必要はない。

P r a c t i c e  3  ( 1 )  

( 2 )  

( 3 )  

次のプログラムを追加して実行せよ。

130

行は一部書き替えである。

105 CL(0)=7  :CL(1)=5  :CL(2)=3  :CL(3)=1  125  SA=T(P/10) :S=SA‑IT(SA/2)*2 130  PSET(P

Q)

CL(2*S) 

次のプログラムを追加して実行せよ

0

130

行は一部書き替えである。

126  130 

126  130 

TA=IT(Q/10) :T=TA‑IT(TA/2)*2 PSET(P

Q)

CL(T) 

126

130

行を一部書き替えて実行せよ。

TA=INT(Q/10)  :T=TA‑I町T(TA/2)*2:L=2*S+T  PSET(P

Q)

CL(L) 

‑30一

(3)

赤い縞と青い縞が重なっているように見える。

この方法を今後頻繁に用いる。

~2

X  Y

直交座標系

P r a c

i c e4 

( 1 )  

次のプログラムを打ち込んで実行せよ。

( 2 )  

( 3 )  

( 4 )  

( 5 )  

100 SCREEN 3 :CLS 2  110 PC=320  :QC=200  :M=50  120 LINE(PC,O)(PC,399) 130 LINE(O,QC)(639,QC) 140 FOR Q=QC‑60 TO QC+60  150  FOR P=PC‑60 TO PC+60  160  X=(P‑PC)/M 

170  Y=(Q‑QC)/M 180  R=SQR(X*X+Y*Y)  190  IF R>l GOTO 210  200  PSET(P

Q) 

210  NEXT P  220 NEXT Q : END 

PC

, 

QC

, 

Mの値を変えたとき、画面はどう変わるか。

その役割を理解せよ。

次のプログラムを追加して実行せよ。

200行は一部書き替えである。

同心円の輸ができる。

115 CL(0)=7  :CL(1)=5  :CL(2)=3  :CL(3)=1  195  S=INT(R*10)  :S=S‑INT(S/4)*4  200  PSET(P

Q)

CL(S) 

次のプログラムを追加して実行せよ。

180行は一部書き替えである。

楕円の同心円ができる。

145 A=2  :B=l 

180  R=SQR(X/A*X/A+Y/B*Y/B)  次のプログラムを追加して実行せよ。

180

, 

195行は一部書き替えである。

放射状に色分けする。

‑31一

(4)

( 6 )  

180  190  195  200  210 

200 

O

で、割っているというエラー メッセージが出るのは、

TH=ATN(Y/X)/3.14159*16 

においてである。これを防ぐには

160  FOR P=PC‑60.5 TO PC+60 

とすればよい。その理由を考えよ。

~3 複素数の平面

P r a c t i c e  5 

( 1 )   次のプログラムを打ち込んで実行せよ。

( 2 )  

100 SCREEN 3 :CLS 2  110 PC=320  :QC=200  :M=10 

120 CL(0)=7  :CL(1)=5  :CL(2)=3  :CL(3)=1  130  L1NE(PC

O)(PC

399)

140 L1NE(O

QC)(639

QC) 150 FOR Q=QC‑60 TO QC+60 

160  FOR P=PC‑60.5 TO PC+60  170  X=(P‑PC)/M 

180  Y=(Q‑QC)/M

190  S=1NT(X)  :S=S‑1r(S/2)*2

200  T=1NT(Y)  :T=T‑1町r(T/2)*2 :L=2*S+T  210  PSET(P

Q)

CL(L) 

220  NEXT P  230 NEXT Q :END 

次のプログラムを追加して実行せよ。

これで第一象限が明かになる。

125 CL(4)=6  :CL(5)=4  :CL(6)=2 

212  1F Y>O AND X*(X‑.4)<0 THEN PSET(P

Q)

CL(L+4)  214  1F X>O AND Y*(Y‑.4)<0 THEN PSET(P

Q)

CL(L+4) 

‑32

(5)

(3)  ここで190から 214までを

s u b r o u t i n e

にするために変数XとYとを XVとYVとに変えておく。実行結果が変わらないことを確かめよ。

185  XV=X  :YV=Y 

190  S=1N1・(XV) :S=S‑1NT(S/2)*2 

200  T=1N1・(YV) :T=T‑1NT(T/2)*2  :L=2*S+T  210  PSET(P

Q)

CL(L) 

212  1F YV>O AND XV*(XV‑.4)<0 THEN PSET(P

Q)

CL(L+4)  214  1F XV>O AND YV*(YV‑.4)<0 THEN PSET(P

Q)

CL(L+4) 

( 4 )   s u b r

加七

i n e

にして切り放す。実行結果が変わらないことを確かめよ。

170  X=(P‑PC)/M  180  Y=(Q‑QC)/M 185  XV=X  :YV=Y  190  GOSl *PPP 220  NEXT 

p .  

230 NEXT Q : END  500  ' 

510 *PPP 

520  S=1NT(XV)  :S=S‑1r(S/2)*2

530  T=1NT(YV)  :T=T‑1町r(T/2)*2 :L=2*S+T  540  PSET(P

Q)

CL(L) 

550  1F YV>O AND XV*(XV‑.4)<0 THEN PSET(P

Q)

CL(L+4)  560  1F XV>O AND YV*(YV‑.4)<O THEN PSET(P

Q)

CL(L+4)  570 RETURN 

注意 185 XV=X  :YV=Y  は今後、複素関数を扱うときにさまざまな式に変 化するところである。

(5)  RENUM 100

, 

100で番号を整えておく。

~4 複素関数の例

まず複素関数

ω =f ( z )

の例として

ω =mz

を考える。ここに

m

は複素定 数である。

実部と虚部を明らかにすれば

ω =

+vi , m =α +  b i ,  z  =  x  +  y i  

と すると

すなわち である。

+vi = 

α(

+  b i )   ( x   +  y i )   = 

(ω ‑b

y )   + 

(αν

+  b x ) i  

=α x‑

by

,  v  = α y+bx 

‑33一

(6)

オイラーの表示 m

r (  c o s   0  + 

s i n   0 )を使えば m 倍することは

γ

倍して O だけ回転する事を意味する。

P r a t i c e  6 

( 1 )   P r a c t i c e  5  の ( 5 ) の一部を次のように変える。

下の例では m 倍することは

2

倍して

30

度だけの回転である。あらかじめ どのようなグラフになるか、予想をたてておくことが大切である。

155  ' 

156 A=1.73205  :B=1 

160  FOR Q=QC‑100 TO QC+100  170  FOR P=PC‑100  TO PC+100  180  X=(P‑PC)/M 

190  y=(Q‑QC)/M

200  XV=A*X‑B*Y  :YV=A*Y+B*X  210  GOSUB *PPP 

220  NEXT P  230 NEXT Q :END 

( 2 )   予想と逆になって、困惑している人が多いのではなかろうか。

ここは是非落ちついて、そもそもこのグラフは何を表しているのかをしっかり 理解する事が大切である。次のプログラムを追加して実行せよ。

注意 サブルーチン

*PPP

を消してしまわないように、あらかじめ

RE飢別 400

, 

250 

などで避難させておくとよい。

310 FOR NQ=‑5 TO 5  :Q=NQ*M+QC  320  LlNE(O

Q)(640

Q)

330 NEXT NQ 

340 FOR NP=‑5 TO 5 :P=NP*M+PC  350  LlNE(P,O)(P,399) 360 NEXT NP 

これは

z

平面の格子であり、グラフは

z

平面の中に、

ω

平面の図を描いた ものである。

次に複素関数 ω=f(z) の例として ω= Z 2を考える。

これも実部と虚部を明らかにすれば

+ v i   =  ( x   +  y i ) 2   =  ( x 2  ‑y 2 )   +  ( 2 x y ) i   すなわち

=X2̲y2 , v=2xy 

である。

同様にして複素関数 ω=Z3 については

u  +  v i   =  ( x   +  y i ) 3   =  ( x 3  ‑3 x y 2 )   +  ( 3 x 2 y ー が ) i

‑34一

(7)

すなわち である。

=

X3Xy2

, 

3x2y ̲y3 

P r a c t i c e  7 

これもあらかじめ予想をたてて

( 1 )  

複素関数

ω =

Z2のグラフを描こう。

おくことが大切である。

( 2 )  

200 

X V = X * X ‑ Y * Y   : Y V = 2 * X * Y  

複素関数

ω =

z3のグラフを描こう。

200 

X V = X * X * X ‑ 3 * X * Y * Y   : Y V = 3 * X * X * Y ‑ Y * Y * Y  

ω = 

Z2 

w= 

Z3 

オイラーの表示

z

r  ( c o s  8  +  i  s i n  8 )を使えばそれぞれ

Z2 =γ2 

( c o s  28  +  i  s i n  2 8 )  

Z3 

= γ 3 (   c o s  3 8   +  i  s i n  3 8 )  

を得る。グラフの結果と突き合わせて納得することが大切である。

注意1 Z平面の格子が煩わしければ、その手前で END  とすればよい。

注意2 倍 率 M

PとQに関する FORNEXTの範囲など適宜自分の気に 入った値に改めよ。

次に逆数の関数

ω 1

について考える。

これも実部と虚部を明らかにすれば

+ . 1

v~

=

一一一一一 Z n n  U n  

x  +  y i   x +  y 2   x +  y 2  

Z

‑y 

= v= 

z話 +y辺 x~

+y

すなわち

‑35‑

(8)

ω =

よは二つの関数Zl

= =  

Z2

ω =

土の合成関数と考えて、そのまま扱

Z Zl

う方が分かりよい。

すなわち

Y l   = =  

2xy 

‑Y l  

v== 

x i   +YI 

ft.2  Xl 

= =  

X‑‑y‑

, 

Z1 

x I +  y r '  

とするのである。

ω = 主 も

Zl

= =  

Z3

ω =

土の合成関数として扱う。

zv  Zl 

P r a c t i c e  8 

関数

ω 1

のグラフを描く。

︑ ︑ . ︐

I

a

︐ ︐

aE︑ ︑

:yv=‑y/(x*x+y*y) 

関数

ω =

よのグラフを描く。

Z" 

XV=X/(X*X+Y*Y) 

200 

( 2 )  

Xl=X*X‑Y*Y  :Yl=2*X*Y 

XV=Xl/(Xl*Xl+Yl*Yl)  : Y V =

Yl/(Xl*Xl+Yl*Yl)

200 

205 

どこに現れているかを確かめて、

関数

ω =

とのグラフを描け。

zv 

注意

P r a c

i c e5

で導入した第

1

象限が、

納得しておくこと。

( 3 )  

w== ・ で

Z~

w==‑l  z 

(9)

~5

指数関数、対数関数、三角関数

指数関数 ω = ♂は、その定義から実部と虚部に分ければ

+ v i   =  e

x

+

yi 

=  e

( c o s  

+  i  s i n  

y) 

すなわち u  =  e

c o s y ,  v  =  e

s i n y  

である。従って虚部は周期

で同じパタ}ンが繰り返される。

複素関数としての対数関数 ω =l o g zは実部と虚部がそれぞれ u  =  l o g   I  z  1 =   l o g   J 

X

y2

,  a r g z  

= 紅C

a n ( y / x )

で与えられて、多価関数であるから、値域を限る必要がある。イ直域は u<v く

としても ‑ π く

U

三π としてもよいのであるが、ここではまず B a s i c の関数

ATN(X)

を調べてみる。

π π  

V=ATN(X)

は一一く 2  ‑‑ ‑2 

U

くーを与える。すなわち第 1 象限と第 4 象限の角度し か出力しない。

V = ATN(Y/X)  :IF X<OENV=V+3.14159 

π 3 π  

と補正することにより、一一く 2  ‑‑‑2 

U

く?の範囲の値が得られるようになる。し かしさしあたってはこのことは使わない。

P r a c

i c e9 

( 1 )   指数関数

ω

=

eZ

のグラフを描け。

200  XV=EXP(X)*COS(Y)  :YV=EXP(X)*SIN(Y) 

( 2 )   対数関数 ω =l o g z のグラフを描け。

200  XV=LOG(X*X+Y*Y)/2 

205  YV=ATN(Y/X)  :IF X<O THEN YV=YV+PI 

ここで問題が起こる。 π が整数値でないため、グラフが美しくない。そこ 1 6  

でーという量を用意して一周を 1 6 等分する。

π 

135 K=16/3.14159 

200  XV=LOG(X*X+Y*Y)/2*K  205  YV=ATN(Y/X)*K 

‑37一

(10)

今度はうまく行った。しかも関数

A T N ( Y / X )

の補正を必要としていない。こ れはしかし偶然である。一周を

1 6

等分したため、第 1象限と第

3

象限、第

2

象限と第

4

象限が原点に関して対称になったため(

1 6

4

の倍数だから)の 見かけ上の現象にすぎない。

ω =   l o g z   ω =  expz 

複素関数としての三角関数は指数関数から作られる。

eU+e‑U  c o s z   = 

-~2

Z ρ ν

. ︒

b

一 一

2

z

ρ

u

一 一

z  n 

a u  

実部と虚部を取り出すには、双曲線関数との関係

s i n   i y  =  i  s i n h   y  c o s i y   =  c o s h y , 

と、加法定理を利用して

c o s   z  =  c o s ( x   + 勾) =  c o s x c o s i y  ‑ s i n x s i n i y  

cosxcoshy ‑i s i n x s i n h y  

s i n   z 

s i n ( x   +勾)

s i n   x  c o s   i y   +  c o s   x  s i n   i y  

=  sinxcoshy ‑i c o s x s i n h y   tanz  =竺 nz

も扱うことができる。

cosz  P r a c

i c e 1 0  

( 1 )  

三角関数

s i n z

のグラフを描け。

2 0 0   X V = S I N ( X ) * ( E X P ( Y ) + E X P ( ‑ Y ) ) / 2  

2 0 5   Y V = C O S ( X ) * ( E X P ( Y )

E X P (

Y ) ) / 2

(11)

( 2 )  

三角関数七

anz

のグラフを描け。

200  XA=SIN(X)*(EXP(Y)+EXP(ーY))/2 210  YA=COS(X)*(EXP(Y)EXP(Y))/2 220  XB=COS(X) *(EXP (Y)+EXP(ーY))/2 230  YB=‑SIN(X)*(EXP(Y)EXP(‑Y))/2 240  XV=(XA*XB+YA*YB)/(XB*XB+YB*YB)  250  YV=(YA*XB‑YB*XA)/(XB*XB+YB*YB) 

初 =

S l n z  

ω =   tanz 

~6 有理関数の零点と極

これまでのグラフを見ると、第一象限を示す黄色の部分があるのでかろうじ てどこが零点かを判別することが出来る。他方、

ω =   l o g z

ω=logl =  

‑39‑

(12)

‑logz では原点に同心円が現れる。このことから分かるように、一般に有 理関数などでは l o gを付けると零点と極を明示することができる。例えば

( z

α 1 ) ( z ‑ α 2 )  

( z ‑ a

n) 

のグラフには各向と各 b

i

とに同心円が現

( z  ‑ b

t

( z  ‑ b

2) 

( z  ‑ b

m) 

れる。

P r a c t i c e  1 1  

(z 

‑1) 

( 1 )   ω =   l o g   のグラフを描け。

( z   + 

1) 

アポロニウスの円束と l と4 を通る円束とが互いに直角に交わる。

220  XA=X‑l  :YA=Y  :XB=X+l  :YB=Y  230  XC=(XA*XB+YA*YB)/(XB*XB+YB*YB)  240  YC=(YA*XB‑YB*XA)/(XB*XB+YB*YB)  250  XV=LOG(XC*XC+YC*YC)/2*K 

260  YV=ATN(YC/XC)*K 

( 2 )   l o g ( z  ‑1 )   ( z  +  1 )のグラフを描け。

220  XA=X‑l  :YA=Y  :XB=X+l  :YB=Y  230  XC=XA*XB‑YA*YB 

240  YC=YA*XB+YB*XA 

250  XV=LOG(XC*XC+YC*YC)/2*K  260  YV=ATN (YC/XC) *K 

零点同士または極同士は青い線から分かるように互いに反発しあ

フ。

それに対して零点と極は互いに引き合う。

( Z 2   +  1 )  

( 3 )   l o g   のグラフを描け。

( Z 2  ‑ 4 )  

( z  ‑

2 ‑

i )   ( z  ‑

+  i )  

( 4 )   l o g   のグラフを描け。

( z   + 

2 ‑

i )   ( z   + 

+  i )  

‑40‑

(13)

14

i

二 +

Z

Z

σ 0  

一 一

ω =   l o g   ( z  ‑1 )   ( z   +  1 )  

‑41‑

参照

関連したドキュメント

12月 米SolarWinds社のIT管理ソフトウェア(orion platform)の

ある周波数帯域を時間軸方向で複数に分割し,各時分割された周波数帯域をタイムスロット

Toshihiro Shirakawa and Ryuhei Uehara Common Developments of Three Different Orthogonal Boxes, The 24th Canadian Conference on Computational Geometry CCCG 2012, pp... The bible of

[Co] Coleman, R., On the Frobenius matrices of Fermat curves, \mathrm{p} ‐adic analysis, Springer. Lecture Notes in

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence

しかし , 特性関数 を使った証明には複素解析や Fourier 解析の知識が多少必要となってくるため , ここではより初等的な道 具のみで証明を実行できる Stein の方法

○○でございます。私どもはもともと工場協会という形で活動していたのですけれども、要

第9図 非正社員を活用している理由