Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Постановка задачи и метод решенияРяд - последовательность чисел, в которой все элементы пронумерованы, и значение элемента ряда является функцией от порядкового номера. а1, а2, а3,..., аi,..., где аi=f(i) Часто решается задача суммирования элементов ряда, в которой производится одно из вычислений: - суммирование фиксированного числа элементов ряда; - суммирование элементов бесконечного ряда. Естественно, суммирование бесконечного ряда имеет смысл только для сходящегося ряда (при беспредельном возрастании количества элементов ряда, входящих в сумму ряда, сумма ряда стремится к определенному конечному пределу). Известно, что ряд будет сходящимся, если выполняется одно из следующих условий: |ai+1| < |ai | (для знакопостоянных рядов); |ai+1 - -ai | < |ai – ai-1 | (для знакопеременных рядов). В задаче суммирования фиксированного числа элементов ряда входной информацией должно быть количество элементов ряда, входящих в сумму. В задачах суммирования элементов бесконечного ряда входной информацией должна быть точность, определяющая продолжение процесса суммирования Е. В этих задачах суммирование продолжается (для первого типа сходимости) пока очередной элемент по абсолютной величине превышает Е, либо (для второго типа сходимости) пока абсолютная величина разности между текущим и следующим элементами превышает Е. Дадим определение: Функция называется алгоритмически простой, если ее можно записать с помощью выражения на алгоритмическом языке, и алгоритмически сложной, если для реализации функции необходим некоторый алгоритм. При решении каждой из задач суммирования рядов существует два случая - функция, определяющая элемент ряда в зависимости от порядкового номера есть - алгоритмически простая функция; - алгоритмически сложная функция. Таким образом, каждый из задач суммирования имеет две разновидности. В первом случае должна быть определена функция вычисления текущего элемента ряда в зависимости от порядкового номера, представляющая собой арифметическое выражение. Во втором случае ряд представляется, как геометрическая прогрессия. Для этого предварительно - вычисляется значение первого элемента. Это значение является входной информацией; - выводится формула знаменателя геометрической прогрессии (q) подстановкой в общем виде функции определения элемента ряда в формулу: и, если q(i) является алгоритмически простой функцией от i, то можно применить нижеуказанный алгоритм. В каждой из задач суммирования результатом является одно вещественное число. Поэтому целесообразно оформить каждую задачу, как функцию. Цели и списки параметров для каждой функции определены. Разработаем модуль, включающий эти функции: Текст модуля
unit sum_riad;
{интерфейсная секция} interface type {тип функций, вычисляющих значение элемента ряда и знаменателя геометрической прогресси, как функций от поряд кового номера} tf=function(i:integer):real;
{функция суммирования конечного ряда с простой функцией определения элемента ряда} function z1(n{количество элементов}:integer; f{функция, вычисляющая значение элемента ряда в зависимости от порядкового номера }:tf):real;
{функция суммирования конечного ряда со сложной функцией определения элемента ряда} function z2(n{количество элементов}:integer; a1{значение первого элемента ряда}:real; q{функция, вычисляющая значение знаменателя геометрической прогрессии в зависимости от порядкового номера }:tf):real;
{функция суммирования бесконечного ряда первого типа сходимости с простой функцией определения элемента ряда} function z3(eps{точность}:real; f{функция, вычисляющая значение элемента ряда в зависимости от порядкового номера }:tf):real;
{функция суммирования бесконечного ряда первого типа сходимости со сложной функцией определения элемента ряда} function z4(eps{точность}:real; a1{значение первого элемента ряда}:real; q{функция, вычисляющая значение знаменателя геометрической прогрессии в зависимости от порядкового номера }:tf):real;
{функция суммирования бесконечного ряда второго типа сходимости с простой функцией определения элемента ряда} function z5(eps{точность}:real; f{функция, вычисляющая значение элемента ряда в зависимости от порядкового номера }:tf):real;
{функция суммирования бесконечного ряда второго типа сходимости со сложной функцией определения элемента ряда} function z6(eps{точность}:real; a1{значение первого элемента ряда}:real; q{функция, вычисляющая значение знаменателя геометрической прогрессии в зависимости от порядкового номера }:tf):real;
{секция реализации} implementation
function z1; var i:integer;{порядковый номер элемента} sum:real;{сумматор - для накопления суммы} begin sum:=0; for i:=1 to n do sum:=sum+f(i); z1:=sum end;{z1}
function z2; var i:integer;{порядковый номер элемента} a:real;{текущий элемент ряда} sum:real;{сумматор - для накопления суммы} begin sum:=0; a:=a1; for i:=1 to n do begin sum:=sum+a; a:=a*q(i) end;{for i} z2:=sum end;{z2}
function z3; var i:integer;{порядковый номер элемента} sum:real;{сумматор - для накопления суммы} begin sum:=0; i:=1; while abs(f(i))>eps do begin sum:=sum+f(i); i:=i+1 end;{while} z3:=sum end;{z3}
function z4; var i:integer;{порядковый номер элемента} a:real;{текущий элемент ряда} sum:real;{сумматор - для накопления суммы} begin sum:=0; a:=a1; i:=1; while abs(a)>eps do begin sum:=sum+a; a:=a*q(i); i:=i+1 end;{while} z4:=sum end;{z4}
function z5; var i:integer;{порядковый номер элемента} ap:real;{предыдущий элемент ряда} at:real;{текущий элемент ряда} sum:real;{сумматор - для накопления суммы} begin ap:=f(1); sum:=ap; at:=f(2); i:=2; while abs(at-ap)>eps do begin sum:=sum+at; i:=i+1; ap:=at; at:=f(i) end;{while} z5:=sum end;{z5}
function z6; var i:integer;{порядковый номер элемента} ap:real;{предыдущий элемент ряда} at:real;{текущий элемент ряда} sum:real;{сумматор - для накопления суммы} begin ap:=a1; sum:=ap; at:=ap*q(1); i:=2; while abs(at-ap)>eps do begin sum:=sum+at; ap:=at; at:=ap*q(i); i:=i+1 end;{while} z6:=sum end;{z6}
end.
|