Ортогональные полиномы Чебышева
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ БЕЛАРУСЬ
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет информационных технологий и робототехники (ФИТР)
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
КУРСОВАЯ РАБОТА
по дисциплине: «Разработка приложений в визуальных средах»
на тему: «Ортогональные полиномы Чебышева»
Выполнил: ст. гр. 307211 Кожекин М.М.
Принял: доц. Гурский Н.Н.
Белорусский национальный технический университет
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине «Разработка приложений в визуальных средах»
Тема: «Ортогональные полиномы Чебышева»
Исполнитель: Кожекин М.М.
Студент 3 курса 307211 группы
Руководитель : Гурский Н.Н.
Минск 2014
Содержание
Введение
Данный курсовой проект посвящен программному моделированию реакции одномассовой системы на прямоугольный импульс. В результате импульса, в том числе и прямоугольного, система начинает колебаться. Различного рода колебания – одно из самых распространенных физических явлений. Ничто в окружающей нас среде не остается в стороне от колебаний, будь то математический маятник или лист дерева на ветру. На основе колебаний работает огромное количество приборов и механизмов, широко используемых человеком.
Все колебания, имеющие самые различную природу и характеристики (амплитуды, фазы колебаний, скорость колебаний и другое), в большинстве случаев описываются схожими законами – тригонометрическими функциями, дифференциальными, показательными уравнениями и их комбинациями. Хотя в данном проекте изучается вполне конкретное физическое явление, аналогичные методы можно использовать и при моделировании других явлений и процессов.
Среда разработки Delphi 7 обладает широким набором средств для реализации сложных вычислительных процессов; для получения результатов, как в виде таблиц, так и графиков; для визуальной реализации моделирования. Одновременно Delphi 7 позволяет создавать пользовательские интерфейсы со всеми необходимыми элементами без затраты особых усилий. На выбор именно этой среды разработки повлияло, в - первую очередь, то, что Delphi 7 соответствует всем современным стандартам языков программирования высокого уровня и поддерживает наиболее передовые разработки ( например, позволяет работать с динамическими библиотеками(dll), серверами автоматизации(технология com) , позволяет использовать для разработки проектов возможности других приложений ).
1. Математическая формулировка задачи
В случае аппроксимации экспериментальных данных параболой к – го порядка для нахождения только нового дополнительного коэффициента (остальные коэффициенты остаются без изменения) удобно использовать замену системы одночленов: 1, х, х2…., хк ортогональными полиномами: Р0(х), Р1(х), Р2(х), …….. Рк(х).
Тогда получим:
- Полином Чебышева.
Система полиномов Рi(х) образует ортогональную систему функций на множестве точек х1,х2, …хN, т.е. в этом случае:
Получаем диагональную матрицу, следовательно коэффициенты bi можно найти не решая систему уравнений, а рассчитать по следующим формулам:
, i = 0,k¯
Ортогональные полиномы Чебышева зависят от выбора узлов xU и определяются с точностью до коэффициента.
Если принять коэффициент наивысшей степени равным единице, то полиномы можно посчитать так:
Р0(х) = 1,
Остальные полиномы находятся из рекуррентного соотношения:
, где
- квадрат нормы.
После получения коэффициентов регрессии и расчета полиномов Чебышева необходимо провести статистический анализ уравнения – определить оценки дисперсии и проверить адекватность уравнения.
Дисперсия опыта рассчитывается по формуле:
Дисперсия адекватности рассчитывается по формуле:
Проверка адекватности модели рассчитывается по формуле:
Коэффициент парной корреляции вычисляется по формуле:
,
Для оценки значимости коэффициента корреляции используется критерий Стьюдента:
Дисперсия регрессии рассчитывается следующим образом:
. Причем:
2. Описание программы
2.1. Структурная схема программы
Структурная программа состоит из главного модуля, модулей описания вспомогательных форм, динамических библиотек, файлов помощи и обращений к другим программам. Связь модулей приведена на рисунке 2.1.
Рисунок 2.1.1 – Структурная схема связей модулей программы
2.2. Описание разработанного класса
В результате анализа предметной области для её описания и моделирования был разработан класс TCPoly, инкапсулирующий поля, методы и свойства, применимые к рассматриваемому объекту.
type
TCPoly = class(TObject)
private
n: integer;
rod: integer;
v_str: string;
matr: array of Extended;
matr_for_table: array of Extended;
count: integer;
public
procedure PolyCheb(_n, _rod: integer);
function idx(i,j:integer):integer;
procedure ClearMatr;
function st(gr:integer):string;
function xst(gr:integer):string;
function koef(gr:integer):string;
function get_str(): string;
function get_count(): integer;
procedure ShowPolynomial;
function get_el_array(i_row:integer): Extended;
procedure whithout_zero();
procedure Get_Table(SG : TStringGrid);
procedure Get_Chart(Ch : TChart);
function stepX(X: Extended; stepen: integer): Extended;
procedure Import_To_Excel(rod, por:integer);
procedure Import_To_Word(rod, por:integer);
end;
Описание и реализация класса структурно оформлено в отдельном Unit – UPoly. Используемые секции public и private определяют области видимости элементов класса.
2.3. Описание реализации технологии COM
В соответствии с требованиями на разработку данной курсовой работы была также реализована возможность экспорта методов созданного класса с помощью технологии COM. Для этого был создан сервер в виде DLL – программный модуль Project1.
library Project1;
uses
ComServ,
Project1_TLB in 'Project1_TLB.pas',
Unit1 in 'Unit1.pas' {MyClass: CoClass},
Unit2 in 'Unit2.pas';
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer,
DllInstall;
{$R *.TLB}
{$R *.RES}
begin
end.
Этот сервер позволяет создать COM-объект, описание класса которого находится в модуле Unit1. Следует заметить, что данный класс полностью соответствует, приведенному в п.2.2 классу TCPoly, т.е. он является его копией. Непосредственный доступ к открытым элементам COM-класса осуществляется с помощью интерфейса IMyClass, описанного в модуде Unit2.
2.4. Описание динамических библиотек
При разработке приложения были реализованы 2 динамические библиотеки.
Динамическая библиотека DllFormpr.dll содержит форму о программе.
Библиотека содержит 1 экспортируемую процедуру ShowDllFormModal, служащую для отображения формы.
unit DllForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmDllForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmDllForm: TfrmDllForm;
implementation
{$R *.dfm}
function ShowDllFormModal: integer; stdcall;
begin
frmDllForm:= TfrmDllForm.Create(nil);
Result:= frmDllForm.ShowModal;
end;
procedure TfrmDllForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Exports
ShowDllFormModal;
procedure TfrmDllForm.Button1Click(
begin
frmDllForm.Close;
end;
end.
Библиотека содержит экспортируемую функцию ShowDllFormModal для отображения формы.
2.5. Средства использования сервисов, предоставляемых Microsoft Office
Кроме процедур и функций, описанных в классах, программа обеспечивает взаимодействие с серверами автоматизации приложений Microsoft Office. Так, следующие процедуры головного модуля программы позволяют автоматически производить запуск MS Word, MS Excel и передавать информацию с целью создания отчетов или использование ее для дальнейшей обработки. Реализация данных серверов автоматизации находится в классе TCPoly:
1. метод TCPoly.Import_To_Excel(rod, por:integer) обеспечивает передачу данных в Excel.
2. метод TCPoly.Import_To_Word(rod, por:integer) обеспечивает передачу данных в Excel.
2.6. Основные возможности программы
Программа начинается с отображения оригинальной заставки, а затем на экране появляется главное окно программы (модуль UnitMain). Главный модуль управляет работой всех других модулей в соответствии с запросами пользователя.
Он содержит:
- Вызов окна «О программе»;
- Сохранение данных;
- Передача данных в MS Word и MSExcel;
- Сохранение данных в Ini-файлах;
- Возможность послать письмо разработчику;
- Изменение внешнего интерфейса;
- Вывод полиномов Чебышева I и II порядка;
- Вывод графика поли номов Чебышева I и II порядка;
Диалог с пользователем поддерживается с помощью главного и выпадающего меню, кнопок и других интерфейсных элементов.
Окно «О программе» содержит краткую информацию о приложении.
Процесс логического взаимодействия пользователя c программой, назначение элементов главного окна описаны в «Руководстве пользователя».
Вопросы непосредственной программной реализации конкретных модулей приведены в приложении. По тексту программ даются достаточно полные комментарии, необходимые для описания переменных, процедур и функций, а также основных шагов реализации используемых алгоритмов.
3. Руководство пользователя
Для активизации программы необходимо вызвать файл Polynomials.exe.
появится заставка (см. рисунок 3.1).
Рисунок 3.1 – Заставка программы
После заставки появится главное окно программы (см. рисунок 3.2).
Рисунок 3.2 – Главное окно программы
Как видно, данное окно состоит из следующих частей:
- Главного меню;
- Области вывода информации;
- Управляющие кнопоки.
Пункты главного меню показаны на рисунке 3.3.
Рисунок 3.3 – Главное меню программы
В свою очередь пункты главного меню содержит ряд подпунктов, приведенных на рисунке 3.4.
Рисунок 3.4 - Пункт меню «Файл»
При выборе пункта «Выход» происходит завершение работы приложения.
Пункт меню «Сохранить» сохраняет полином в файл, а пункт меню «Сохранить как» сохраняет полином в файл с указанием адреса:
Рисунок 3.5 – Выбор адреса
Подпункты пункта меню «Вид» «Отключить заставку» и «Сменить скин» отключают заставку и меняют «скин» по желанию пользователя соответсвенно(см. рисунок 3.6).
Рисунок 3.7 - Пункт меню «Вид»
На рисунке 3.8 приведены команды, вызываемые пунктом главного меню «Справка».
Рисунок 3.8 – Пункт меню «Справка»
Выбор пункта главного меню «Справка» позволяет получить на экране краткие сведения о программе в виде, показанном на рисунке 3.9, а также отправить короткое сообщеник разработчику (см. рисунок 3.10).
Рисунок 3.9 – Форма «О программе»
Рисунок 3.10 – Форма «Письмо разработчику»
Также имеется качель изменения степени многочлена, переключатель рода многочлена.
Кнопка «Вывести многочлен» выводит многочлен по заданным ранее кретериям (рисунок 3.11).
Рисунок 3.11 – Выведенный многочлен
Для отображения таблицы коэффициентов и графика необходимо нажать кнопку «Показать таблицу и график» (см. рисунок 3.12).
Рисунок 3.11 – Таблица коэффициентов и график
Для возвращения к предыдущему состоянию необходимо нажать кнопку «Показать полином в общем виде»
4. Методика испытаний
Целью проведения испытаний является проверка работоспособности (надежности) программы при различных условиях ее функционирования.
Программа должна обеспечивать корректность ввода исходных данных (путем осуществления соответствующих проверок и информирования пользователя о возникших неточностях в работе), а также получение непротиворечивого результата.
Для демонстрации работоспособности программы необходимо провести ряд испытаний с различными начальными условиями. Для обеспечения нормальной работы программы требуется наличие соответствующих DLL.
Тестовые примеры выполнялись в среде операционной системы Windows XP Profesional при использовании процессора Intel Pentium 4 2.4 GHz и разрешении экрана 1024*768. Для работы с программой необходимо также наличие клавиатуры и манипулятора типа «мышь».
Испытание проведем с произвольными данными.
Произврольные данные: при степени равной 31 и первому роду.
Результаты этого вычислительного эксперимента приведены на рисунке 4.1.
Рисунок 4.1 – Тест №1
Произведем также испытание при других значениях исходных данных, при степени равной 31 и второму роду
Полученные результаты на рисунке 4.2.
Рисунок 4.2 – Тест №2
Так же можно провести тест экспорта данных в MS Excel и MSWord, полученные результаты на рисунке 4.3 и рисунке 4.4 соответственно.
Рисунок 4.3 – Тест №3
Рисунок 4.4 – Тест №4
Таким образом, проведенное тестирование программы не выявило сбойных ситуаций и некорректностей в ее работе. Следует считать, что в целом программа протестирована, отвечает поставленным требованиям и вполне работоспособна.
Заключение
В ходе выполнения курсовой работы:
- были закреплены знания по курсу «Разработка приложений в визуальных средах»;
- приобретен опыт при разработке объектно-ориентированных программ;
- изучены принципы создания динамических библиотек;
- освоены методы передачи данных между приложениями;
Программа имеет достаточно ясный и понятый дружелюбный пользовательский интерфейс, обеспечивающий удобство в работе и обеспечивающий получение необходимой пользователю информации с наименьшими затратами времени.
Таким образом, разработанное в ходе выполнения курсовой работы приложение является законченным программным продуктом.
Литература
- Фаронов В.В. Delphi 6. Учебный курс.-М.: Издатель Молгачева С.В., 2001.-672с.
- Елмакова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM.-СПб.: Питер, 2002. – 640 с.
- Федоров А.. Delphi 5.0 для всех. -М.: Тоо фирма “КомпьютерПресс”, 1998. - 464 с.
- Марко Кэнту. Delphi 5 для профессионалов.-СПб.: Питер. 2001. – 944 с.
- Бобровский С. Delphi 5: учебный курс- СПб: Издательство «Питер», 2000.- 640с.
- А.М.Епанешников, В.А.Епанешников Программирование в среде Delphi.-М.:»Диалог МИФИ», 1998.
Приложение
Файл проекта Polynomials.dpr
program Polynomials;
uses
Forms,
UnitMain in 'UnitMain.pas' {FormMain},
PUnit1 in 'PUnit1.pas' {Form1},
PUnit2 in 'PUnit2.pas' {Form2},
UPoly in 'UPoly.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
Файл головного модуля UnitMain.pas
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons, Menus, Vcl.Grids,
VCLTee.TeEngine, VCLTee.TeeProcs, VCLTee.Chart, Math, VCLTee.Series, ComObj;
type
TFormMain = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
RadioGroup1: TRadioGroup;
Button1: TButton;
GroupBox6: TGroupBox;
RichEdit1: TRichEdit;
UpDown1: TUpDown;
Label1: TLabel;
Image2: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
X1: TMenuItem;
OpenDialog1: TOpenDialog;
GroupBox3: TGroupBox;
Label2: TLabel;
SaveDialog1: TSaveDialog;
N13: TMenuItem;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Button2: TButton;
StringGrid1: TStringGrid;
Chart1: TChart;
Label3: TLabel;
Series1: TLineSeries;
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure X1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
n :integer;
end;
var
FormMain: TFormMain;
function ShowFormModal:integer;stdcall;
external 'DllFormpr.dll' name 'ShowDllFormModal';
implementation
uses PUnit1, IniFiles, PUnit2, UWord, UPoly, Unit2;
{$R *.dfm}
const maxn=333; // константа, ограничение степени полиномов
var ch: integer;
procedure TFormMain.FormCreate(Sender: TObject);
var
Ini: Tinifile;
m: integer; //временная переменная
begin
Ini:=TiniFile.Create(
RadioGroup1.ItemIndex := Ini.ReadInteger('Pol','Rod',
n := Ini.ReadInteger('Pol','Step',
m := Ini.ReadInteger('Show', 'Start', 100);
if m = 1
then
N5.Checked:=false
else
N5.Checked:=true;
Ini.Free; //чтение из ini
ch:=0;
UpDown1.Max:=maxn; //установка ограничения
UpDown1.Position:=n; //это же значение в счетчик
Label1.Caption:=IntToStr(n); //это же значение на экран
FormMain.Top := Screen.Height div 2 - FormMain.Height div 2; //центрирование под экран
FormMain.Left := Screen.Width div 2 - FormMain.Width div 2;
end;
procedure TFormMain.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
if Button=btNext
then
inc(n)
else
dec(n); //если правая кнопка увеличиваем n, иначе уменьшаем
Label1.Caption:=IntToStr(n); //значение n на экран
end;
procedure TFormMain.Button1Click(Sender: TObject); //Чебышева
Var objp: TCPoly;
rod: integer;
obj_com: IMyClass;
begin
rod := RadioGroup1.ItemIndex;
FormMain.RichEdit1.Clear;
FormMain.RichEdit1.Lines.Add('
//Использование com сервера
obj_com := CreateComObject(Class_MyClass) as IMyClass;
obj_com.PolyCheb(n, rod);
obj_com.whithout_zero;
FormMain.RichEdit1.Lines.Add(
obj_com.Get_Table(StringGrid1)
obj_com.Get_Chart(Chart1);
end;
procedure TFormMain.Button2Click(Sender: TObject);
begin
if ch = 0
then
begin
RichEdit1.Visible := false;
ch := 1;
Label3.visible := true;
Chart1.visible := true;
StringGrid1.visible := true;
Button2.Caption := 'Показать полином в общем виде'
end
else
begin
RichEdit1.Visible := true;
ch := 0;
Label3.visible := false;
Chart1.visible := false;
StringGrid1.visible := false;
Button2.Caption := 'Показать таблицу и график';
end;
end;
procedure TFormMain.FormShow(Sender: TObject);
var
Ini: Tinifile;
tumb: integer;
begin
Ini := TiniFile.Create(
tumb := Ini.ReadInteger('Show', 'Start', 100);
Ini.Free;
Label3.visible := false;
Chart1.visible := false;
StringGrid1.visible := false;
if tumb = 1
then
Form1.ShowModal;
end;
procedure TFormMain.BitBtn1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TFormMain.BitBtn2Click(Sender: TObject);
begin
Application.Minimize;
end;
procedure TFormMain.FormDestroy(Sender: TObject);
var
Ini: Tinifile; //ini объект
begin
Ini:=TiniFile.Create(
Ini.WriteInteger('Pol', 'Rod', RadioGroup1.ItemIndex);
Ini.WriteInteger('Pol', 'Step', n);
Ini.Free; //запись в ini
end;
procedure TFormMain.N12Click(Sender: TObject);
begin
Application.Minimize;
end;
procedure TFormMain.X1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TFormMain.N5Click(Sender: TObject);
var
Ini: Tinifile;
begin
Ini:=TiniFile.Create(
if N5.Checked = true
then
begin
Ini.WriteInteger('Show', 'Start', 1);
N5.Checked := false;
end
else
begin
Ini.WriteInteger('Show', 'Start', 0);
N5.Checked := true;
end;
Ini.Free;
end;
procedure TFormMain.N3Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TFormMain.N6Click(Sender: TObject);
begin
if OpenDialog1.Execute
then
Image2.Picture.LoadFromFile(
end;
procedure TFormMain.N2Click(Sender: TObject);
begin
If SaveDialog1.Execute
then
RichEdit1.Lines.SaveToFile(
end;
procedure TFormMain.N13Click(Sender: TObject);
begin
RichEdit1.Lines.SaveToFile(
end;
procedure TFormMain.N11Click(Sender: TObject);
begin
Form2.ShowModal();
end;
procedure TFormMain.N8Click(Sender: TObject);
begin
ShowFormModal;
end;
//Excel
procedure TFormMain.SpeedButton1Click(
Var objx: TCPoly;
rod: integer;
begin
rod := RadioGroup1.ItemIndex;
objx := TCPoly.Create;
objx.PolyCheb(n, rod);
objx.whithout_zero;
objx.Get_Chart(Chart1);
objx.Import_To_Excel(rod, n);
objx.Free;
end;
procedure TFormMain.SpeedButton2Click(
Var objw: TCPoly;
rod: integer;
begin
rod := RadioGroup1.ItemIndex;
objw := TCPoly.Create;
objw.PolyCheb(n, rod);
objw.whithout_zero;
objw.Get_Chart(Chart1);
objw.Import_To_Word(rod, n);
objw.Free;
end;
end.
Файл класса TCPoly UPoly.pas
unit UPoly;
interface
uses VCLTee.TeeProcs, VCLTee.Chart, VCLTee.Series, Math, Grids, SysUtils, Types, Graphics, IniFiles,
Messages, Dialogs, StdCtrls, Variants, Classes, Controls, Forms,
ExtCtrls, Buttons, Menus, comobj, Excel_TLB, Word_TLB;
type
TCPoly = class(TObject)
private
n: integer;
rod: integer;
v_str: string;
matr: array of Extended;
matr_for_table: array of Extended;
count: integer;
public
procedure PolyCheb(_n, _rod: integer);
function idx(i,j:integer):integer;
procedure ClearMatr;
function st(gr:integer):string;
function xst(gr:integer):string;
function koef(gr:integer):string;
function get_str(): string;
function get_count(): integer;
procedure ShowPolynomial;
function get_el_array(i_row:integer): Extended;
procedure whithout_zero();
procedure Get_Table(SG : TStringGrid);
procedure Get_Chart(Ch : TChart);
function stepX(X: Extended; stepen: integer): Extended;
procedure Import_To_Excel(rod, por:integer);
procedure Import_To_Word(rod, por:integer);
end;
var
i,j: integer;
implementation
procedure TCPoly.whithout_zero();
var
buf: array of Extended;
el: integer;
_count: integer;
begin
_count := 0;
for i := 0 to (n+1)*(n+1)-1 do
if matr_for_table[i] = 0
then
inc(_count);
_count:=(n+1)*(n+1)-_count;
SetLength(buf, _count);
el:=0;
for i := 0 to (n+1)*(n+1)-1 do
if matr_for_table[i] <> 0
then
begin
buf[el] := matr_for_table[i];
inc(el);
end;
matr_for_table := nil;
SetLength(matr_for_table, _count);
for i := 0 to _count-1 do
matr_for_table[i] := buf[i];
count := _count;
end;
function TCPoly.get_count(): integer;
begin
Result:=count;
end;
function TCPoly.get_el_array(i_row:
begin
Result:=matr_for_table[i_row];
end;
function TCPoly.get_str(): string;
begin
Result:=v_str;
end;
function TCPoly.idx(i,j:integer):
begin
Result:=i*(n+1)+j;
end;
procedure TCPoly.ClearMatr;
var i:integer;
begin
//установка размера и очистка матрицы
SetLength(matr,(n+1)*(n+1));
for i:=0 to (n+1)*(n+1)-1 do matr[i]:=0;
SetLength(matr_for_table,(n+1)
for i:=0 to (n+1)*(n+1)-1 do matr_for_table[i]:=0;
end;
//----------------------------
procedure TCPoly.PolyCheb(_n, _rod: integer); //Чебышева
var i,j:integer; //счетчики для циклов (i номер строки, j номер столбца)
begin
n:=_n; rod := _rod;
ClearMatr; // создание чистой матрицы нужного размера
matr[idx(0,0)]:=1; //коэф при нулевой степени х

- Оружейные выставки
- Оружейный магазин
- Оружие в криминалистике: понятие и классификация
- Оружие и вооружение сарматов
- Оружие как пердмет и средство совершение преступления
- Оружие Пушкина
- О русской революции
- Орталық Қазақстан
- Орталық қазақстан экономикалық ауданы
- Орта мектептерде оқушылардың дене мәдениетін қалыптастыру
- Орта мектептерде оқушылардың дене мәдениетін қалыптастыру
- Орташа жалақыны есептеу тәртібі
- Орташа жалақыны есептеу тәртібі
- Ортогональные полиномы Лежандра и Чебышева