Сумма бесконечного ряда программирование

Сумма бесконечного ряда программирование

Постановка задачи. Разработать программу для приближённого вычисления суммы бесконечного ряда при заданном аргументе x с заданной точностью e . Для проверки полученного результата вычислить также значение по контрольной формуле . Форматировать выходные данные в соответствии с введённой точностью.

Шаг 1. Общая структура программы

Программа на процедурном языке программирования состоит из данных и действий по их обработке. program SeriesSum; < Описание данных – констант, типов и переменных >begin < Обработка данных >end .

Шаг 2. Разработка структуры данных

Из постановки задачи видно, что задаются аргумент x и точность e и надо получить сумму ряда s и значение, вычисляемое по контрольной формуле, y . program SeriesSum; var < Входные данные >x, e: real; < вещ x - аргумент, вещ e - точность > < Выходные данные >s, y: real; < вещ s - сумма ряда, вещ y - значение по контрольной формуле >begin < Обработка данных >end .

Выбираем несколько значение аргумента из возможного диапазона. Задаём разные значения точности. Количество совпадающих цифр в значениях s и у обычно зависит от введённой точности.

Шаг 4. Разработка общей структуры программы

Шаг 5. Разработка ввода и вывода

Запрограммируем ввод и вывод согласно входной и выходной форме. Для проверки вывода напишем пока так называемую «заглушку» – она заменяет полноценные вычисления каким-либо простым присваиванием. В данном случае можно переменным s и y присвоить значение x . Для форматирования выходных данных в соответствии с введённой точность, необходимо вычислить количество знаков после запятой в переменной e . Это можно сделать через логарифм значения этой переменной.

Шаг 6. Разработка вычислительной части программы

Чтобы не вычислять сумму бесконечного ряда (что невозможно), будем вычислять сумму ряда с заданной точностью, для чего надо отбросить последние слагаемые, т.е. цикл прекращается, когда модуль очередного слагаемого становится меньше заданной точности. Для сокращения вычислений будем использовать рекуррентное соотношение, которое позволяет получить i -ое слагаемое, умножив ( i – 1)-ое слагаемое на некоторое выражение (о рекуррентных соотношения см. соответствующее практическое занятие).

При разработке метода становится понятно, что для вычислений нужны также переменные для хранения очередного слагаемого и номера текущего слагаемого. Добавим эти промежуточные данные в раздел описания переменных. program SeriesSum; var < Входные данные >x, e: real; < вещ x - аргумент, вещ e - точность > < Выходные данные >s, y: real; < вещ s - сумма ряда, вещ y - значение по контрольной формуле > < Промежуточные данные >a: real; < вещ a - слагаемое >i: integer; < цел i - номер слагаемого >k: integer; < цел k - количество знаков после запятой >begin < Ввод исходных данных >write(‘Введите аргумент: ‘); readln(x); write(‘Введите точность: ‘); readln(e); < Вычисление суммы ряда >a := x; s := a; i := 2; while abs(a) > e do begin a := a * -x * (3 * i — 4) / (3 * i); s := s + a; i := i + 1; end ; < Вычисление значения по контрольной формуле >y := 3 * power(1 + x, 1 / 3) — 3; < Вывод результатов >k := . writeln(‘Сумма ряда = ‘, s:(k + 3):k); writeln(‘Контрольная формула = ‘, y:(k + 3):k); end .

Источник

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Вычисление суммы ряда с заданной точностью

В этом уроке мы расскажем как вычислить сумму бесконечного сходящегося ряда (последовательности) с определенной точностью. Будет рассмотрена соответствующая программа, написанная на языке программирования Си. В конце статьи можно скачать исходник этой программы для Visual Studio.

Сходящийся ряд — это числовая последовательность элементов множества X, имеющая предел в этом множестве.

Графическое изображение сходящегося ряда

Рассмотрим задачу вычисления суммы сходящегося ряда с определенной точностью на примере. Пусть дан ряд:

Вычисление суммы ряда с заданной точностью. Исходный ряд

Вычисление суммы ряда с определенной точностью ε означает, что сумма ряда вычисляется до тех пор, пока модуль разности между текущим и предыдущим членом последовательности больше ε. В виде формулы это утверждение можно записать так: |an — an-1| > ε, то есть пока это выражение истинно, вычисления продолжаются.

Сначала напишем на языке Си функцию, которая будет вычислять и возвращать значение k-го члена ряда по переданному в нее значению k.

Источник

Составить программу для вычисления суммы бесконечного ряда

Составить программу для вычисления суммы
бесконечного ряда. Формулой общего члена ряда и возведением (-1) в степень
не пользоваться! Обязательно использовать рекуррентные соотношения. Для
проверки корректности программы сравнить полученное решение со
значением соответствующей функции, взятой из библиотеки математических
функций cmath.
Для проверки работоспособности программы и её полноты обязательно
составить контрольный пример для 3-4 членов ряда.

Составить программу для вычисления суммы бесконечного ряда
. П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их.

Составить программу для вычисления суммы бесконечного ряда
Составить программу для вычисления суммы бесконечного ряда. Формулой общего члена ряда и.

Составить программу для вычисления суммы бесконечного ряда
Составить программу для вычисления суммы бесконечного ряда. Формулой общего члена ряда и.

Составить программу для вычисления суммы бесконечного ряда с погрешностью
Составить программу для вычисления суммы бесконечного ряда \sum_^<\infty>u_k=.

Составить программу для вычисления суммы бесконечного ряда с погрешностью
Составить программу для вычисления суммы бесконечного ряда с погрешностью ε = 10-3 Задания.

Эксперт С++

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 26 27 28 29 30 31 32
#include #include #include using namespace std; double my_ln (double x,double eps=1e-6) { if( fabs(x)>=1) return 0; // не считаем вне области сходимости double s=0; int n=0; double an=x; while (fabs(an)>eps) { s+=an; ++n; an*=-x*(n)/(n+1.); } return s; } int main() { for(double x=-0.9;x0.901;x+=0.1) { cout(5)(2)(10)(5) (x) (10)(5) <log(1.+x); } cin.get(); return 0; }

ЦитатаСообщение от zss Посмотреть сообщение

x=1 — корректное значение, кроме того вряд ли правильно в функции возвращать 0, больше подойдёт исключение

но проще будет ограничить ввод x (т.к. цикл for при данном условии не нужен)

Добавлено через 19 минут

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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#include #include using namespace std; double f (double x, double eps) { int n=1; double p=-1., an=1., S=0.; cout  "Control:\n"; while(fabs(an)>eps) { p*=-x; an=p/n; S+=an; if(n4) cout  "a"  n  "="  an  "\n"; n++; } return S; } int main()  while (x-1. || x>1.); cout  "eps="; cin >> eps; S=f(x,eps); Y=log(x+1.); cout  "x="  x  " S="  S  " Y="  Y  "\n"; cin.get(); cin.get(); return 0; }

Источник

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

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

Вычисление суммы бесконечного ряда
16 пример. Прошу написать программу для вычисления (там нужно сначало как-то a1.

Вычисление суммы бесконечного ряда
Никак не вычисляются значения, что делаю не так? #include <iostream> #include<stdio.h>.

Автор FAQ

ЦитатаСообщение от -=ЮрА=- Посмотреть сообщение

Автор FAQ

ЦитатаСообщение от Sithis Посмотреть сообщение

ЦитатаСообщение от -=ЮрА=- Посмотреть сообщение

ЦитатаСообщение от -=ЮрА=- Посмотреть сообщение

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 26 27 28 29 30 31
#include #include #include double S(double e) { long k = 1; double ak = 1.0, sum = 0; while(e  fabs(ak))//Вот оно условие окончания итерационного процесса { sum += ak; k = k + 1; ak = 1.0/(2*k*k - 1); } return sum; } int main() { double e = 0; while(true)//Делаю бесконечный ввод //для завершения работы просто закрываем окно консоли { printf("Enter e : ");scanf("%lf",&e); printf("S = %lf\n",S(e)); //Последние 2 функции system можно не применять system("pause");//Стоп-точка перед началом нового ввода system("cls");//Чистка экрана } return 0; }

Источник

Вычислить сумму элементов бесконечного ряда

Здравствуйте, помогите пожалуйста решить такое вот задание на С++:

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

Заранее огромнейшее спасибо

Вычислить сумму бесконечного ряда
Вычислить сумму бесконечного ряда c точностью e=0.0001

Вычислить сумму бесконечного сходящегося ряда
Вычислить сумму бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме.

Вычислить сумму бесконечного сходящегося ряда.
Есть такая вот задача.. Вычислить сумму бесконечного сходящегося ряда. Суммирование прекратить.

Вычислить сумму бесконечного сходящегося ряда
Вычислить сумму бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме.

Эксперт C

double s, a, eps = 0.001; int n = 1; s = 0; a = x; while(a/(n+1)  eps) { s += a/(n+1); a *= x; n++; } cout  ;

Добавлено через 2 минуты
Там на картинке — не четко. Может быть в знаменателе факториал? (n+1)! да? Тогда дело другое.

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 26 27 28 29 30 31 32
#include #include #include unsigned factor(unsigned n) { unsigned long ret = 1; for (unsigned i = n; i > 1; --i) ret *= i; return ret; } int main() { double x, a, b, s = 0, eps = 1; unsigned presc; std::cout  "Input prescision (digits after points): "; std::cin >> presc; for (unsigned i = presc; i > 0; eps /= 10, --i); std::cout  "Input x: "; std::cin >> x; a = x; for (unsigned long n = 1; fabs((b = a * x / factor(n + 1)) - a / factor(n)) > eps; ++n, a *= x, s += b); std::cout  std::setprecision(presc)  "sum = "  s  std::endl; return 0; }

Эксперт C

Annemesski, При чем здесь факториал (factor)? Я имею в виду не задание, а вашу функцию. Давно замечено, что использовать прямое вычисление факториала в подобных задачах, это поиск неприятностей на важные места своего организма.
Обычно такие вещи делаются так

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#include #include #include int main() { double x, a, b, s = 0, eps = 1; unsigned presc; std::cout  "Input prescision (digits after points): "; std::cin >> presc; for (unsigned i = presc; i > 0; eps /= 10, --i); std::cout  "Input x: "; std::cin >> x; a = x; for (int n = 1; a > eps; ++n) { s += a; a *= x/(n+1); // И никаких переполнений! } std::cout  std::setprecision(presc)  "sum = "  s  std::endl; return 0; }

Источник

Читайте также:  Вычислительная схема метода динамического программирования связана
Оцените статью