解けない方程式を解いてみる
A trial for solving equations including complex numbers
作花 一志 （京都情報大学院大学）
Kazushi Sakka（The Kyoto College of Graduate Studies for Informatics）
Abstract
本稿は実数解をもたない複素数を未知数とする方程式を解く一つの試みである。与えられた方程式を漸化式の形に変形し 50 回の繰り返し演算の結果を複素平面上で表現した。
This article is an attempt to solve an equation that makes a complex number unknown without areal number solution. The given equation was transformed into a recurrence formula ,and the resultof 50 iterative operations was expressed on the complex plane.

■ 1．グラフ描画

この 3 行だけで図 1 が得られる。col ＝の後の数はカラーコードで 1（黒 : 通常省略），2（赤），3（緑），方程式を解くための最初の段階はグラフを描くこと で あ り， そ の 最 も 簡 単 な 方 法 は ブ ラ ウ ザ

4（青），5（シアン），6（マゼンタ），7（黄），8（グレー）である。

（GoogleChrome など）で関数名を検索することで一般に関数 f(x) を定義してグラフを描くにはある。Wolfram Alpha でも容易に描ける。R 言語

f ＝ function(x) sin(x)で y ＝ sin(x) を－ 5 ≦ｘ≦ 5 の範囲で描くにはcurve(f(x), － 5, 5)x 軸 y 軸付きでcurve(sin(x), － 5,5)とすればよい。第 1 行は関数定義である。＝のabline(v ＝ 0,col ＝ 8)

代わりに < －を使うことも多い。

abline(h ＝ 0,col ＝ 8)

またここに別の関数 cos(x) のグラフを重ねて描く時には add ＝ T を付ける。これを付けないと前に描いたグラフは消えてしまう。
f ＝ function(x) sin(x)g ＝ function(x) cos(x)curve(f(x), － 5, 5)
curve(g(x), － 5, 5, lty ＝ 2,add ＝ T)
abline(v ＝ 0, col ＝ 8)
abline(h ＝ 0, col ＝ 8)
第 4 行の後 lty ＝に続く数は線のスタイルで1（実線を表す。

図1

74

NAIS Journal

y ＝ sinx通常省略）2（破線）3（点線）ち y ＝ f(x) の逆関数 x ＝ f －1(y) において y ＝ 0 となる x ＝ f － 1(0) を求めることである。
# 方程式 f(x)=0 の f(x) を与える
f ＝ function(x) x^2 － 2^xcurve(f(x), － 6,6)
# f(x) プロット
abline(h ＝ 0, col ＝ 4)
# 青で X 軸を描く
abline(v ＝ 0, col ＝ 4)
# 青で y 軸を描く
x1= ;x2=ans ＝ uniroot(f, c(x1, x2))
text ( － 1, － 2, ans$root, col=2)
title(main="Equation x^2=2^x")
図2y ＝ sinx

y ＝ cosx

方程式解法# 整方程式 x2 ＋ 2x － 3=0 の解
polyroot(c( － 3, 2, 1))
グラフを描いてみるともう一つ負の解があるが，方程式を解くという学習は中学校以来学んでいる

これは数値的にしか求まらない。その解法は昔からが，公式によって解ける方程式は 1 次方程式と 2多数開発されているが，詳しくは数値計算の本を参次方程式くらいなもので，きわめて例外である。

照されたい。R では uniroot という便利な関数が装整方程式を R で解くには係数をベクトルで与えて polyroot 関 数 を 使 え ば よ い。x ＋ 2x － 3 ＝ 02

備されている。ｘ軸との交点の左右に適当な数 x1と x2 を取り
ans ＝ uniroot(f, c(x1, x2)) とするだけでよい。の解はpolyroot(c( － 3,2,1)) より求まる。( ) 内は昇べき順の係数である。
1 ＋ 0iはコンソールとグラフィック画面に表示される。な－ 3 ＋ 0i

これはｘ＝ 1，－ 3 を表す。

また 2x ＋ x － 2x ＋ 3 ＝ 0 の解は polyroot(c(3,3解は ans$root に収まっていて，数値－ 0.7666825

2－ 2,1,2)) よりお四捨五入して小数点第 3 位まで表すにはround(ans$root,3) とする。
これにより関数を変更すればどんな方程式でも解[1] 0.5767283 ＋ 0.7580072i －ける。ただしもちろん実根だけであるが。

1.6534566 ＋0.0000000i 0.5767283 － 0.7580072iと求まるが 2 番目の値は実数で他は複素数であでも x1, x2 にどんな値を与えるか？グラフを描いてみてから x1 ＝－ 2, x2 ＝ 0 とｘ軸との交点のる。
分数方程式，無理方程式は整方程式に変形してから解けばよい

左右の点を決めてもいいが，もっと素晴らしい方法がある。locator を使えばグラフとｘ軸との交点を挟む 2 点をクリックするとその 2 点のｘ座標が x1,次に非線形方程式

x － 2 ＝ 0 を解いてみよう。
2xx2 となるのだ。

2 をｙと置き換えて…などとしてもうまくいかな
xい。置換が悪いのではなく，そもそもいわゆる数学的解法が無理なのだ。受験技術に長けた大学生よりむしろ直観力のある小中学生のほうが早く解くことができる。x ＝ 2 としてみると 22 － 22 ＝ 0 だから解であることはすぐにわかり，また x ＝ 4 も明らかに解である。しかし解はこの 2 つだけだろうか。

z ＝ locator(2); # 曲線とｘ軸との交点を挟む 2点をクリック
points(z, col ＝ 4)
x1 ＝ z$x[1] ; x2 ＝ z$x[2]# クリックした
点の x 座標ans ＝ uniroot(f, c(x1, x2))
# その間の解

これ以上は直観でも解析でもわからない。
方程式 f(x) ＝ 0 の解とは y ＝ f(x) のグラフを描いて x 軸との交点の x 座標のことである。すなわ

NAIS Journal75図32x ＝ x2 の解

解けないものを解く
cosx ＝ 2
そんなもの解けるはずがない。－ 1 ≦ cosx ≦ 1だから解なしだ。でも図4x2 ＝－ 1 は高校 1 年生でcosx ＝ 2 の解も± i と解くのだから，この方程式も複素数の範囲で考えてみよう。
・Euler の公式より
cos(x) ＝ (exp(ix) ＋ exp( － ix))/2exp(ix) ＝y とすると次の 2 次方程式が得られ
y － 4y ＋ 1 ＝ 0

print acos(2){0.0, － 1.31695789692482}

2y ＝ 2 ±√3¯exp(ix) ＝ 2 ±√3¯ だから・gnuplot にて

よって

x ＝ ilog(2 ±√3¯ )gnuplot では複素数を｛｝内のコンマの前が実部でコンマの後が虚部で表す。
∴・Wolfram Alpha を使ってが得られる。

x ＝－ 1.31695789692482i

逆関数を使えば x ＝ arccos(2) であるから
x ＝ acos(2) と入力すれば 図 4x ＝ ilog(2 ＋√3¯ ) ＝ 1.31696i － 1.31696i

x ＝ log(x)解は純虚数である

図576

NAIS Journal

y＝xy ＝ log(x)y ＝ x と y ＝ log(x) は交点を持たないからこの方
程式は実解なしであるがでは実部も虚部も 0 になるような複素数はどうやって求めるか？
複素平面上でそのような数を試行錯誤で探してい・Wolfram Alpha で y ＝ x － log(x) のグラフを描く。
ただし log(|x|) としてある
虚部では x < 0 で－π，x > 0 では 0 であり実部では x ＝－ 0.6 あたりで x 軸と交点があくしかない。それにはある適当な初期値 z[1] を与えて漸化式 z[k ＋ 1] ＝ log(z[k]) を何回か繰り返し計算する。Z[1] ＝ 1 ＋ 2i として Excel で計算した
ところ 25 回で収束した。結果は表 1 に載せた。
下記プログラムでは z[1] としてマウスクリックしりそうである。

た点の x 座標，y 座標をそれぞれ実部，虚部とする。

図6

y ＝ x-log(x)log(abs(x)) ＝ 0」と入力すると下図が得られ x ＝－ 0.567 で x － log(x) の値は 0 － i πになる。
∴x ＝－ 0.567########## z=log(z) ###########
plot(0,0,xlim=c(-5,5), ylim=c(-5,5),type="n",xlab="real",ylab="imag")# 座標軸取りabline(h=0,col=8);abline(v=0,col=8)
w=locator(1);points(w,col=2)(u=w$x) ;(v=w$y)z[1]=complex(re=u,im=v)# 複素数形成for (k in 1:50)
z[k ＋ 1]=log(z[k])# z=log(z) 計算
paste(k＋1," ",z[k＋1]," ",z[k],"****") # z(k) 出力
k=1:50points(z[k],col=6,type="l")# z(k) プロット
px=Re(z[50]);rx=round(px,3)
py=Im(z[50]);ry=round(py,3)text(-1,-4,paste("ans ＝ ",rx," ＋ ",ry," i"),col=4)
title("x=log(x)")
繰り返す回数を 50 とし，z[k] を順に線で結んでいった結果が図 8 で巻き込んだ点に収束した。
このようにしてz ＝ 0.318 ＋ 1.337iという解が得られた。なおこれと共役な複素数も解となる事は z ＝ 0.318 － 1.337i において z － log(z)の実部も虚部 0 であることで確かめられる。

図7x-log(x) ＝ 0 の解

図8

z[k ＋ 1] ＝ log(z[k])NAIS Journal

77

ところが与方程式は z[k ＋ 1] ＝ exp(z[k]) という漸化式でも変形できる。この場合は z は発散する。

図 10
図9

与方程式を z[k ＋ 1] ＝ sqrt(2^z[k])という漸化式に変形し前述のを実行するとｚ＝ 2 を① z ＝ log(z － 2)z[k ＋ 1] ＝ log(z[k] － 2))

z ＝ 0.861±2.073i

z[k ＋ 1] ＝ exp(z[k]) ＋ 2

発散②z ＝2y ＝ 2xz[k ＋ 1] ＝ exp(z[k])同様の方法で次の方程式が解けた。

2y ＝ x2得る。（図 11a）zz[k ＋ 1] ＝ sqrt(2^z[k])z＝2

z[k ＋ 1] ＝－ sqrt(2^z[k])z ＝－ 0.7067

z[k ＋ 1] ＝ 2*log(z[k])/log(2) z ＝ 4③ z2 ＝ log(z)z[k ＋ 1] ＝ sqrt(log(z[k]))z ＝ 0.614 ± 0.681i

z[k ＋ 1] ＝－ sqrt(log(z[k])) z ＝－1.213－1.008i
z[k ＋ 1] ＝ exp(z[k]^2)

発散④ zlog(z) ＝ 1
z[k ＋ 1] ＝ 1/log((z[k]))z ＝ 0.170± 0.4545i

z[k ＋ 1] ＝ exp(1/z[k])z ＝ 1.763
図 11a② z2 ＝ 2z を解いてみよう。このグラフは図 10のようになり実は 3 個の実数解が存在する。

78

NAIS Journalz[k ＋ 1] ＝ sqrt(2^z[k])なお③は最初の漸化式と 3 番目の漸化式による解は原式を満たさない。
このように変形する漸化式によって異なる値に収束したり発散したりすることもありる。これらの漸化式で得られた解がユニークな解であるともいえず，さらに考察を進めていく必要がある。
本研究は「国際化を考慮した社会的ネットワーキング指向の次世代 e ラーニング基盤の開発（日本学術振興会研究費番号 16H03087，研究者代表・岡本敏雄氏）」のサポートの下で行われている。
図 11bz[k ＋ 1] ＝ sqrt(2^z[k])◆著者紹介

また z[k ＋ 1] ＝－ sqrt(2^z[k])という漸化式に変形し前述の方法を実行するとｚ＝ 0.7067 を得る。図 11b
さらに z[k ＋ 1] ＝ 2*log(z[k])/log(2) という漸化式に変形し前述の方法を実行するとｚ＝ 4 を得る。
（図 11c）

図 11c

作花

一志

Kazushi Sakka

京都情報大学院大学教授
京都大学理学研究科修了 理学博士
元京都コンピュータ学院鴨川校校長
元京都大学理学部・総合人間学部講師
元国際日本文化研究センター研究員
元日本天文教育普及研究会編集委員長

z[k ＋ 1] ＝ 2log(z[k])/log2

NAIS Journal

79

初期値

実部＝ 1.0z180

NAIS Journal

虚部＝ 2.0z2 = log(z1)1

1 ＋ 2i

0.80471895621705 ＋ 1.10714871779409i

20.80471895621705 ＋ 1.10714871779409i

0.313864371353433 ＋ 0.942283727201657i

30.313864371353433 ＋ 0.942283727201657i-0.0068418652546109 ＋ 1.24926566277629i

4-0.0068418652546109 ＋ 1.24926566277629i

0.222570905856397 ＋ 1.57627298164417i

50.222570905856397 ＋ 1.57627298164417i

0.464933936134835 ＋ 1.43052292556221i

60.464933936134835 ＋ 1.43052292556221i

0.408248326417302 ＋ 1.25655558534005i

70.408248326417302 ＋ 1.25655558534005i

0.278548777085706 ＋ 1.25665961584999i

80.278548777085706 ＋ 1.25665961584999i

0.252438828211082 ＋ 1.35266502472157i

90.252438828211082 ＋ 1.35266502472157i

0.319194479618421 ＋ 1.38629542388733i

100.319194479618421 ＋ 1.38629542388733i

0.352463788729392 ＋ 1.34449054090608i

110.352463788729392 ＋ 1.34449054090608i

0.329248244075426 ＋ 1.31441156926825i

120.329248244075426 ＋ 1.31441156926825i

0.303817025678083 ＋ 1.32535561684757i

130.303817025678083 ＋ 1.32535561684757i

0.307287941803104 ＋ 1.34545524788161i

140.307287941803104 ＋ 1.34545524788161i

0.322155879781029 ＋ 1.34625799696145i

150.322155879781029 ＋ 1.34625799696145i

0.325170725822681 ＋ 1.33591589769881i

160.325170725822681 ＋ 1.33591589769881i

0.318396150720572 ＋ 1.3320327934074i

170.318396150720572 ＋ 1.3320327934074i

0.314487621846114 ＋ 1.33616846864771i

180.314487621846114 ＋ 1.33616846864771i

0.316764571223859 ＋ 1.33963826255667i

190.316764571223859 ＋ 1.33963826255667i

0.319601627145393 ＋ 1.33860567414545i

200.319601627145393 ＋ 1.33860567414545i

0.319348229932126 ＋ 1.33642687214758i

210.319348229932126 ＋ 1.33642687214758i

0.3177643507187 ＋ 1.33623800525547i

220.3177643507187 ＋ 1.33623800525547i

0.317363270621038 ＋ 1.33732763868911i

230.317363270621038 ＋ 1.33732763868911i

0.318067375933872 ＋ 1.33779493862944i

240.318067375933872 ＋ 1.33779493862944i

0.318516445454639 ＋ 1.33737519781771i

250.318516445454639 ＋ 1.33737519781771i

0.318295066809781 ＋ 1.33698678696656i