Поиск корней уравнений с интерполяцией — InterpolateRoot
Поиск корней уравнений с интерполяцией — InterpolateRoot
Подпакет InterpolateRoot дает средства для ускоренного и более точного поиска корней уравнений по сравнению с соответствующими функциями ядра. Достигается это за счет применения интерполяции функции, корни которой ищутся. Под-пакет задает функцию InterpolateRoot [f, {х, a, b} ], которая находит корень функции f в интервале х от а до b. Вместо функции f можно задавать уравнение eqn. Возможны опции AccuracyGoal->Automatic, Maxlterations->15, WorkingPrecision->$MachinePrecision и ShowProgress->False (указаны принятые по умолчанию значения). Примеры применения данной функции (n — число итераций): <<NumericalMath` InterpolateRoot` n = 0; FindRoot[n++; Exp[x] == 2, {x, 0, 1}, WorkingPrecision -> 100, AccuracyGoal -> 95] {x-> 0.693147180559945309417232121458176568075500134360255 2541206800094933936219696947156058633269964186876} n
17 n = 0; f[x_] := (n++; Exp[x]-2) /; NumberQ[x] InterpolateRoot[f[x], {x, 0, 1), WorkingPrecision -> 100, AccuracyGoal -> 95]; n 10 InterpolateRoot[Exp[x] ==2, {x, 0, 1},ShowProgress -> True, WorkingPrecision -> 40] {0, 0.58197670686932642439} {21, 0, -0.12246396352039524100} {1, 0.7019353037882764014443370764853594873432} {21, 20, 0.0130121629575404389120930392554} {3,0.6932065772065263165289985793736618546663} {21, 20, 0.000062480788747713548804773113708} {6, 0.6931471932603933841618726058237307884661} {21, 20, 1.26443483693584888038460396742xHT8} {12, 0.693147180559945119457822446 95590259222308309027205042483074} {40, 20, -1.89953767048152086910014102216x 10-16} {24, 0.6931471805599453094172321214 5786257157118117337249076750141}