FindRoot[] を使って、 の正の範囲の解を求める。 , のグラフを描いて、 の近くの解を求めてみる (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] |
の正の解の、小さい方から番目の値を として、 それを計算する関数 lambda[] を作った (そのコードは後述する)。 それを使うと lambda[] で が得られる。
実行結果 (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 と見比べよう。