/**
* @file laba2_1.c
* @author Нездоймишпка А.О., гр. 515б
* @date 21 лютого 2023
* @brief Лабораторна робота № 2
*
* Модульне тестування. Завдання 1
*/
#include <stdio.h>
#include "functions.h" // Підключення вашого модуля з функціями Y(x) та S(x)
#include<locale.h>
int main() {
setlocale(LC_CTYPE, "ukr");
printf("x\tY(x)\tS(x)\t|Y(x) - S(x)|\n");
for (double x = a; x <= b; x += h) {
double y = Y(x);
double s = S(x);
double diff = y - s;
if (diff < 0)
diff = -diff;
printf("%.2f\t%.11f\t%.11f\t%.11f\n", x, y, s, diff);
// Перевірка на співпадіння у цілій частині та у перших двох позиціях після десяткової точки
int y_int = (int)y;
int s_int = (int)s;
double y_decimal = y - y_int;
double s_decimal = s - s_int;
if (y_int == s_int && ((int)(y_decimal * 10000000) == (int)(s_decimal * 10000000))) {
printf("Результати для x = %.2f співпадають.\n", x);
}
else {
printf("Помилка: Результати для x = %.2f не співпадають.\n", x);
}
}
return 0;
}
/**
* @file functions.h
* @author Нездоймишпка А.О., гр. 515б
* @date 21 лютого 2023
* @brief Лабораторна робота № 2
*
* Модульне тестування. Завдання 1
*/
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
// Оголошення констант
extern const double a;
extern const double b;
extern const double h;
extern const int n;
// Прототипи функцій
double Y(double x);
double S(double x);
#endif
/**
* @file functions.c
* @author Нездоймишпка А.О., гр. 515б
* @date 21 лютого 2023
* @brief Лабораторна робота № 2
*
* Модульне тестування. Завдання 1
*/
#include "functions.h"
#include <math.h>
// Визначення констант
const double a = 0.1; // початкове значення x
const double b = 1.0; // кінцеве значення x
const double h = 0.1;
const int n = 140; // максимальне значення n у сумі S(x)
double Y(double x) {
double res = ((1 + x * x) / 2) * (atan(x)) - (x / 2);
return res;
}
double S(double x) {
double sum = 0.0;
for (int i = 1; i <= n; ++i) {
sum += pow(-1, i + 1) * pow(x, 2 * i + 1) / (4 * pow(i, 2) - 1);
}
return sum;
}