Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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();

 


 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных