Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Реализовать функции на C++.Нужно просто записать данные примеры.

Warseew_24 Ученик (171), на голосовании 4 месяца назад
Оформить данные примеры на языке программирования на C++.Проще говоря как они бы выглядели на языке программирования.
Голосование за лучший ответ
Татьяна Просветленный (36384) 5 месяцев назад
 #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 месяцев назад
видимо некто делает свой язык программирования или библиотеку... Просите гонорар. Я, кстати, воспользуюсь вашими навыками и стырю код для себя. Хотя нужно ОБЯЗАТЕЛЬНО проверять то, что здесь публикуют во избежании аварий из-за неточностей))
Да Вы никак рехнулись - плюсовать, да ещё и тырить для себя парашу нейробота! Вот как надо кодить такие функции - тут всё написано , но с оговорками, естественно! Синус и косинус достаточно больших аргументов по формуле разложения этих функций в ряд Маклорена считать бессмысленно - сразу вылазят гигантские ошибки! Для функции ㏑(1+x) ряд приведён неправильный! Область сходимости для арктангенса указана неверно! Это хоть понятно? А ещё у тупой курицы задаётся количества слагаемых - а откуда заранее известно достаточное для взятия количества членов бесконечных рядов при любых аргументах функций для вычисления сумм этих самых рядов с необходимой точностью? Понятно, что для этого нужны итерационные циклы, а не параметрические! И модуль cmath для вычисления указанных сумм совершенно не нужен!
Александр Коробейников Профи (603) 4 дня назад
ошибка в разложении логарифма. Там не должно быть факториалов
Похожие вопросы