セカント法の基本的なアイデアは、与えられた非線形方程式 f(x) = 0 の解を見つけるために、関数 f(x) のグラフ上で2点を選びます。この2点を (x0, f(x0)) と (x1, f(x1)) とし、直線でこれらの点を結んだ直線の x 軸との交点を求めます。この交点の x 座標を新たな近似解とします。この新しい解を x2 とし、次に (x1, f(x1)) と (x2, f(x2)) の間で同様の手順を繰り返します。このプロセスを続けることで、解に収束することが期待できます。
以下に、セカント法のアルゴリズムの疑似コードを示します。
入力: 関数 f(x), 近似解の初期値 x0, x1, 収束条件 epsilon
出力: 解 x
repeat
x = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
if |x - x1| < epsilon then
return x
end if
x0 = x1
x1 = x
until 収束条件が満たされる
このアルゴリズムでは、収束条件として解の近似値が一定の許容誤差 epsilon 内に収束するかどうかを判定しています。
セカント法の実装例をいくつか示します。
Pythonでの実装例:
def secant_method(f, x0, x1, epsilon):
while True:
x = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
if abs(x - x1) < epsilon:
return x
x0 = x1
x1 = x
# 使用例
def f(x):
return x3 - x - 1
approximate_solution = secant_method(f, 1, 2, 0.0001)
print(approximate_solution)
この例では、関数 f(x) = x^3 - x - 1 の解をセカント法で求めています。
セカント法は非線形方程式の数値解析において有用な手法です。もちろん、関数の特性や初期値の選び方によっては収束しない場合もありますので、注意が必要です。しかし、一般的にはシンプルで効果的な手法として広く使われています。
この記事では、セカント法の基本的な解説と実装例を紹介しました。数値解析に興味がある方や非線形方程式の解の求め方を知りたい方にとって、参考になる情報となるでしょう。ぜひ、セカント法を使って数学の問題に挑戦してみてください!