По какой-то причине следующая программа печатает длительность = 0.000000000000000000. Я прочитал очень похожий вопрос Функция C `clock ()` просто возвращает ноль , но предложения там не помогли. Цикл, между которым я беру выборки по времени, состоит из 100 итераций, и для каждой из них существует метод поиска корня Ньютона с точностью до 0,00000001, конечно же, вычисление не может занять 0 секунд ^ -20? Извините, если эти вопросы выглядят по-настоящему домашними заданиями, я действительно нуб, когда дело касается кодирования. Кто-нибудь видит, что здесь может быть не так? Спасибо!
double f(...){...}
double h;
double newton (double prev_step_solution, double x)
{
double root=prev_step_solution;
while (((prev_step_solution+h*f(root,x)-root)>0.00000001)
||((prev_step_solution+h*f(root,x)-root)<-0.00000001))
{
root = root-(h*f(root,x)+prev_step_solution-root)/(h*fder(root,x)-1);
}
return root;
}
int main()
{
int i;
double euler [2][101];
h=1/100;
std::clock_t start;
double duration;
start = std::clock();
for (i=1; i<=200; i++)
{
euler [0][i] = h*i;
euler [1][i] = newton(euler[1][i-1],h*(i-1));
}
duration = ((double)( std::clock()-start ))/((double) CLOCKS_PER_SEC);
printf(" euler %.20f \n",(double)duration);
return 0;
}