Testing task 2

This commit is contained in:
AZEN-SGG 2025-05-02 01:46:06 +03:00
parent 3e90cc7ebb
commit 64182805a0
5 changed files with 19 additions and 18 deletions

View file

@ -81,7 +81,6 @@ double f4 (double x)
double d4 (double x) double d4 (double x)
{ {
double x_2 = x * x;
cl_d++; cl_d++;
return -4 * x - 4 * ((x * x) * x); return -4 * x - 4 * ((x * x) * x);
@ -96,7 +95,7 @@ double f5 (double x)
double d5 (double x) double d5 (double x)
{ {
cl_d++; 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) double f6 (double x)

View file

@ -1,21 +1,27 @@
#ifndef INIT_F_H #ifndef INIT_F_H
#define INIT_F_H #define INIT_F_H
int get_call_count (void); int get_call_function_count (void) ;
int get_call_derivative_count (void); int get_call_derivative_count (void);
double f0 (double x); double f0 (double x);
double d0 (double x); double d0 (double x);
double f1 (double x); double f1 (double x);
double d1 (double x); double d1 (double x);
double f2 (double x); double f2 (double x);
double d2 (double x); double d2 (double x);
double f3 (double x); double f3 (double x);
double d3 (double x); double d3 (double x);
double f4 (double x); double f4 (double x);
double d4 (double x); double d4 (double x);
double f5 (double x); double f5 (double x);
double d5 (double x); double d5 (double x);
double f6 (double x); double f6 (double x);
double d6 (double x); double d6 (double x);

View file

@ -13,10 +13,9 @@ int main(int argc, char *argv[])
double (*f) (double); double (*f) (double);
double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6, sin}; // TODO: Remove sin 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]); 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 ( if (
!((argc == 5) && !((argc == 5) &&
@ -35,7 +34,7 @@ int main(int argc, char *argv[])
it = t2_solve(f, d_lst[k], x_0, eps, m, &x); it = t2_solve(f, d_lst[k], x_0, eps, m, &x);
t = (clock() - t) / CLOCKS_PER_SEC; t = (clock() - t) / CLOCKS_PER_SEC;
cl = get_call_count(); cl = get_call_function_count();
if (it >= m) if (it >= m)
{ {

View file

@ -3,27 +3,23 @@
#include <math.h> #include <math.h>
#include <float.h> #include <float.h>
int t7_solve ( int t2_solve (
double (*f) (double), double (*f) (double),
double (*d) (double),
double x_0, double eps, double x_0, double eps,
int m, double *x int m, double *x
) { ) {
int it = 0; int it = 0;
double y = f(x_0); double y = f(x_0);
if (fabs(y - x_0) - eps < DBL_EPSILON) for (it = 1; it < m; ++it)
{ {
*x = x_0; if (y - eps < DBL_EPSILON)
return 1; break;
}
for (it = 0; it < m; ++it) x_0 -= (y / d(x_0));
{
x_0 = y;
y = f(x_0); y = f(x_0);
if (fabs(y - x_0) - eps < DBL_EPSILON)
break;
} }
*x = x_0; *x = x_0;

View file

@ -1,8 +1,9 @@
#ifndef SOLVE_H #ifndef SOLVE_H
#define SOLVE_H #define SOLVE_H
int t7_solve ( int t2_solve (
double (*f) (double), double (*f) (double),
double (*d) (double),
double x_0, double eps, double x_0, double eps,
int m, double *x int m, double *x
); );