Member 13272542 Ответов: 2

Реализуйте функцию с помощью циклов, использующих ряд Тейлора для аппроксимации значения косинусной функции.


cosx=∑n=0∞(-1)n (2n)! x2n=1−x22!+x44! -⋯
по мере увеличения n наш член суммирования становится все более точным приближением cos (x), и бесконечное число членов будет точно равно cos(x). (Примечание: х-в радианах.)

Очевидно, что мы не можем сложить бесконечное число терминов в реальном мире, поэтому вместо этого, если мы реализуем это как функцию в C++, мы должны указать, сколько членов суммирования мы хотим использовать. (Другими словами, верхняя граница суммы перестает быть бесконечной.)
Таким образом, ваша функция будет принимать два параметра: значение x (в радианах) как количество членов, используемых при аппроксимации решения. Таким образом, если мой тестовый код вызывает approxCosine(1.5, 3), Вы должны вернуть сумму первых 3 членов косинусного приближения:

approxCosine(1.5, 3)=∑n=02(-1) n(2n)! x2n=1−x22!+x44!

Что я уже пробовал:

я не знаю с чего начать

2 Ответов

Рейтинг:
2

CPallini

Цитата:
я не знаю с чего начать

Общий член косинусного разложения Тейлора равен (-1)никс/(2n!).
Первым шагом может быть написание такого выражения, как C++. Обязательным условием является написание факторной функции, которая не предусмотрена.

Итак, предположим, что вы написали свою собственную факторную функцию (скажем, fact), то вы могли бы написать
term[n] = pow(x, 2.0 * n) / fact(2 * n);
if ((n % 2) == 1) term[n] = -term[n]; // for n odd, the term is negative


Рейтинг:
1

Patrice T

- Серьезно ? ваше главное усилие состояло в том, чтобы вставить заявление.

Цитата:
я не знаю с чего начать

Ответ кроется в вопросе. Первое, что нужно сделать, это прочитать заявление.
Цитата:
Таким образом, ваша функция будет принимать два параметра: ценность x (в радианах) и количество терминов использовать при аппроксимации решения. Таким образом, если мой тестовый код вызывает аппроксозин (1,5, 3), вы должны вернуть сумму первых 3 членов косинусного приближения:

Мы не делаем вашу домашнюю работу.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей выполнять вашу работу, а для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание пройденных вами курсов, а также проблем, возникающих при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так, попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.

Как программист, ваша задача-создавать алгоритмы это решает конкретные проблемы, и вы не можете полагаться на кого-то другого, чтобы вечно делать это за вас, поэтому есть время, когда вам придется научиться этому. И чем скорее, тем лучше.
Когда вы просто просите решение, это все равно что пытаться научиться водить машину, обучая кого-то другого.
Создание алгоритма-это в основном поиск математики и необходимая адаптация к вашей реальной задаче.

Идея "развития" заключается в том, что это слово предполагает: "систематическое использование научно-технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".


CPallini

Мой 5.

Patrice T

Спасибо