Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
moralkill
1

Вычисление суммы ряда с факториалом

01.04.2014, 21:21. Показов 4457. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, вычисляющую сумму ряда

https://www.cyberforum.ru/cgi-bin/latex.cgi?S=\sum_{i=0}^{\infty } a_i(x)

с точностью до 0.001 и сравнивающую полученный результат с точным значением суммы (аналитическое выражение суммы и значение x, для которого его необходимо вычислить, задано). Вычисления должны быть организованы при помощи любого из трех видов оператора повтора (цикла). Ввод значения x - с клавиатуры. На печать вывести значение x, соответствующие ему приближенное и точное значение суммы ряда, количество повторов, при котором была достигнута требуемая точность.
Формула общего члена ряда:

https://www.cyberforum.ru/cgi-bin/latex.cgi?a_i(x)=(-1)^{i+2}\cdot \left( \frac{x^{2i+1}}{(2i+1)! \right)

x=0.345

Аналитическое выражение: SinX

Я никак не могу разобраться с факториалом. Что это такое знаю, но как написать код к этой скобке без понятия. Помогите разобраться
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2014, 21:21
Ответы с готовыми решениями:

Вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Доброе утро, форум. Если кому не сложно, то помогите с программой, вернее найти ошибку в ней Само...

Вычисление суммы ряда с точностью до члена ряда
Здравствуйте. Помогите найти ошибку. Вычисление суммы ряда у меня производится верно, но когда...

Вычисление суммы ряда
Помогите написать программу, которая будет вычислять при указанном числе N следующие: 1/sin(1) +...

Вычисление суммы ряда
Решить с помощью процедуры или функции с использованием цикла. Составить две программы: 1)...

1
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
02.04.2014, 02:57 2
Лучший ответ Сообщение было отмечено как решение

Решение

Не по теме:

Никто Вам так и не ответил. Знаете, я как-то даже рад этому, потому что хочу ответить поподробнее.

Лирическое отступление.

x(a+b) = xaxb... Кгхм... Ничего не стану объяснять.

https://www.cyberforum.ru/cgi-bin/latex.cgi?n!=1\cdot 2\cdot 3\cdot ...\cdot (n-1)\cdot n,

а, например,

https://www.cyberforum.ru/cgi-bin/latex.cgi?(n+2)!=1\cdot 2\cdot 3\cdot ...\cdot (n-1)\cdot n\cdot (n+1)\cdot (n+2)=(n+1)\cdot (n+2)\cdot n!

Факториал числа на два болшего - (n+2)! -, ясен пень, n! домножить на (n+1) и на (n+2). Как правило, в большинстве задач, можно обойтись без вычисления факториала непосредственно. Для справки, если без премудростей, то n! на паскале вычисляется, например, так:
Pascal
1
2
f := 1;
for i := 2 to n do f := f * i;
Преступим. Для начала нужно найти рекуррентное соотношение для членов ряда.

https://www.cyberforum.ru/cgi-bin/latex.cgi?a_0(x)=(-1)^{0+2}\cdot \left( \frac{x^{2\cdot 0+1}}{(2\cdot 0+1)!} \right)=x


https://www.cyberforum.ru/cgi-bin/latex.cgi?a_i(x)=(-1)^{i+2}\cdot \left( \frac{x^{2i+1}}{(2i+1)!} \right)

https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{(i+1)}(x)=(-1)^{((i+1)+2)}\cdot \left( \frac{x^{(2(i+1)+1)}}{(2(i+1)+1)!}\right) =(-1)^{i+3}\cdot \left( \frac{x^{2i+3}}{(2i+3)!}\right) =\\=(-1)(-1)^{i+2}\cdot \left( \frac{x^2x^{2i+1}}{(2i+2)(2i+3)(2i+1)!}\right) = \frac{-x^2}{(2i+2)(2i+3)}\cdot a_i

Последующий член выражен через предыдующий, рекуррентное соотношение найдено. И первый член уже есть. По последней формуле, следовательно, можно вычислить второй член, затем из второго - третий, и так далее. Как видите, в окончательном решении от факториала почти что камня на камне не осталось. К слову, и от x2n+1 тоже. Пишем программу.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const e = 0.001; //если точность будет вводиться, эту строку убрать
var i: longint;
    x, a, s: double;
    //e: real //если точность будет вводиться, эту строку добавить
begin
  //write('Точность = '); //если точность будет вводиться, эту строку добавить
  //readln(e); //если точность будет вводиться, эту строку добавить
  //e := abs(e); //а эту можно и вовсе никогда не писать
  write('x = '); //ввод x
  readln(x);
  x := frac(x / 2 / pi) * 2 * pi; //та самая специальная мера, приведение к +-2pi, можно убрать
  a := x; //пока имеем a(0)
  s := 0; //пока сумма ряда равна 0
  i := 0; //номер начального члена ряда
  while abs(a) > e do //цикл, пока точность не больше очередного члена ряда
    begin
      s := s + a; //суммируем ряд
      a := -a * x * x / (2 * i + 2) / (2 * i + 3); //следующий член ряда
      inc(i) //следующий номер члена ряда
    end; //конец цикла
  writeln('Точность = ', e:0:10, ',  количество повторов = ', i - 1, '.');
  writeln('sin(x) = ', s:0:10, ',  вычисление с помощью ряда Тейлора.');
  writeln('sin(x) = ', sin(x):0:10, ',  всроенная функция.');
  readln
end.
При |x| > 33 без специальных мер программа начинает безбожно врать из-за ошибок округления в операциях с плавающей точкой. Ну, то ж поделаешь, не применять же длинную арифметику. Но можно применить специальную меру, помня, что sin(x ± 2*pi*k) = sin(x). Ошибки получаются меньше.
Ещё большей точности можно добиться, оперируя только диапазоном x Є [0..pi/2] (четвертью периода), но это менее наглядно и возиться неохота.

Всего Вам доброго.
2
02.04.2014, 02:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2014, 02:57
Помогаю со студенческими работами здесь

Вычисление суммы ряда
Вычислить сумму ряда с заданной точностью 1) Записать рассчетную формулу для вычисления...

Вычисление суммы ряда
Дано натуральное число N.Вычислить: S=1-1\2+1\4-1\8+...+(-1)в n степени * 1\2 в n степени.

Вычисление суммы ряда
Добрый день! Помогите, пожалуйста, найти ошибку в коде. Нужно написать формулу: A_k = C_k *...

Вычисление суммы ряда
Помогите составить прогу вычисления суммы (последнее слагаемое имеет глубину вычисления синуса,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru