Сумма ряда 1 n факториал

Вычислить сумму ряда

Значение x вводится с клавиатуры.

В данном случае надо найти сумму ряда произведений:
s = (-1) * 1 * (x / 1!) + (-1) * 2 * (x / 2!) + (-1) * 3 * (3 / i!) + (-1) * 4 * (x / 4!) + (-1) * 5 * (x / 5!)

Так как i меняется от 1 до 5, то каждый элемент ряда можно находить в цикле, после этого добавлять к сумме.

Поскольку элемент ряда содержит факториал, то его придется вычислять отдельно для каждого значения i. Это вычисление можно вынести в отдельную функцию.

Таким образом, алгоритм решения задачи сводится к следующему:

  1. Ввести значение x.
  2. Присвоить s 0.
  3. В цикле для i от 1 до 5
  1. получать факториал i,
  2. вычислять значение выражения (-1) * i * (x / i!),
  3. суммировать полученное значение со значением s.
  • Вывести значение s на экран.
  • Факториал также вычисляется в цикле. Сначала в переменную записывается 1, затем значение этой переменной в цикле умножается на числа от 2 до i. (В программе ниже – до n, т.к. i используется как счетчик.)

    var
    s : real ;
    x : integer ;
    i : byte ;
    j : longint ;

    function factorial ( n : byte ) : longint ;
    var i : byte ;
    begin
    factorial : = 1 ;
    for i : = 2 to n do
    factorial : = factorial * i ;
    end ;

    begin
    readln ( x ) ;
    s : = 0 ;
    for i : = 1 to 5 do begin
    j : = factorial ( i ) ;
    s : = s + ( ( – 1 ) * i ) * ( x / j ) ;
    end ;
    writeln ( s : 5 : 3 ) ;
    end .

    #include
    int factorial ( short n ) ;

    main ( ) <
    float s , x ;
    short i ;
    int j ;
    scanf ( "%f" , & x ) ;
    s = 0 ;
    for ( i = 1 ; i 5 ; i ++ ) <
    j = factorial ( i ) ;
    s += ( – 1 * i ) * ( x / j ) ;
    >
    printf ( "%.3f
    " , s ) ;
    >

    int factorial ( short n ) <
    short i ;
    int f ;
    f = 1 ;
    for ( i = 2 ; i n ; i ++ )
    f *= i ;
    return f ;
    >

    def factorial ( n ) :
    f = 1
    for i in range ( 2 , n+ 1 ) :
    f * = i
    return f

    x = int ( input ( ) )
    s = 0
    for i in range ( 1 , 6 ) :
    j = factorial ( i )
    s + = ( – 1 * i ) * ( x / j )
    print ( "%.3f" % s )

    алг
    нач
    вещ s , x
    цел i , j
    ввод x
    s := 0
    нц для i от 1 до 5
    j := факториал ( i )
    s := s + ( ( – 1 ) * i ) * ( x / j )
    кц
    вывод s : 5 : 3
    кон

    алг цел факториал ( цел a )
    нач
    цел i
    знач := 1
    нц для i от 2 до a
    знач := знач * i
    кц
    кон

    Читайте также:  Тесты для локомотивных бригад у психолога

    input x
    s = 0
    for i=1 to 5
    gosub factorial
    s = s + (-1 * i) * (x / j)
    next i
    decimal 3
    print s
    end

    factorial:
    j = 1
    for n=1 to i
    j = j * n
    next n
    return

    Варианты заданий по лабораторной работе связаны с созданием приложения для вычисления суммы ряда. Часто для вычисления некоторой функции используется её разложение в бесконечный ряд. Например, функцию можно представить в виде ряда Маклорена:

    Ряды можно суммировать, учитывая количество слагаемых (например, найти сумму первых слагаемых) или, если ряд сходящийся, то вычислять сумму с заданной точностью.

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

    – сумма первых слагаемых,

    – сумма первых +1 слагаемых,

    +1 слагаемое.

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

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

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

    Пример 1. Найти сумму ряда с заданной точностью :

    Как вести суммирование такого ряда? Прежде всего, необходимо вывести формулу для вычисления очередного слагаемого. Введём обозначения для очередных слагаемых:

    Читайте также:  Телевизор lg нечеткое изображение

    и так далее. Очевидно, что можно выразить:

    В общем виде можно записать:

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

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

    Пример 2. Найти сумму ряда с заданной точностью :

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

    где

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

    Пример 3. Найти сумму первых слагаемых:

    Найти формулу для вычисления очередного слагаемого несложно:

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

    p = – p * x / i; // пример 1

    или части слагаемого

    a = – a * x / i; // пример 2

    Здесь же (пример 3) пришлось завести специальную переменную для изменения знака слагаемых, т.е. переменная может принимать только два значения: 1 или -1. Вычислять это проще всего по формуле:

    = – ;

    Естественно, до начала суммирования переменная должна получить необходимое значение (в нашем случае =1).

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

    Так как здесь присутствуют факториалы, то для простоты вычисления выразим -ый член ряда через ( -1)-ый: , a1 =x, =2,3,4,…

    Читайте также:  25034 Оператор мобильной связи

    Значение первого члена ряда вычислим до цикла с помощью оператора присваивания a:=x, а значения всех последующих членов ряда – по формуле .

    Блок-схема алгоритма приведена на рис. 3.

    Рис. 3. Блок-схема программы

    В блоке 3 подготовки цикла задано значение первого члена ряда, начальное значение суммы, равное этому члену, и номер члена ряда, равный 1 (просуммирован один член ряда). Блоки 4 и 5 выполняют расчет текущего номера члена ряда и значения этого члена с использованием рекуррентных соотношений. Блок 6 реализует функцию накопления суммы. Блок 7 выполняет проверку условия окончания цикла. Текст программы приведен ниже.

    unit Unit1;

    Uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;

    По данному натуральном nn вычислите сумму 1!+2!+3!+…+n!. В решении этой задачи можно использовать только один цикл. Пользоваться математической библиотекой math в этой задаче запрещено.

    Комментарии

    n = int(input())
    partial_factorial = 1
    partial_sum = 0
    for i in range(1, n + 1):
    partial_factorial *= i
    partial_sum += partial_factorial
    print(partial_sum)

    res = 1
    sum = 0
    n = int(input())
    for i in range(1, n + 1):
    res *= i
    sum += res
    print(sum)

    Добавить комментарий Отменить ответ

    Пн Вт Ср Чт Пт Сб Вс

    ЕГЭ на соточку для чайников

    Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене &#128578;

    Оцените статью
    Добавить комментарий

    Adblock detector