Численно убедиться, является ли заданная функция y = f (x) четной или нечетной на заданном отрезке [-a; a] - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Численно убедиться, является ли заданная функция y = f (x) четной или нечетной на заданном отрезке [-a; a]. Учесть погрешность вычислений и возможные точки разрыва функции. Проверить, например, для функций y = x4, y = tg x, y = ex, выполняя их вычисления на отрезке [-5, 5] с шагом 0,1.

Решение задачи: «Численно убедиться, является ли заданная функция y = f (x) четной или нечетной на заданном отрезке [-a; a]»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <locale.h>
 
/*  проверка на нечетность. Возвращает ~0 если нечетная */
double odd(double x, double (*f)(double))
{   return f(x) + f(-x);
}
 
/*  проверка на четность. Возвращает ~0 если четная */
double even(double x, double (*f)(double))
{   return f(x) - f(-x);
}
 
/*  общая проверка, вывод результата    */
void check(double(*f)(double), const char *name)
{   double x = 0., step = 0.1, max = 5.0, epsilon = 1E-10;
    int isOdd = 1, isEven = 1;
    
    while(x <= max)
    {   if(f(x)> epsilon)   
        {   if(fabs(odd(x,f)) < epsilon)    
                isEven *= 0;
            else if(fabs(even(x,f)) < epsilon)                          
                isOdd *= 0;
            else
            {   isEven *= 0;
                isOdd *= 0;
            }
        }
        x += step;
    }
 
    if(isOdd) 
        printf("\nФункция %s(x) - нечетная", name);
    else if (isEven)
        printf("\nФункция %s(x) - четная", name);
    else
        printf("\nФункция %s(x) - ни четная, ни нечетная", name);
}
 
 
 
/*  пару функций от себя    */
double pow4(double x)
{   return x*x*x*x;
}
 
double myFunction(double x)
{   return cos(138*x) / sin(34*x + 155);
}
 
 
int main()
{   setlocale(LC_ALL, "");
    double (*func)(double);
 
    /*  проверка библиотечных функций   */
    func = tan;
    check(func, "tg");
 
    func = sin;
    check(func, "sin");
 
    func = cos;
    check(func, "cos");
 
    func = exp;
    check(func, "exp");
 
    /*  проверка собственных функций    */
    func = pow4;
    check(func, "x^4");
 
    func = myFunction;
    check(func, "myFunction");
 
    getchar();
    return 0;
}

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы