Рефераты

Интерполяционный полином Лагранжа

классических программных средств примерами низкоуровневой инкапсуляции

являются записи и массивы. Механизмом инкапсуляции среднего уровня являются

подпрограммы. В объектно-ориентированных системах инкапсулируются

обязанности класса, представляемые его свойствами, операциями и

состояниями. Для метрик учет инкапсуляции приводит к смещению фокуса

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

(операций). Кроме того, инкапсуляция переводит измерения на более высокий

уровень абстракции. Напротив, классические метрики ориентированы на низкий

уровень – количество булевых условий (цикломатическая сложность) и

количество строк программы.

Информационная закрытость делает невидимыми операционные детали

программного компонента. Другим компонентам доступна только необходимая

информация. Качественные объектно-ориентированные системы поддерживают

высокий уровень информационной закрытости. Таким образом, метрики,

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

объектно-ориентированного проекта.

Наследование – механизм, обеспечивающий тиражирование обязанностей

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

уровни иерархии классов. Стандартные программные средства не поддерживают

эту характеристику. Поскольку наследование – основная характеристика

объектно-ориентированных систем, на ней фокусируются многие объектно-

ориентированные метрики (количество детей – потомков класса, количество

родителей, высота класса в иерархии наследования).

Абстракция – это механизм, который позволяет проектировщику выделять

главное в программном компоненте (как свойства, так и операции) без учета

второстепенных деталей. По мере перемещения на более высокие уровни

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

общее представление понятия или элемента. По мере перемещения на более

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

обеспечивая более точное представление понятия или элемента. Класс – это

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

детализации и различными способами. Поэтому объектно-ориентированные

метрики должны представлять абстракции в терминах измерений класса.

Классической мерой сложности внутренних связей модуля является

связность, а классической мерой сложности внешних связей – сцепление.

Связность модуля – мера зависимости его частей, это внутренняя

характеристика модуля. Чем выше связность модуля, тем лучше результат

проектирования. Для измерения связности используют понятие силы связности

(СС). Существует 7 типов связности:

1. Связность по совпадению (СС=0). В модуле отсутствуют явно выраженные

внутренние связи.

2. Логическая связность (СС=1). Части модуля объединены по принципу

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

подпрограмм обработки ошибок. При использовании такого модуля клиент

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

сопряжение и большая вероятность внесения ошибок при изменении

сопряжения ради одной функции.

3. Временная связность (СС=3). Части модуля не связаны, но необходимы в

один и тот же период работы системы. Недостаток: сильная взаимная

связь с другими модулями, отсюда – сильная чувствительность к

внесению изменений.

4. Процедурная связность (СС=5). Части модуля связаны порядком

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

5. Коммуникативная связность (СС=7). Части модуля связаны по данным

(работают с одной и той же структурой данных).

6. Информационная (последовательная) связность (СС=9). Выходные данные

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

7. Функциональная связность (СС=10). Части модуля вместе реализуют одну

функцию.

Этот метод функционален по своей природе, поэтому наибольшей связностью

здесь объявлена функциональная связность. Вместе с тем одним из

принципиальных преимуществ объектно-ориентированного подхода является

естественная связность объектов. Максимально связанным является объект, в

котором представляется единая сущность и в который включены все операции

над этой сущностью. Следовательно, восьмой тип можно определить так:

8. Объектная связность. Каждая операция обеспечивает функциональность,

которая предусматривает, что все свойства объекта будут

модифицироваться, отображаться и использоваться как базис для

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

Высокая связность – желательная характеристика, так как она означает,

что объект представляет единую часть в проблемной области, существует в

едином пространстве. При изменении системы все действия над частью

инкапсулируются в едином компоненте. Поэтому для производства изменения нет

нужды модифицировать много компонентов. Если функциональность в объектно-

ориентированной системе обеспечивается наследованием от суперклассов, то

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

этом случае нельзя рассматривать объект как отдельный модуль – должны

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

такому учету. Однако понимание элемента, который наследует свойства от

нескольких суперклассов, резко усложняется.

В классическом методе Л. Констентайна и Э. Йордана определены шесть

типов сцепления, которые ориентированы на процедурное проектирование.

Принципиальное преимущество объектно-ориентированного проектирования в том,

что природа объектов приводит к созданию слабо сцепленных систем.

Фундаментальное свойство объектно-ориентированного проектирования

заключается в скрытости содержания объекта. Как правило, содержание объекта

невидимо внешним элементам. Степень автономности объекта достаточно высока.

Любой объект может быть замещен другим объектом с таким же интерфейсом. Тем

не менее наследование в объектно-ориентированных системах приводит к другой

форме сцепления. Объекты, которые наследуют свойства и операции, сцеплены с

их суперклассами. Изменения в суперклассах должны проводиться осторожно,

так как эти изменения распространяются во все классы, которые наследуют их

характеристики.

Таким образом, сами по себе объектно-ориентированные механизмы не

гарантируют минимального сцепления. Конечно, классы – мощное средство

абстракции данных. Их введение уменьшило поток данных между модулями и,

следовательно, снизило общее сцепление внутри системы. Однако количество

типов зависимостей между модулями выросло. Появились отношения

наследования, делегирования, реализации и т.д. Более разнообразным стал

состав модулей в системе (классы, объекты, свободные функции и процедуры,

пакеты). Отсюда вывод: необходимость измерения и регулирования сцепления в

объектно-ориентированных системах обострилась.

Сцепление – мера зависимости модулей по данным, внешняя характеристика

модуля, которую желательно уменьшать. Количественно сцепление измеряется

степенью сцепления (СЦ). Выделяют 6 типов сцепления:

1. Сцепление по данным (СЦ=1). Модуль А вызывает модуль В. Все входные

и выходные параметры вызываемого модуля – простые элементы данных.

2. Сцепление по образцу (СЦ=3). В качестве параметров используются

структуры данных.

3. Сцепление по управлению (СЦ=4). Модуль А явно управляет

функционированием модуля В (с помощью флагов или переключателей),

посылая ему управляющие данные.

4. Сцепление по внешним ссылкам (СЦ=5). Модули А и В ссылаются на один

и тот же глобальный элемент данных.

5. Сцепление по общей области (СЦ=7). Модули разделяют одну и ту же

глобальную структуру данных.

6. Сцепление по содержанию (СЦ=9). Один модуль прямо ссылается на

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

программ перемежаются друг с другом.

Глава 2

1. Интегрированная среда разработки Delphi

Курсовой проект был разработан в интегрированной среде разработки

Delphi 7, далее последует описание данного программного изделия.

Прикладные программы, или приложения, Delphi создаются в

интегрированной среде разработки. Пользовательский интерфейс этой среды

служит для организации взаимодействия с программистом и включает в себя ряд

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

интегрированной среды разработчику удобно проектировать интерфейсную часть

приложения, а также писать программный код и связывать его с элементами

управления. В интегрированной среде разработки проходят все этапы создания

приложения, включая отладку. Интегрированная среда разработки Delphi 7

представляет собой многооконную систему.

Язык Delphi реализует концепцию объектно-ориентированного

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

определяется набором взаимосвязанных задач, каждая из которых становится

самостоятельным объектом. У объекта есть свойства (т.е. характеристики, или

атрибуты), методы, определяющие его поведение, и события, на которые он

реагирует. Одним из наиболее важных понятий объектно-ориентированного

программирования является класс. Класс представляет собой дальнейшее

развитие концепции типа и объединяет в себе задание не только структуры и

размера переменных, но и выполняемых над ним операций. Объекты в программе

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

Все вычисления курсовой программы построены на знании интерполяционного

полинома Лагранжа (интерполяционный многочлен в форме Лагранжа). Именно с

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

пользователем значениях аргумента и некоторым другим входным данным.

Интерполяционным многочленом называется многочлен [pic] степени не выше n,

который в узлах [pic]принимает значения [pic].

Условия применения полинома:

Функция [pic] непрерывна на интервале [pic] и задана некоторыми своими

значениями [pic] для соответствующих значений аргумента [pic]. Полином

используется, когда необходимо найти значение этой функции в точке [pic].

Теорема:

Пусть заданы узлы [pic], среди которых нет совпадающих и значения [pic]

некоторой функции f(x) в этих узлах. Существует один и только один

многочлен [pic] степени не выше n, принимающий в узлах [pic] значения

[pic]. Введем вспомогательные многочлены

[pic].

Это многочлен степени n, для которого выполняется равенство [pic].

Многочлен [pic] называется полиномом Лагранжа.

При применении программы, названной «Интерполирование», пользователь

в первом окне вводит количество аргументов, столько узлов [pic] будет в

дальнейшем использоваться программой. Во втором окне пользователь вводит

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

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

нажатии кнопки «Вычислить», приводится в действие алгоритм программы,

происходит вычисление и выдается результат и одновременно с этим процессом

программа находит погрешность вычисления. Пользователь сам может оценить,

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

используя погрешность.

2. Характеристики модулей программного средства

1. Связность внутри модулей

Модули 1, 2 и 4 имеют внутреннюю связность временную (части модуля не

связаны, но необходимы в один и тот же период работы системы). Третий

модуль имеет тип связности – информативный последовательный, который

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

входные данные другой части модуля. Эта связи присутствует, потому что

function Ln (k: Integer): Real; function Pol ( ): Real; и function Delta (

): Real; являются входными данными для Procedure TForm3/Button1Click

(Sender: Tobject).

2. Сцепление модулей между собой

Модуль 1 сцеплен с модулем 2 по данным (тип сцепления первый, СЦ=1), то

есть модуль 1 вызывает модуль 2, входные и выходные параметры – простые

элементы данных.

Модуль 3 с модулем 2 сцеплен по содержанию, то есть модуль 3 прямо

ссылается на содержание модуля 2. Модуль 3 с первым модулем не сцеплены,

так как, хотя они оба сцеплены со вторым модулем, но каждый из них имеет

разный тип сцепления, не имеющих ничего общего.

Четвертый модуль, являющийся сведениями о программе связан с модулями

1, 2 и 3 по данным, все три модуля вызывают четвертый.

Заключение

Во время выполнения курсовой работы был разработан программное

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

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

решения задачи, как было описано во второй части курсовой работы лежит

вычисление интерполяционным полиномом Лагранжа. Было создано четыре модуля,

три из которых являются активными, четвертый («О программе») может быть

вызван с любого из трех главных модулей. Три основных модуля предлагают

поэтапное выполнение задачи; в первом модуле вводятся начальные данные, во

втором заполняется таблица со значениями функций и аргументов (это

промежуточные точки, на основании которых и строится полином Лагранжа).

Третий модуль является основным, использующим данные из второго и третьего

модуля для вычислительного процесса. Интерфейс программы совместим с

Windows-интерфейсом благодаря тому, что программа, в которой

разрабатывалась курсовая работа, – Delphi7 – предоставляет такую

возможность и поддерживает именно Windows-интерфейс. Все пункты курсового

задания были выполнены, разработанное программное средство выполняет

поставленную перед ним задачу.

Приложение 1. Исходный код программного средства:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, StdCtrls, Menus;

type

TForm1 = class(TForm)

Memo1: TMemo;

Edit1: TEdit;

Button1: TButton;

Memo2: TMemo;

Label1: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N2: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure N2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

A, k :integer;

implementation

uses Unit2, unit6, Unit3;

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);

begin

AboutBox.ShowModal;

end;

procedure TForm1.N4Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

k:=StrToInt(edit1.Text);

if (k30)

then ShowMessage('Не верно задано значение')

else

begin

k:=StrToInt(edit1.Text);

Form2.StringGrid1.ColCount:=(k+1);

Form2.visible:=true;

Form1.visible:=false;

end;

Form2.StringGrid1.Cells[0,0]:='X';

Form2.StringGrid1.Cells[0,1]:='Y';

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9']) then key:=#0;

end;

end.

_

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, StdCtrls, Grids, Menus;

type

TForm2 = class(TForm)

Label3: TLabel;

Button1: TButton;

Label5: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N2: TMenuItem;

StringGrid1: TStringGrid;

Label1: TLabel;

Button2: TButton;

procedure Button1OnClick(Sender: TObject);

procedure Button2OnClick(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

I, J: Integer;

implementation

uses Unit1, Unit6, Unit3;

{$R *.dfm}

procedure TForm2.N4Click(Sender: TObject);

begin

close;

Form1.Close;

end;

procedure TForm2.Button1OnClick(Sender: TObject);

begin

Form3.visible:=true;

Form2.visible:=false;

end;

procedure TForm2.Button2OnClick(Sender: TObject);

begin

Form1.visible:=true;

Form2.visible:=false;

end;

procedure TForm2.N2Click(Sender: TObject);

begin

AboutBox.ShowModal;

end;

procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9', '.']) then key:=#0;

end;

end.

unit unit3;

interface

uses

Windows, Math, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, ComCtrls;

type

TForm3 = class(TForm)

Label2: TLabel;

Edit1: TEdit;

Memo1: TMemo;

Edit3: TEdit;

Label1: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N4: TMenuItem;

N7: TMenuItem;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

procedure Edit1KeyPress(Sender: TObject; var Key: Char );

procedure N4Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations tion }

public

{ Public declarations }

end;

var

Form3: TForm3;

i, j, A, k: Integer;

Y, X: array [1..30] of Extended;

t, P, Dl: Real;

implementation

uses Unit1, Unit2, Unit6;

{$R *.dfm}

procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char); //

Integer

begin

if not(key in ['0'..'9']) then Key:=#0;

end;

procedure TForm3.N4Click(Sender: TObject);

begin

Close;

end;

procedure TForm3.N7Click(Sender: TObject);

begin

AboutBox.ShowModal;

end;

function Ln(k: integer): Real;

var Proizved1, Proizved2: Real;

begin

t:=StrToFloat(Form3.Edit1.Text);

i:=1;

Proizved1:=1;

Proizved2:=1;

repeat

if k<>i then begin

Proizved1:=Proizved1*(t-x[i]);

Proizved2:=Proizved2*(x[k]-x[i]);

end;

i:=i+1;

until i>A;

Ln:=Proizved1/Proizved2;

end;

function Pol( ): Real;

var

Sum: Real;

i: Integer;

begin

i:=1;

Sum:=0;

repeat

Sum:=Ln(i)*Y[i]+Sum;

i:=i+1;

until i>A;

Pol:=Sum;

end;

function Delta( ): Real;

var

Sum: Real;

i: Integer;

begin

i:=1;

Sum:=0;

repeat

Sum:=ABS(Ln(i))*0.0002+Sum;

i:=i+1;

until i>A;

Delta:=Sum;

end;

procedure TForm3.Button1Click(Sender: TObject);

var

i: Integer;

S: real;

begin

A:=StrToInt(Form1.Edit1.Text);

S:=0;

for i:=1 to A do begin

X[i]:=StrToFloat(Form2.StringGrid1.Cells[i,0]);

Y[i]:=StrToFloat(Form2.StringGrid1.Cells[i,1]);

end;

P:=Pol();

Dl:=Delta();

for i:=1 to A do S:=S+Ln(i);

ShowMessage(FloatToStr(S));

Form3.Edit3.Text:=FloatToStr(P);

Form3.Edit2.Text:=FloatToStr(Dl);

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

Form3.visible:=false;

Form2.visible:=true;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

Close;

Form2.Close;

Form1.Close;

end;

end.

unit Unit6; //AboutBox

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox = class(TForm)

Panel1: TPanel;

ProductName: TLabel;

Version: TLabel;

Copyright: TLabel;

Comments: TLabel;

Image1: TImage;

BitBtn1: TBitBtn;

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox: TAboutBox;

implementation

{$R *.dfm}

end.

Приложение 2. Блок-схема программного средства:

Приложение 3. Блок-схема алгоритма вычисления (третий модуль)

Приложение 4. Тесты – наборы проверочных данных – для проверки правильности

работы программы.

Первый проверочный набор.

В первом открывшемся окне, в пустое поле вводим цифру 6.

Во втором открывшемся окне, представленную таблицу заполняем согласно

представленным ниже данным.

|X |1 |2 |3 |4 |5 |6 |

|Y |7 |8 |9 |7 |8 |9 |

В третьем окне вводим: Х=13, и должны получить результат Y= –10 442.

Эти результаты получились из приведенных ниже расчетов:

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic]

[pic][pic]

Результатом должно стать число – 10 442.

Второй проверочный набор.

Второй проверочный набор является более простым вариантом, не требующим

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

квадраты.

В первом окне вводим число 4.

Во втором вводим в строчку Х числа 1, 2, 4, 5, а в строчку Y числа 1,

4, 16, 25, являющиеся квадратами этих аргументов. Этот набор данных

представлен в таблице ниже:

|X |1 |2 |4 |5 |

|Y |1 |4 |16 |25 |

Тогда в третьем окошке вводим любое число, квадрат которого Вам

известен, например, число 3, и в окошке «Результаты» должны получить число

9, в окошке «Погрешность вычисления» получаем погрешность, которая

появляется при вычислении функции данным методом (интерполяционным

полиномом Лагранжа). Можно взять и любое другое число.

Список использованных источников

1. Фокс Дж. Программное обеспечение и его разработка. М.:Мир, 1985. -

368 с.

2. Лисков Б., Гатэг Дж. Использование абстракций и спецификаций при

разработке программ: Пер. с англ. - М.: Мир, 1999. - 424 с.

2. Иванов А.Г., Карпова А.В., Семик В.П., Филинов Ю.Е. Объектно-

ориентированная среда программирования. Системы и средства информатики.

Вып.2. М.: Наука, 1991.

3. Программирование. Специальный выпуск по объектно-ориентированному

программированию. № 6, 1990.

4. Объектно-ориентированный подход технологии программирования/ Иванов

А.Г., Пятницкий А.А, Филинов Ю.Е. – СПб.: Питер, 2003. – 443 с.: ил.

5. Макаров А.А. Лукашин Ю.П. Объектно-ориентированный подход в

программировании. – М.: Финансы и статистика, 2000. – 356 с.

-----------------------

Left = 308

Top = 244

Width = 447

Height = 272

Caption = 'Интерполирование'

Color = clBtnFace

Menu = MainMenu1

Position = poScreenCenter

Visible = True

PixelsPerInch = 96

TextHeight = 13

Form 1

N2Click

N4Click

Button1Click

Edit1KeyPress

Left = 16

Top = 152

Width = 299

Height = 13

Cursor = crArrow

Caption = 'Нажмите кнопку для пеpехода на следующий шаг'

Label 1

Left = 16

Top = 8

Width = 425

Height = 81

Cursor = crArrow

BorderStyle = bsNone

Lines.Strings = ('Данная программа предназначена для расчета значения

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

значение функции. По точкам, которые Вы введете, будет построен

интерполяционный полином и с его помощью найдено значение функции’)

ParentColor = True

ParentFont = False

ReadOnly = True

TabOrder = 1

Memo 1

Tag = 2

Left = 16

Top = 120

Width = 65

Height = 21

TabOrder = 2

Edit 1

OnKeyPress = Edit1KeyPress

Left = 16

Top = 88

Width = 409

Height = 33

Cursor = crArrow

BorderStyle = bsNone

DragCursor = crDefault

Lines.Strings = ('Введите количество точек, из которых будет состоять

полином: (не меньше 4 и не больше 30')

ParentColor = True

ParentFont = False

ReadOnly = True

TabOrder = 0

Memo 2

N1

Caption = 'Файл'

N4

Caption = 'Выход'

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘О программе’

OnClick = N2Click

AboutBox

Button 1

Left = 16

Top = 177

Width = 105

Height = 33

Caption = 'ДАЛЕЕ'

TabOrder = 3

OnClick = Button1Click

Form 2

Left = 308

Top = 244

Width = 447

Height = 272

Caption = 'Интерполирование'

Color = clBtnFace

Menu = MainMenu1

Position = poScreenCenter

Visible = True

PixelsPerInch = 96

TextHeight = 13

Form 2

N2Click

N4Click

Button1Click

Button2Click

StringGrid1KeyPress

Label 3

Left = 16

Top = 8

Width = 169

Height = 13

Caption = 'В ячейки введите значения:'

ParentFont = False

Label 5

Left = 16

Top = 136

Width = 299

Height = 13

Caption = 'Нажмите кнопку для перехода на следующий шаг' ParentFont =

False

Label 1

Left = 16

Top = 152

Width = 228

Height = 13

Caption = 'или для возврата на предыдущий шаг'

ParentFont = False

Button 1

Left = 152

Top = 177

Width = 105

Height = 32

Caption = 'ДАЛЕЕ'

ParentFont = False

TabOrder = 0

OnClick = Button1OnClick

Form 3

N1

Caption = 'Файл'

N4

Caption = 'Выход'

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘О программе’

OnClick = N2Click

AboutBox

Button 2

Left = 16

Top = 177

Width = 105

Height = 32

Caption = 'НАЗАД'

ParentFont = False

TabOrder = 2

OnClick = Button2OnClick

Form 1

StringGrid

1???????????????????????????????????????????????????????????????????????????

??????????????

Tag = 5

Left = 16

Top = 40

Width = 393

Height = 81

Color = clCaptionText

DefaultColWidth = 55

RowCount = 2

FixedRows = 0

Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,

goRangeSelect, goEditing, goTabs]

ParentFont = False

ScrollBars = ssHorizontal

TabOrder = 1

OnKeyPress = StringGrid1KeyPress

Left = 308

Top = 244

Width = 447

Height = 272

Caption = 'Интерполирование'

Color = clBtnFace

Menu = MainMenu1

Position = poScreenCenter

Visible = True

PixelsPerInch = 96

TextHeight = 13

Form 3

N7Click

N4Click

Button1Click

Button2Click

Button3Click

Edit1KeyPress

Label 2

Left = 16

Top = 82

Width = 141

Height = 13

Caption = 'Полученный результат:'

ParentFont = False

Label 1

Left = 200

Top = 26

Width = 17

Height = 13

Caption = 'X='

ParentFont = False

Label 3

Left = 200

Top = 84

Width = 16

Height = 13

Caption = 'Y='

ParentFont = False

Label 4

Left = 16

Top = 128

Width = 159

Height = 13

Caption = 'Погрешность вычисления:'

ParentFont = False

Label 5

Left = 184

Top = 128

Width = 38

Height = 13

Caption = 'Delta='

ParentFont = False

Edit 1

Tag = 5

Left = 224

Top = 24

Width = 121

Height = 21

TabOrder = 0

OnKeyPress = Edit1KeyPress

Memo 1

Left = 16

Top = 8

Width = 169

Height = 41

BorderStyle = bsNone

Color = clBtnFace

Lines.Strings = ('Введите значение аргумента, функцию которого необходимо

найти:')

ParentFont = False

ReadOnly = True

TabOrder = 1

Edit 3

Left = 224

Top = 80

Width = 121

Height = 21

ParentColor = True

ReadOnly = True

TabOrder = 2

Edit 2

Left = 224

Top = 126

Width = 121

Height = 21

Color = clBtnFace

ParentFont = False

ReadOnly = True

TabOrder = 6

Button 1

Left = 360

Top = 22

Width = 73

Height = 25

Caption = 'Вычислить'

ParentFont = False

TabOrder = 3

OnClick = Button1Click

procedure TForm3.Button1Click(Sender: TObject);

Button 2

Left = 16

Top = 176

Width = 105

Height = 33

Caption = 'НАЗАД'

ParentFont = False

TabOrder = 4

OnClick = Button2Click

Form 2

Button 3

Left = 152

Top = 177

Width = 105

Height = 32

Caption = 'ВЫХОД'

ParentFont = False

TabOrder = 5

OnClick = Button3Click

Close

N1

Caption = 'Файл'

N4

Caption = 'Выход'

MainMenu 1

BiDiMode = bdRightToLeft

ParentBiDiMode = False

Left = 400

Top = 184

OnClick = N4Click

N2

Caption = ‘О программе’

OnClick = N2Click

AboutBox

Function Ln (k: Integer): Real;

Proizved1, Proizved2: Real;

i:=1;

Proizved1:=1;

Proizved2:=1;

If k<>1

да

Proizved1:=Proizved1*(t - x[I]);

Proizved2:=Proizved2*(x[k] – x[i]);

нет

End;

Function Pol ( ): Real;

If i>A

да

Ln:=Proizved1/Proizved2;

Sum: Real;

i: Integer;

i:=1;

Sum:=0;

If i

да

да

Sum:=Ln(i)*Y[i]+Sum;

i:=i+1;

If i>A

нет

да

Pol:=Sum;

End;

Function Delta ( ): Real;

Sum: Real;

i: Integer;

i:=1;

Sum:=0;

If i < A

Sum:=ABS (Ln (i) )*0.0002 + Sum;

i:=i+1;

If i > A

да

нет

Delta:=Sum;

End;

X[i]:=StrToFloat(Form2.StringGrid1.Cells[i,0];

Y[i]:=StrToFloat(Form2.StringGrid1.Cells[i,1];

Procedure Button1Click (Sender: TObject);

i: Integer;

S: Real;

A:=StrToInt(Form1.Edit1.Text);

S:=0;

P:=Pol ( );

Dl:=Delta ( );

For i:=1 to A

For I:=1 to A

S:=S+Ln (i);

ShowMessage ( FloatToStr (S) );

Form3.Edit3.Text:=FloatToStr (P);

Form3.Edit2.Text:=FloatToStr (Dl);

End;

Страницы: 1, 2


© 2010 Современные рефераты