Салаватский филиал угнту



Скачать 404.02 Kb.
страница5/9
Дата10.07.2019
Размер404.02 Kb.
Название файлаРуководство по выполнению лабораторных работ по курсу.RTF
ТипРуководство
1   2   3   4   5   6   7   8   9
Вычисление сумм на ЭВМ.
Нахождение сумм числовых последовательностей в программах является одной из часто встречающихся задач. Для вычисления сумм конечных последовательностей применяется стандартный алгоритм :

  • задается начальное значение переменной ,хранящей сумму

  • организуется цикл суммирования по параметру суммирования от начального до конечного с шагом 1

  • в цикле переменная, хранящая сумму, увеличивает свое значение на текущий элемент суммы

Продемонстрируем процесс вычисление суммы на примере:

- вычислить сумму числовой последовательности, заданной в виде

S=1-x+x2-x3+...+(-1)nxn , где x и N считаются заданными .

Для программирования процесса суммирования представим последовательность в стандартном виде.



N

S=1+ (-1)ixi



i=1

В нашем случае, начальное значение переменной , хранящей сумму, следует взять равной 1. Параметр суммирования (I) должен пробегать значение от 1 до N с шагом 1. Текущий элемент суммы следует брать в виде (-1)ixi

Фрагмент программы, реализующий процесс вычисления суммы ряда, показан ниже:

S=1


For i=1 To N

S=S+(-1)^i*x^i

Next i

После завершения цикла переменная S будет хранить текущее значение суммы элементов последовательности.



Аналогичным образом программируются процессы вычисления сумм элементов вектора, матрицы и т.д. Например, требуется рассчитать элементы одномерного массива как скалярное произведение элементов матрицы:

N

xi=  ai,j *aj,i



j=1

В этом случае, начальное значение переменной суммирования xi рано 0, параметр суммирования (j) пробегает значение от 0 до N,текущий член суммы равен ai,j *aj,i .

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

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

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

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

Для получения результата с нужной точностью можно использовать другой алгоритм суммирования:

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

При таком подходе нельзя использовать для процесса суммирования цикл For -Next, т.к. не определена верхняя граница предела суммирования.

Для программирования этапа накопления суммы по этому алгоритму можно использовать цикл Do - Loop с пост условием. Приведем фрагмент вычисления ряда





S=1+ (-1)ixi



i=1

на языке Qbasic (значения X и точность E считаются заданными):

S=1:i=0

Do

i=i+1



a=(1-)^i*x^i

S=S+a


Loop While Abs(a)>Eps

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



  • с заданным числом членов (N=10)

  • с заданной точностью (Eps=10-5)

Например,

1

y=----- , S=1-x+x2-x3+...+(-1)nxn+...



1-x для x[0,0.9] x=0.1

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

Если бы в задании отсутствовало суммирование бесконечной последовательности , мы имели бы вариант лабораторной работы № 2.Следовательно, для решения данной задачи нужно в тело цикла по х просто добавить алгоритм вычисления суммы тем или иным способом.

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





Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9


База данных защищена авторским правом ©nedocs.ru 2017
обратиться к администрации

    Главная страница