Пример выполнения лабораторной работы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

где

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

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

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

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

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

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

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

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

= - ;

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

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

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

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

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

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

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

unit Unit1;

interface

Uses

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

Type

TForm1 = class(TForm)

{элементы интерфейса – описания добавляются сюда автоматически}

LabeledEdit1: TLabeledEdit;

LabeledEdit2: TLabeledEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

{заголовки подпрограмм – добавляются сюда автоматически}

procedure Button1Click(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

end;

{здесь можно описать свои глобальные константы}

Var

Form1: TForm1;

{здесь можно также описывать свои глобальные переменные}

Implementation

{$R *.dfm}

{Здесь начинаются тексты подпрограмм модуля}

{ Подпрограмма-обработчик события OnClick создается автоматически при двойном }

{ щелчке по элементу управления в окне формы – в данном случае щелчок был }

{ произведен по кнопке Button1 }

procedure TForm1.Button1Click(Sender: TObject);

var a,s,x,eps:double; n:Integer;

Begin

x:=StrToFloat(LabeledEdit1.Text);

eps:=StrToFloat(LabeledEdit2.Text);

a:=x; s:=0; n:=1;

while abs(a)>=eps do begin

s:=s+a;

n:=n+1;

a:=-a*x*x/((2*n-2)*(2*n-1));

end;

Label1.Caption:='Сумма='+FloatToStrF

(s,ffFixed,12,6);

Label2.Caption:='Кол-во слагаемых='+IntToStr(n);

end;

End.

Разработка приложения состоит из следующих этапов.

1. Создание отдельной папки для будущего проекта приложения.

2. Запуск визуальной среды программирования Delphi и создание нового проекта (File à New à Application).

3. Создание формы и размещение на ней основных компонентов (рис. 4) – двух полей ввода LabeledEdit1 и LabeledEdit2 для и соответственно, двух полей вывода Label1 и Label2 для и соответственно и кнопки запуска программы Button1. С помощью инспектора объектов устанавливаются заголовки полей ввода (PropertiesàEditLabelàCaption), а также начальные значения в этих полях (PropertiesàText). Названия кнопки запуска и формы (окнá приложения) задаются в инспекторе объектов ((PropertiesàCaption).

Рис.4. Форма и размещение на ней основных компонентов

4. Набор текста программы. Для этого двойным щелчком по кнопке «старт» переходим в окно редактирования программы и в открывшейся заготовке набираем текст процедуры вычисления суммы ряда.

5. Сохранение проекта нажатием клавиш Ctrl-S.

6. Запуск приложения нажатием клавиши F9. Далее программа ожидает ввода исходных данных (значений и ).

7. Набор в полях ввода значений и . Необходимо помнить, что символ, отделяющий целую и дробную части вещественного числа определяется настройками Windows, чаще всего для этого используется символ «,» (запятая).

8. Запуск вычислений в программе нажатием кнопки «старт» (рис. 5).

Рис.5. Окно приложения с результатами вычислений

Если в программе нет ошибок, в окне приложения появится результаты.

ВАРИАНТЫ ЗАДАНИЯ ПО ЛАБОРАТОРНОЙ РАБОТЕ

1.

2.

3.

4.

5.

6.

7. .

8.

9.

10.

11.

12. .

13.

14.

15.

16. .

17. .

18. .

19. .

20. .


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: