#include
#include
// Вычисление ряда Тейлора для sin(x)
double sin_taylor(double x, int terms) {
double sum = 0.0;
double term;
int sign = 1;
for (int n = 0; n < terms; ++n) {
term = sign * pow(x, 2 * n + 1) / tgamma(2 * n + 2);
sum += term;
sign *= -1;
}
return sum;
}
// Вычисление ряда Тейлора для cos(x)
double cos_taylor(double x, int terms) {
double sum = 1.0;
double term;
int sign = -1;
for (int n = 1; n < terms; ++n) {
term = sign * pow(x, 2 * n) / tgamma(2 * n + 1);
sum += term;
sign *= -1;
}
return sum;
}
// Вычисление ряда Тейлора для ln(1 + x)
double ln1p_taylor(double x, int terms) {
double sum = 0.0;
double term;
int sign = 1;
for (int n = 1; n <= terms; ++n) {
term = sign * pow(x, n) / n;
sum += term;
sign *= -1;
}
return sum;
}
// Вычисление ряда Тейлора для (1 + x)^α
double pow1p_taylor(double x, double alpha, int terms) {
double sum = 1.0;
double term = 1.0;
for (int n = 1; n <= terms; ++n) {
term *= (alpha - (n - 1)) * x / n;
sum += term;
}
return sum;
}
// Вычисление ряда Тейлора для 1 / (1 - x)
double inv1mx_taylor(double x, int terms) {
double sum = 1.0;
double term = 1.0;
for (int n = 1; n < terms; ++n) {
term *= x;
sum += term;
}
return sum;
}
// Вычисление ряда Тейлора для arctg(x)
double arctg_taylor(double x, int terms) {
double sum = 0.0;
double term;
int sign = 1;
for (int n = 0; n < terms; ++n) {
term = sign * pow(x, 2 * n + 1) / (2 * n + 1);
sum += term;
sign *= -1;
}
return sum;
}
int main() {
double x = 0.5;
int terms = 10;
std::cout << "sin(" << x << ") ≈ " << sin_taylor(x, terms) << std::endl;
std::cout << "cos(" << x << ") ≈ " << cos_taylor(x, terms) << std::endl;
std::cout << "ln(1 + " << x << ") ≈ " << ln1p_taylor(x, terms) << std::endl;
std::cout << "(1 + " << x << ")^2 ≈ " << pow1p_taylor(x, 2, terms) << std::endl;
std::cout << "1 / (1 - " << x << ") ≈ " << inv1mx_taylor(x, terms) << std::endl;
std::cout << "arctg(" << x << ") ≈ " << arctg_taylor(x, terms) << std::endl;
return 0;
}
Результат выполнения
Батаев ДмитрийПросветленный (22926)
5 месяцев назад
видимо некто делает свой язык программирования или библиотеку... Просите гонорар. Я, кстати, воспользуюсь вашими навыками и стырю код для себя. Хотя нужно ОБЯЗАТЕЛЬНО проверять то, что здесь публикуют во избежании аварий из-за неточностей))