Если вы хотите просто оценить уравнение, вы можете просто реализовать следующую функцию:
double f(double t)
{
return 0.00005 * (t * t * t) + 0.0045 * (t * t) + 0.7542 * t + 23.459;
}
Если вы хотите найти корень уравнения, у вас есть два варианта: Аналитические решенияи численно.Аналитически вы можете найти корни только для небольшого набора полиномов ( Линейный, Квадратичный , Кубический и Квартический ). В общембольшинство полиномов трудно, если не невозможно, найти аналитическое решение для.
Ссылка, которую я предоставил для кубического уравнения, показывает вам, как найти корни вашего уравнения.Я не буду повторять их здесь, так как это довольно просто реализовать.Если вы хотите «более простой» способ найти корень уравнения, вы можете использовать так называемый метод Ньютона.
Вы можете написать свою функцию как f(t, p) = 0.00005 * t^3 + 0.0045 * t^2 + 0.7542 * t + 23.459 - p
.Поскольку вы знаете уравнение, вы можете рассчитать его производную и использовать метод Ньютона , чтобы найти для один корней:
double FindRoot(double t0, double p)
{
double eps = 1E-6; // The accuracy of the found root
double t;
do
{
t = t0;
double f = 0.00005 * t * t * t + 0.0045 * t * t + 0.7542 * t + 23.459 - p;
double fp = 0.00015 * t * t + 0.009 * t + 0.7542;
t0 = t - f / fp;
} while(abs(t - t0) > eps);
return t0;
}
Вы должны указать начальное местоположениегде искать первый корень.Вы должны быть осторожны при выборе этого, поскольку исходное местоположение определяет, к какому корню он сходится и сходится ли вообще.