ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Пример выполнения заданияВычислить сумму ряда (разложение в ряд Тейлора sin(x)) . Значение x и k вводятся с клавиатуры. Сравнить полученную сумму с точным значением sin(x).
Анализ задачи
Сумма ряда имеет следующие особенности: k=1, слагаемое y=x, сумма S=S+y=x k=2, слагаемое y=-x3/3! = -x3/(1∙2∙3)= -x2∙k-1/(2∙k-1), сумма S=S+y= k=3, слагаемое y=x5/5! = x3/(1∙2∙3∙4∙5)= x2∙k-1/(2∙k-1), сумма S=S+y= и т.д.
· Для каждого четного k слагаемое суммы у имеет знак минус · Для каждого k необходимо вычислять факториал числа (2∙k-1)! = 1∙2∙3∙ … ∙(2∙k-1).
Факториал вычисляется в цикле с параметром for. Параметр i инициализируется в цикле for (int i=2…). Цикл выполняется до тех пор, пока параметр i не станет равным k (i<=k). Запись i++ в скобках означает, что каждый раз после того как fact умножается на i, переменная i увеличивается на единицу. Переменная fact для каждого k сбрасывается до 1. Сумма ряда вычисляется в цикле с предусловием while. До начала цикла сумме ряда S присваивается значение х. Цикл while начинается с k=2 (int k=2). Сначала вычисляется факториал, затем проверяется четность k. Если k четное (if (k%2)), то перед слагаемым y ставится знак «минус». После чего полученное слагаемое прибавляется к сумме S и параметр k увеличивается на единицу. Цикл прекращает свою работу, как только перестает выполняться условие (k<=n). Полученное значение суммы и точное значение Sin(x) выводится на экран.
Пример программы #include <iostream.h> #include <conio.h> #include <math.h> int main() { double x, s,y; int k=2,n,fact; cout<<"Input x = "; cin>> x; cout<<"Input n = "; cin>> n; s=x; while (k<=n) { fact=1; for (int i=2;i<=2*k-1;i++) fact=fact*i; if (k%2) y=pow(x,(2*k-1))/fact; else y=-pow(x,(2*k-1))/fact; s=s+y; k=k+1; } cout<<"The sum is equal "<<s; cout<<"\nExact value sin("<<x<<") = "<<sin(x); getch();
Не нашли, что искали? Воспользуйтесь поиском:
|