・高次連立方程式                     よおすけ氏

 次の2つの等式が同時に成り立つ2数 a、b は存在しないことを示せ。

  a^29+b^29=2017 、a^2017+b^2017=29

※大学入試対策のお供にどうぞ


 DD++さんからのコメントです。(平成29年2月11日付け)

 (2cos(29θ)/2017)^2017 = (2cos(2017θ)/29)^29

となる θ が中間値の定理より、0<θ<π/2017 の範囲に存在します。そのθに対して、

 a = (2017/(2cos(29θ)))^(1/29)*e^(iθ) 、b = (2017/(2cos(29θ)))^(1/29)*e^(-iθ)

で定めると、

a^29+b^29 = (2017/(2cos(29θ)))*2cos(29θ) = 2017

a^2017+b^2017 = (2017/(2cos(29θ)))^(2017/29)*2cos(2017θ)
         = (29/(2cos(2017θ)))*2cos(2017θ) = 29

となるので、条件を同時に満たす数は存在します。


 らすかるさんからのコメントです。(平成29年2月11日付け)

 最初θの値を数十桁算出して計算したら全然合わなかったのですが、よく計算してみると
「数十桁」では全く足りていませんでした。

 (2cos(29θ)/2017)^2017-(2cos(2017θ)/29)^29 を計算すると、θが解に近づくにつれて
両方とも極めて小さい値になり、差が10^(-1000)以下になって十分収束したと思っていたの
が、実は第1項が10^(-6000)、第2項が10^(-1000)などという、とんでもないこと(第2項が第1
項の10^5000倍!)になっていました。

 これでは合うはずがないですね。

 そこで逆数にして、(2017/(2cos(29θ)))^2017-(29/(2cos(2017θ)))^29 が0に近づくように
してみると、この差が1以下になるためにはθの精度が6300桁程必要でした。

 解を10000桁以上の精度で求めたところ、正しく、a^29+b^29≒2017, a^2017+b^2017≒29
になりました。


 DD++さんからのコメントです。(平成29年2月12日付け)

 中間値の定理を使う上で定義域が途切れると面倒なので逆数にしたのを、もとに戻した感
じですね。

 ところで、a^29+b^29=2017 と 29π/2017 が小さな数であることを考えると、最初の方程式
は両辺 2017^(-2017) くらいの数、あるいはその逆数くらいの数になるのは目に見えていま
す。機械計算には明るくないので的外れかもしれませんが、こういうのってまず両辺の対数
を取るとスムーズにいったりしませんかね?


 らすかるさんからのコメントです。(平成29年2月12日付け)

 対数をとっていれば、少なくとも「差が10^(-1000)未満になったから収束した」という勘違い
は防げましたね。しかし、そもそも「対数をとると良い程の小さい数」ということに気づいてい
れば「差が10^(-1000)未満になったから収束した」とも思わなかったわけで、そういう意味で
は対数をとるメリットは特になさそうな気がします。

 機械計算するうえでは、各項の値が-14000近辺か10^(-6060)近辺かで特に違いはありま
せん。(どちらでも差が非常に小さい値になる必要があります)

 実際に対数をとって計算してみましたが、手間は変わりませんでした。logの多倍長計算は
sin、cosに比べて収束が遅く(∵展開式の分母が階乗でない)時間がかかるため、この問題
に関しては対数をとらない方が有利かも知れません。


 DD++さんからのコメントです。(平成29年2月12日付け)

 仮に10桁の精度を確保するのに、方程式の各辺10^(-6070) まで収束させるのと 10^(-6)
程度までの収束で済むのはだいぶ違うかなと思ったのですが、なるほど log(x) は x≒1 じゃ
ないと 10^(-6) まで収束させるのも大変というわけですかね?


 らすかるさんからのコメントです。(平成29年2月12日付け)

 対数をとってもθの必要精度は変わりませんので、もし元の方程式の差10^(-6070)と後の
方程式の差10^(-6)でθの精度が同じならば、結局、「元の方程式で差10^(-6070)まで収束」
と「後の方程式で差10^(-6)まで収束」の計算回数は同じだけ必要になると思います。
(後者で差が1変われば前者で差の指数部が1変わるようなもの)

 もちろん、逆数をとっても必要計算回数は変わらないのですが、a^2017+b^2017を求める
式を見ると、「逆数の差が1より大きいようではNG」ということで、とりあえず精度の目標がで
きるので、逆数にしました。

 ちなみに、この問題で解を数値計算するのに最も大変なのは、ニュートン法に与える初期
値です。

 θの真値は大体、π/4034-8.6×10^(-212) = 0.000778778545758501050684839708…
なのですが、目で見える数十桁の数値の末尾を1大きくするとπ/4034より大きく計算不能
(発散)、1小さくすると真値から離れ過ぎていて発散あるいは真値に近づくのが極端に遅く
なったりします。

 うまい初期値さえ決まれば、元の式・対数・逆数のいずれでも似たような回数でθの必要
精度まで収束するはずですね。


 DD++さんからのコメントです。(平成29年2月12日付け)

 パッと見で、 π/4034 - arcsin((2cos(29π/4034)/2017)^(2017/29)*(29/2)) くらいを初期
値にとれば良さそうに見えますが、これでも大変なんでしょうか?


 らすかるさんからのコメントです。(平成29年2月12日付け)

 パッと見で、 π/4034 - arcsin((2cos(29π/4034)/2017)^(2017/29)*(29/2)) と考えられる
のはすごいですね。

 しかし残念ながら、その値でも真値から遠すぎてニュートン法は発散しました。

 真値≒π/4034-8.67×10^(-212)
上記の値≒π/4034-1.75×10^(-208)

 π/4034との差が2017倍違います…。あれ?もしかして

 π/4034 - arcsin((2cos(29π/4034)/2017)^(2017/29)*(29/2)) / 2017

と書きたかったのでしょうか。この値なら{π/4034-真値}と{π/4034-上記の値}が200桁一致
していて、余裕で収束しますね。

(追記) π/4034 - arcsin((2cos(29π/4034)/2017)^(2017/29)*(29/2)) / 2017 だったら十分
    精度が良いのでこれ以上計算しなくても確認できますね。

 θを上記の値にすると、

 a^29+b^29は2017.000…(数千桁以上0が続く)
 a^2017+b^2017は28.999…(200桁程度9が続く)

となりました。


 DD++さんからのコメントです。(平成29年2月12日付け)

 あ、すみません、/2017 は書き忘れです。

 パッと見でこれを出したのは、以下のような考えからです。

 まず、cos はどんな角度であろうとも絶対値は1以下です。つまり、cos を何乗しようが絶対
値は1以上にはなりません。

 すると、(2/2017)^2017 と (2/29)^29 があまりに桁が違うので、右辺の cos はほぼゼロで
なくてはいけないことがわかります。つまり、θ≒π/4034 (極めて近い)と予想できます。

 このとき、左辺は正なので右辺も正、つまりθはこれよりわずかに小さく θ=π/4034-α
と考えることができます。

 すると、左辺には cos(29π/4034-29α) というのができますが、これは別にゼロに近くな
いので、もはや 29α は無視でよかろうと、cos(29π/4034) に近似します。

 一方、右辺の cos(π/2-2017α) は sin(2017α) になります。
(後から思えば 2017α まで近似してよかった……)

 これで α が一ヶ所だけになったので、余計なものを反対の辺に押し付けていけば、ほど
ほどに近い値が得られます。

 手計算してるときにこの手の計算ができると案外便利だったりするんですよね。


 らすかるさんからのコメントです。(平成29年2月12日付け)

 なるほど、勉強になりました。以前は自分でもそういう手計算をしていた気がしますが、計
算機に慣れちゃうと頼り切って手計算しなくなるので良くないですね。



                         投稿一覧に戻る