Реализация решателя Брент вместо метода Ньютона в thermoI.H для разрешения максимального числа ошибок итераций

Кто-то из эта страница заявила о том, что успешно реализовала решатель Brent в thermoI.H вместо решения Newton для разрешения печально известного

ОШИБКА FATAL FAMAL:   Максимальное количество итераций превышено

вопрос. Часть кода, на которую он ссылается, это:

template class Type>
inline Foam::scalar Foam::species::thermo<thermo, Type>::T
(
    scalar f,
    scalar p,
    scalar T0,
    scalar (thermo<thermo, Type>::*F)(const scalar, const scalar) const,
    scalar (thermo<thermo, Type>::*dFdT)(const scalar, const scalar)
        const,
    scalar (thermo<thermo, Type>::*limit)(const scalar) const
) const
{
    scalar Test = T0;
    scalar Tnew = T0;
    scalar Ttol = T0*tol_;
    int    iter = 0;

    do
    {
        Test = Tnew;
        Tnew =
            (this->*limit)
            (Test - ((this->*F)(p, Test) - f)/(this->*dFdT)(p, Test));

        if (iter++ > maxIter_)
        {
            FatalErrorIn
            (
                "thermo<thermo, Type>::T(scalar f, scalar T0, "
                "scalar (thermo<thermo, Type>::*F)"
                "(const scalar) const, "
                "scalar (thermo<thermo, Type>::*dFdT)"
                "(const scalar) const, "
                "scalar (thermo<thermo, Type>::*limit)"
                "(const scalar) const"
                ") const"
            )   << "Maximum number of iterations exceeded"
                << abort(FatalError);
        }

    } while (mag(Tnew - Test) > Ttol);

    return Tnew;
}

Мне было интересно, если бы вы могли мне помочь

  • Что такое решатель Брент и как он отличается от метода Ньютона?
  • как можно реализовать на C ++ вместо решения Newton выше?
0
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest