From 64182805a0d1d79f983a1720be65dd738840a2f6 Mon Sep 17 00:00:00 2001 From: AZEN-SGG <74971141+AZEN-SGG@users.noreply.github.com> Date: Fri, 2 May 2025 01:46:06 +0300 Subject: [PATCH] Testing task 2 --- 2025.05.02/02Ex/init_f.c | 3 +-- 2025.05.02/02Ex/init_f.h | 8 +++++++- 2025.05.02/02Ex/main.c | 5 ++--- 2025.05.02/02Ex/solve.c | 18 +++++++----------- 2025.05.02/02Ex/solve.h | 3 ++- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/2025.05.02/02Ex/init_f.c b/2025.05.02/02Ex/init_f.c index 6b48348..a2c0429 100644 --- a/2025.05.02/02Ex/init_f.c +++ b/2025.05.02/02Ex/init_f.c @@ -81,7 +81,6 @@ double f4 (double x) double d4 (double x) { - double x_2 = x * x; cl_d++; return -4 * x - 4 * ((x * x) * x); @@ -96,7 +95,7 @@ double f5 (double x) double d5 (double x) { cl_d++; - return (((signbit(x)) ? -1 : 1) * (1.0 / (sqrt(fabs(x) + 1))) * 0.5; + return (((signbit(x)) ? -1 : 1) * (1.0 / (sqrt(fabs(x) + 1)))) * 0.5; } double f6 (double x) diff --git a/2025.05.02/02Ex/init_f.h b/2025.05.02/02Ex/init_f.h index ec8281d..9bba4eb 100644 --- a/2025.05.02/02Ex/init_f.h +++ b/2025.05.02/02Ex/init_f.h @@ -1,21 +1,27 @@ #ifndef INIT_F_H #define INIT_F_H -int get_call_count (void); +int get_call_function_count (void) ; int get_call_derivative_count (void); double f0 (double x); double d0 (double x); + double f1 (double x); double d1 (double x); + double f2 (double x); double d2 (double x); + double f3 (double x); double d3 (double x); + double f4 (double x); double d4 (double x); + double f5 (double x); double d5 (double x); + double f6 (double x); double d6 (double x); diff --git a/2025.05.02/02Ex/main.c b/2025.05.02/02Ex/main.c index 64a113a..06a3358 100644 --- a/2025.05.02/02Ex/main.c +++ b/2025.05.02/02Ex/main.c @@ -13,10 +13,9 @@ int main(int argc, char *argv[]) double (*f) (double); double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6, sin}; // TODO: Remove sin + double (*d_lst[]) (double) = {d0, d1, d2, d3, d4, d5, d6, cos}; // TODO: Remove cos int len_f = sizeof(f_lst) / sizeof(f_lst[0]); - double (*d) (double); - double (*d_lst[]) (double) = {d0, d1, d2, d3, d4, d5, d6, cos}; // TODO: Remove cos if ( !((argc == 5) && @@ -35,7 +34,7 @@ int main(int argc, char *argv[]) it = t2_solve(f, d_lst[k], x_0, eps, m, &x); t = (clock() - t) / CLOCKS_PER_SEC; - cl = get_call_count(); + cl = get_call_function_count(); if (it >= m) { diff --git a/2025.05.02/02Ex/solve.c b/2025.05.02/02Ex/solve.c index ed2c4ac..12adc2d 100644 --- a/2025.05.02/02Ex/solve.c +++ b/2025.05.02/02Ex/solve.c @@ -3,27 +3,23 @@ #include #include -int t7_solve ( +int t2_solve ( double (*f) (double), + double (*d) (double), double x_0, double eps, int m, double *x ) { int it = 0; double y = f(x_0); - if (fabs(y - x_0) - eps < DBL_EPSILON) - { - *x = x_0; - return 1; - } + for (it = 1; it < m; ++it) + { + if (y - eps < DBL_EPSILON) + break; - for (it = 0; it < m; ++it) - { - x_0 = y; + x_0 -= (y / d(x_0)); y = f(x_0); - if (fabs(y - x_0) - eps < DBL_EPSILON) - break; } *x = x_0; diff --git a/2025.05.02/02Ex/solve.h b/2025.05.02/02Ex/solve.h index 3302d16..d7b21f1 100644 --- a/2025.05.02/02Ex/solve.h +++ b/2025.05.02/02Ex/solve.h @@ -1,8 +1,9 @@ #ifndef SOLVE_H #define SOLVE_H -int t7_solve ( +int t2_solve ( double (*f) (double), + double (*d) (double), double x_0, double eps, int m, double *x );