2.2 $ \tan x=-x$ を解く

FindRoot[] を使って、$ \tan x=-x$ の正の範囲の解を求める。 $ y=\tan x$, $ y=-x$ のグラフを描いて、$ 2$ の近くの解を求めてみる (16桁精度、50桁精度)。
f[x_]:=Tan[x]
g[x_]:=-x
Plot[{f[x],g[x]},{x,0,100}]

solnear[x0_]:=FindRoot[f[x]==g[x],{x,x0}]
solnear[2]

solnear2[x0_,prec_]:=FindRoot[f[x]==g[x],{x,x0},WorkingPrecision->prec]
solnear2[2, 50]

Solve[] にしても FindRoot[] にしても、 解の値ではなく、代入規則を結果として返す。

代入規則でなく、値が欲しいならば。 x /. (変数名 スラッシュ ドット) の後に代入規則を続けて、 x への一時的な代入を実行すれば良い。
solnear3[x0_]:=x /. FindRoot[f[x]==g[x],{x,x0}]
solnear3[2]
初期値の選び方が大事。ちょっと自分で考えて何回か試してみよう (こういうのが大事です)。


$ \tan x=-x$ の正の解の、小さい方から$ n$番目の値を $ \lambda_n$ として、 それを計算する関数 lambda[] を作った (そのコードは後述する)。 それを使うと lambda[$ n$]$ \lambda_n$ が得られる。
実行結果 (In[] := の右側が入力したもの)
In[] := lambda[1]
Out[] = 2.02876
In[] := lambda[5]
Out[] = 14.2074
In[] := Table[lambda[n],{n,10}]
Out[] = {2.02876, 4.91318, 7.97867, 11.0855, 14.2074, 17.3364, 20.4692, 23.6043, 26.7409, 29.8786}

Farlow [1] の 表7.1 と見比べよう。



桂田 祐史