#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;
}