Загрузка данных


#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>

using namespace std;

const double EPS = 0.000001;

double McLaren_exp(double x) {
    double sum = 1.0;
    double term = 1.0;
    int k = 1;
    while (abs(term) > EPS) {
        term = term * x / k;
        sum += term;
        k++;
    }
    return sum;
}

#include <cmath>

const double EPS = 1e-9;

double McLaren_ln(double x) {
    if (x <= -1.0) {
        return NAN; 
    }
    double sign = 1.0;
    if (x > 1.0) {
        x = 1.0 / (1.0 + x) - 1.0;
        sign = -1.0;
    }

    double sum = 0.0;
    double term = -x;
    int k = 1;

    while (abs(term) > EPS) {
        sum += term;
        k++;
        term = term * x * (k - 1) / k;
    }
    return sum * sign;
}


double McLaren_sin(double x) {
    double x2 = -x * x;

    double sum = x;
    double term = x;

    int n = 2;

    while (abs(term) > EPS) {
        term = term * x2 / (n * (n + 1)); // term = -term * x * x / ((2.0 * k - 1.0) * (2.0 * k));
        sum += term;
        n += 2; 
    }
    return sum;
}


#include <cmath>

const double EPS = 1e-15;

double McLaren_cos(double x) {
    double x2 = -x * x; 
    double sum = 1.0;
    double term = 1.0;

    int n = 1;

    while (std::abs(term) > EPS) {

        term = term * x2 / (n * (n + 1));
        sum += term;
        n += 2; 
    }
    return sum;
}


void print_row(const string& func_name, double x, double maclaurin_val, double std_val) {
    cout << setw(12) << func_name
        << setw(10) << fixed << setprecision(3) << x
        << setw(16) << setprecision(6) << maclaurin_val
        << setw(16) << std_val
        << setw(14) << abs(maclaurin_val - std_val) << endl;
}

int main() {
    int n;
    cout << "Vvedite nomer varianta (n): ";
    if (!(cin >> n)) {
        cout << "Nepravilniy vvod!" << endl;
        return 1;
    }

    cout << "\nRaschet dlya varianta n = " << n << endl;

    double exp_x1 = 3.716 + 0.043 * n;
    double exp_x2 = 2.834 - 0.028 * n;

    double ln_x1 = 0.122 + 0.012 * n;
    double ln_x2 = 0.122 + 122.0 * n;

    double trig_x1 = 0.232 + 0.012 * n;
    double trig_x2 = 0.747 - 0.014 * n;

    cout << "\n" << setw(12) << "Func"
        << setw(10) << "x"
        << setw(16) << "Maclaurin"
        << setw(16) << "Library"
        << setw(14) << "Error" << endl;
    cout << string(67, '-') << endl;

    print_row("e^x", exp_x1, McLaren_exp(exp_x1), exp(exp_x1));
    print_row("e^x", exp_x2, McLaren_exp(exp_x2), exp(exp_x2));

    print_row("ln(x+1)", ln_x1, McLaren_ln(ln_x1), log(ln_x1 + 1.0));
    print_row("ln(x+1)", ln_x2, McLaren_ln(ln_x2), log(ln_x2 + 1.0));

    print_row("sin(x)", trig_x1, McLaren_sin(trig_x1), sin(trig_x1));
    print_row("sin(x)", trig_x2, McLaren_sin(trig_x2), sin(trig_x2));

    print_row("cos(x)", trig_x1, McLaren_cos(trig_x1), cos(trig_x1));
    print_row("cos(x)", trig_x2, McLaren_cos(trig_x2), cos(trig_x2));

    cout << "\nPress Enter to exit...";
    cin.ignore();
    cin.get();

    return 0;
}