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



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

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



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

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

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

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

вычислить значение функции Y как произведение элементов одномерного массива



N

Y =  xi ,



i=1

элементы одномерного массива считаются заданными.

Фрагмент программы, реализующий решение данной задачи :

Y=1


For i=1 To N

Y=Y*X(i)


Next i

Как было отмечено ранее, в составе библиотеки стандартных программ языка Basic отсутствует функция вычисления значения факториала числа.

Однако, если нужно найти факториал некоторого числа К , вычисляемого по формуле

К

К!=П i


i=1

можно использовать выше описанный алгоритм.

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

N

S= (-1)ixi/i!



i=1

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

I!=I*(I-1)!.

Каждое последующее значение факториала вычисляется как значение факториала предыдущего числа, умноженное на текущее значение I. Такой подход позволяет уменьшить объем вычислений и зачастую упростить алгоритм. При вычислении факториала вводится переменная, хранящая требуемый результат. Задается начальное значение этой переменной равной 1 ( как известно 0!=1).Каждое вычисляемое значение факториала заносится в ту же переменную.

Для рассмативаемого ряда, процессс вычисления суммы может быть реализован в виде следующего фрагмента:

S=0:P=1


For i=1 To N

P=I*P


S=S+x^i/P

Next i


Однако подобный подход приемлем лишь для вычисление факториалов для небольших значений I (i!<1038).Для вычислений больших значений факториалов можно использовать вещественные переменные с двойной точностью либо дополнительные математические приемы.

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

(2*I)! , то для реализации подобного подхода необходимо связать значение факториала не с предыдущим , а с пред-предыдущим. Для вычисления второго члена последовательности необходимо использовать значение 4! , связав его со значением 2!, участвовавшего при расчете 1-ого члена ряда. В этом случае рекуррентная формула приобретает вид

(2I)!=2*I*(2I-1)*(2I-2)!

Соответственно изменится формула расчета факториала в вышеприведенном фрагменте программы.

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

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

Для заданного в виде

S=a0+a1+a2+...+aN+...

ряда рекуррентная формула связывает a1 с a0 , a2 с a1 и т.д., или

ai=B*ai-1

Получим рекуррентную формулу для вычисления ряда , вида



S= (-1)ix2i/(2i)!



i=1

Значение (i-1)-ого члена последовательности получается путем замены значения I на I-1 в общем члене ряда:

ai-1=(-1)i-1x(2i-2)/(2i-2)!

Для нахождения коэффициента В в общей формуле рекуррентной последовательности выделим из ai члены, подобные ai-1

(-1)i=(-1)i-1(-1)

x2i=x2i-2x2

(2i)!=2i*(2i-1)*(2i-2)!

Подставим в ai полученные выражения и сгруппируем их

(-1)x2 (-1)i-1 x2i-2 -x2

ai=-------- * ---------- = --------- ai-1 =B*ai-1

2i(2i-1) (2i-2)! 2i(2i-1)

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

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

a=1:S=0


For i=1 To N

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

S=S+a

Next i


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



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


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

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