23.05 18:10Николь Ричи наградили за ее родительские качества[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 18:02Наоми Кэмпбелл отпраздновала 38-й день рождения[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:25Серегу избили хулиганы[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:24У Сергея Зверева украли стринги[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:12Режиссер Сергей Соловьев госпитализирован[Film.Ru]
23.05 16:31Объявлены члены жюри конкурса ММКФ "Перспективы"[Film.Ru]
23.05 16:06Одесская киностудия снимает детективную мелодраму "Героиня своего романа" [УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:04Топ-50 самых красивых мужчин мира: украинец - второй[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:03Лорак едва не осталась на "Евровидении" без платья[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:00Ани Лорак вышла в финал "Евровидения-2008". [УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
Вы:
Результат
Архив

Главная / Предметы / Радиоэлектроника / Программная реализация модального управления для линейных стационарных систем


Программная реализация модального управления для линейных стационарных систем - Радиоэлектроника - Скачать бесплатно


Курсовая работа:
                «Программная реализация модального управления
                         для линейных стационарных систем»



Постановка задачи:

1. Для объекта управления с математическим описанием
      [pic],           (1)     [pic]- задано,
  где [pic] - n-мерный вектор состояния, [pic],
      [pic]- начальный вектор состояния,
       [pic]- скалярное управление,
      [pic]- матрица действительных коэффициентов,
      [pic]- матрица действительных коэффициентов,
  найти управление в функции переменных состояния объекта, т.е.
      [pic],                       (2)
  где[pic]- матрица обратной связи, такое, чтобы замкнутая система была
устойчивой.
2. Корни характеристического уравнения замкнутой системы
      [pic]            (3)
  должны выбираться по усмотрению (произвольно) с условием устойчивости
системы (3).


Задание:

1. Разработать алгоритм решения поставленной задачи.
2.  Разработать  программу  решения  поставленной  задачи  с   интерактивным
  экранным интерфейсом в системах Borland Pascal, Turbo Vision, Delphi - по
  выбору.
3. Разработать программу решения систем  дифференциальных  уравнений  (1)  и
  (3) с интерактивным экранным интерфейсом.
4. Разработать программу графического построения решений систем (1) и (3)  с
  интерактивным экранным интерфейсом.



                                  Введение

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


                       Алгоритм модального управления.

Соглашения:
. Задаваемый объект управления математически описывается уравнением
      [pic],           (1)
  где [pic] и [pic] - матрицы действительных коэффициентов,
      [pic] - n-мерный вектор состояния
      [pic]- скалярное управление,
      [pic] - порядок системы (1).
. Обратная связь по состоянию имеет вид
      [pic],                       (2)
  где[pic]- матрица обратной связи.
. Система с введенной обратной связью описывается уравнением
      [pic]            (3)
. Характеристическое уравнение системы (1) имеет вид
      [pic]         (4)
. Характеристическое уравнение системы (3) с задаваемыми (желаемыми)
  корнями [pic]имеет вид
      [pic]         (5)

Алгоритм:
1. Для исходной системы (1) составляем матрицу управляемости
      [pic]
2. Обращаем матрицу  [pic], т.е. вычисляем [pic].
  Если  [pic] не существует (т.е. матрица [pic] - вырожденная), то
  прекращаем вычисления: полное управление корнями характеристического
  уравнения (5) не возможно.
3. Вычисляем матрицу [pic]
4. Составляем матрицу
       [pic]
5. Вычисляем матрицу, обратную матрице [pic], т.е. [pic]
6. Вычисляем матрицу [pic] - матрицу [pic] в канонической форме фазовой
  переменной:
      [pic]
  где [pic]- коэффициенты характеристического уравнения (4).
  Матрица  [pic] в канонической форме имеет вид
      [pic]
7. Составляем вектор [pic] ,  элементам которого являются коэффициенты
  характеристического уравнения (4), т.е. [pic], [pic],
  где [pic] -  элементы матрицы [pic].
8. Находим коэффициенты характеристического уравнения (5) (см. пояснения) и
  составляем из них вектор [pic].
 9. Вычисляем вектор [pic].
  [pic] - искомая матрица обратной связи системы (3), но она вычислена для
  системы, матрицы которой заданы в канонической форме фазовой переменной
  ([pic] и [pic]).
10. Для исходной системы (3) матрица обратной связи получается по формуле
      [pic]
  Матрица  [pic] - искомая матрица обратной связи.

Пояснения к алгоритму:
  В данной работе рассматривается случай, когда  управление  единственно  и
информация о  переменных  состояния  полная.  Задача  модального  управления
тогда  наиболее  просто  решается,   если   уравнения   объекта   заданы   в
канонической форме фазовой переменной.
  Так как управление выбрано в виде линейной функции  переменных  состояния
[pic], где [pic] является матрицей строкой [pic]. В таком  случае  уравнение
замкнутой системы приобретает вид  [pic]. Здесь
      [pic]
              [pic]
  Характеристическое уравнение такой замкнутой системы будет следующим
      [pic]
  Поскольку каждый коэффициент матрицы обратной связи [pic] входит только в
один коэффициент характеристического уравнения,  то  очевидно,  что  выбором
коэффициентов [pic] можно получить  любые  коэффициенты  характеристического
уравнения, а значит и любое расположение корней.
  Если же желаемое характеристическое уравнение имеет вид
      [pic],
то коэффициенты матрицы обратной связи вычисляются с помощью соотношений:
      [pic]
  Если при наличии одного управления нормальные уравнения объекта заданы не
в канонической форме (что наиболее вероятно), то, в соответствии с  пунктами
№1-6 алгоритма, от исходной формы с помощью преобразования [pic]  или  [pic]
нужно перейти к уравнению [pic] в указанной канонической форме.
  Управление возможно, если выполняется условие полной управляемости  (ранг
матрицы управляемости M должен быть равен n). В алгоритме  об  управляемости
системы судится по существованию матрицы  [pic]:  если  она  существует,  то
ранг матрицы равен ее порядку (n). Для  объекта  управления  с  единственным
управлением матрица [pic] оказывается также единственной.
  Для нахождения коэффициентов  [pic] характеристического уравнения (5), в
работе используется соотношения между корнями   [pic]  и коэффициентами
[pic] линейного алгебраического уравнения степени n:
      [pic],    (k = 1, 2, ... , n)
  где многочлены  [pic]- элементарные симметрические функции, определяемые
следующим образом:
      [pic],
      [pic],
      [pic],
            ...
      [pic]
  где Sk - сумма всех [pic] произведений, каждое из которых содержит k
сомножителей xj с несовпадающими коэффициентами.



                      Программная реализация алгоритма.

  Текст программной реализации приведен  в  ПРИЛОЖЕНИИ  №1.  Вот  несколько
кратких пояснений.
. Программа написана на языке Object Pascal при помощи средств Delphi  2.0,
  и состоит из следующих основных файлов:
    KursovayaWork.dpr
    MainUnit.pas
    SubUnit.pas
    Matrix.pas
    Operates.pas
    HelpUnit.pas
    OptsUnit.pas
. KursovayaWork.dpr - файл проекта, содержащий ссылки на все формы  проекта
  и инициализирующий приложение.
. В модуле MainUnit.pas находится  описание  главной  формы  приложения,  а
  также  сконцентрированы  процедуры  и  функции,   поддерживаюшие   нужный
  интерфейс программы.
.  Модули  SubUnit.pas  и  Operates.pas  содержат  процедуры   и   функции,
  составляющие  смысловую  часть  программной  реализации  алгоритма,  т.е.
  процедуры решения задачи модально управления,  процедуры  решения  систем
  дифференциальных уравнений, процедуры отображения графиков решений систем
   и т.д. Там также находятся процедуры отображения результатов расчетов на
  экран.
.  В  модуле  Matrix.pas  расположено  описание  класса  TMatrix  -  основа
  матричных данных в программе.
. Модули HelpUnit.pas и  OptsUnit.pas  носят  в  программе  вспомогательный
  характер.
. Для решения систем дифференциальных уравнений  использован  метод  Рунге-
  Кутта четвертого  порядка  точности  с  фиксированным  шагом.  Метод  был
  позаимствован из пакета  программ  NumToolBox  и  адаптирован  под  новую
  модель матричных данных.
. Обращение матриц производится методом исключения по главным  диагональным
  элементам  (метод  Гаусса).  Этот  метод  так  же  был  позаимствован  из
  NumToolBox и соответствующе адаптирован.



                                Пориложение.

  program KursovayaWork;

  uses
    Forms,
    MainUnit in 'MainUnit.pas' {Form_Main},
    OptsUnit in 'OptsUnit.pas' {Form_Options},
    SubUnit in 'SubUnit.pas',
    Matrix in 'Matrix.pas',
    Operates in 'Operates.pas',
    HelpUnit in 'HelpUnit.pas' {Form_Help};

  {$R *.RES}

  begin
    Application.Initialize;
    Application.Title := 'Модальное управление';
    Application.CreateForm(TForm_Main, Form_Main);
    Application.CreateForm(TForm_Options, Form_Options);
    Application.CreateForm(TForm_Help, Form_Help);
    Application.Run;
  end.
unit MainUnit;

  interface

  uses
     Windows,  Messages,  SysUtils,  Classes,  Graphics,  Controls,  Forms,
Dialogs,
    ComCtrls, Tabnotbk, Menus, StdCtrls, Spin, ExtCtrls, Buttons, Grids,
    OleCtrls, VCFImprs, GraphSvr, ChartFX {, ChartFX3};

  type
    TForm_Main = class(TForm)
      BevelMain: TBevel;
      TabbedNotebook_Main: TTabbedNotebook;
      SpinEdit_Dim: TSpinEdit;
      BitBtn_Close: TBitBtn;
      BitBtn_Compute: TBitBtn;
      StringGrid_Ap0: TStringGrid;
      StringGrid_Anp0: TStringGrid;
      StringGrid_Roots: TStringGrid;
      StringGrid_Kpp0: TStringGrid;
      StringGrid_Bp0: TStringGrid;
      RadioGroup_RootsType: TRadioGroup;
      Label_A1p0: TLabel;
      Label_Ap0: TLabel;
      Label_mBp0: TLabel;
      Label_Roots: TLabel;
      Label_Kpp0: TLabel;
      BevelLine: TBevel;
      Label_Dim: TLabel;
      StringGrid_Ap1: TStringGrid;
      StringGrid_Bp1: TStringGrid;
      Label_Ap1: TLabel;
      Label_Bp1: TLabel;
      StringGrid_Kpp1: TStringGrid;
      Label_Kpp1: TLabel;
      StringGrid_InCond: TStringGrid;
      Label_InCond: TLabel;
      Label_U: TLabel;
      Edit_U: TEdit;
      BitBtn_Options: TBitBtn;
      BitBtn_Help: TBitBtn;
      StringGrid_ABKpp1: TStringGrid;
      Label_ABKpp1: TLabel;
      Edit_W: TEdit;
      Label_w: TLabel;
      RadioGroupChart: TRadioGroup;
      ChartFX: TChartFX;
      LabelW1: TLabel;
      StringGrid_Solve1: TStringGrid;
      StringGrid_Solve2: TStringGrid;
      Label1: TLabel;
      Label2: TLabel;
      Label3: TLabel;
      procedure BitBtn_CloseClick(Sender: TObject);
      procedure BitBtn_OptionsClick(Sender: TObject);
      procedure BitBtn_ComputeClick(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      procedure SpinEdit_DimChange(Sender: TObject);
      procedure StringGrid_RootsSetEditText(Sender: TObject; ACol,
        ARow: Longint; const Value: string);
      procedure RadioGroup_RootsTypeClick(Sender: TObject);
      procedure TabbedNotebook_MainChange(Sender: TObject; NewTab: Integer;
        var AllowChange: Boolean);
      procedure StringGrid_SetEditText(Sender: TObject; ACol,
        ARow: Longint; const Value: string);
      procedure BitBtn_HelpClick(Sender: TObject);
      procedure RadioGroupChartClick(Sender: TObject);
    private
      procedure FillFixedCellsInAllGrids;
      procedure FillCellsInAllGrids;
    public
      procedure BindGrids;
      procedure UnBindGrids;
    end;

  var
    Form_Main: TForm_Main;


  implementation

  uses Matrix, SubUnit, OptsUnit, Operates, CFXOCX2, HelpUnit;

  const
    DefOptions = [goFixedVertLine, goFixedHorzLine,
                  goVertLine, goHorzLine,
                  goColSizing, goEditing,
                  goAlwaysShowEditor, goThumbTracking];
  {$R *.DFM}

  procedure TForm_Main.FillFixedCellsInAllGrids;
  var
    Order : TOrder;
    i: byte;
    Str: string;
  begin
    Order := SpinEdit_Dim.Value;
    for i := 1 to Order do
      begin
        Str := IntToStr(i);
        StringGrid_Ap0.Cells[0, i] := Str;
        StringGrid_Ap0.Cells[i, 0] := Str;
        StringGrid_Bp0.Cells[0, i] := Str;
        StringGrid_ANp0.Cells[i, 0] := Str;
        StringGrid_ANp0.Cells[0, i] := Str;
        StringGrid_Roots.Cells[i, 0] := Str;
        StringGrid_Kpp0.Cells[i, 0] := Str;
        StringGrid_Ap1.Cells[0, i] := Str;
        StringGrid_Ap1.Cells[i, 0] := Str;
        StringGrid_Bp1.Cells[0, i] := Str;
        StringGrid_ABKpp1.Cells[i, 0] := Str;
        StringGrid_ABKpp1.Cells[0, i] := Str;
        StringGrid_InCond.Cells[i, 0] := Str;
        StringGrid_Kpp1.Cells[i, 0] := Str;
        StringGrid_Solve1.Cells[i, 0] := 'X' + IntToStr(i);
        StringGrid_Solve2.Cells[i, 0] := 'X' + IntToStr(i);
        StringGrid_Solve1.Cells[0, 0] := 'Время';
        StringGrid_Solve2.Cells[0, 0] := 'Время';
      end;
  end;

  procedure TForm_Main.FillCellsInAllGrids;
  var
    Order : TOrder;
    i, j : byte;
  begin
    Order := SpinEdit_Dim.Value;
    for i := 1 to Order do
     for j := 1 to Order do
       begin
         StringGrid_Ap0.Cells[j, i] := '0';
         StringGrid_Ap0.Cells[i, i] := '1';
         StringGrid_Bp0.Cells[1, i] := '0';
         StringGrid_Roots.Cells[i, 1] := '-1';
         StringGrid_Roots.Cells[i, 2] := '0';
         StringGrid_Kpp0.Cells[i, 1] := '0';
         StringGrid_Ap1.Cells[j, i] := '0';
         StringGrid_Ap1.Cells[i, i] := '1';
         StringGrid_Bp1.Cells[1, i] := '0';
         StringGrid_ABKpp1.Cells[j, i] := '0';
         StringGrid_ABKpp1.Cells[i, i] := '1';
         StringGrid_InCond.Cells[i, 1] := '0';
         StringGrid_Kpp1.Cells[i, 1] := '0';
       end;
    FillFixedCellsInAllGrids;
    StringGrid_Roots.Cells[0, 1] := 'Re';
    StringGrid_Roots.Cells[0, 2] := 'Im';
    StringGrid_Bp1.Cells[1, 0] := '1';
    StringGrid_Bp0.Cells[1, 0] := '1';
  end;

  procedure TForm_Main.BindGrids;
  begin
    CopyGrid(StringGrid_Ap1, StringGrid_Ap0);
    CopyGrid(StringGrid_Bp1, StringGrid_Bp0);
    CopyGrid(StringGrid_Kpp1, StringGrid_Kpp0);
    StringGrid_Ap1.Options := DefOptions - [goEditing];
    StringGrid_Bp1.Options := DefOptions - [goEditing];
    StringGrid_Kpp1.Options := DefOptions - [goEditing];
  end;

  procedure TForm_Main.UnBindGrids;
  begin
    StringGrid_Ap1.Options := DefOptions;
    StringGrid_Bp1.Options := DefOptions;
    StringGrid_Kpp1.Options := DefOptions;
  end;

  procedure TForm_Main.BitBtn_CloseClick(Sender: TObject);
  begin
    Close;
  end;

  procedure TForm_Main.BitBtn_OptionsClick(Sender: TObject);
  var
    V0, V1, V2, V3: LongInt;
    LS: TCheckBoxState;
  begin
    with Form_Options do
      begin
        V0 := SpinEdit0.Value;
        V1 := SpinEdit1.Value;
        V2 := SpinEdit2.Value;
        V3 := SpinEdit3.Value;
        LS := CheckBox_Link.State;
        ShowModal;
        if ModalResult = mrCancel then
          begin
            SpinEdit0.Value := V0;
            SpinEdit1.Value := V1;
            SpinEdit2.Value := V2;
            SpinEdit3.Value := V3;
            CheckBox_Link.State := LS;
          end
        else
          if ((SpinEdit0.Value <> V0) or (SpinEdit1.Value <> V1)) or
             ((SpinEdit2.Value <> V2) or (SpinEdit3.Value <> V3)) then
             begin
               BitBtn_Compute.Enabled := True;
               case BitBtn_Compute.Tag of
                   4, 5 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 4;
                   6, 7 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 4;
                   8, 9 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 8;
                 10, 11 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 8;
                 12, 13 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 12;
                 14, 15 :BitBtn_Compute.Tag := BitBtn_Compute.Tag - 12;
               end;
             end;
      end;
  end;

  procedure TForm_Main.BitBtn_ComputeClick(Sender: TObject);
  begin
    BitBtn_Compute.Enabled := False;
    if Form_Options.CheckBox_Link.State = cbChecked then BindGrids;
    case TabbedNotebook_Main.PageIndex of
            0 : begin
                  ComputeFromPage0;
                  BitBtn_Compute.Tag := BitBtn_Compute.Tag + 1;
                end;
            1 : begin
                  ComputeFromPage1;
                  ShowChart(Succ(RadioGroupChart.ItemIndex));
                  BitBtn_Compute.Tag := BitBtn_Compute.Tag + 14;
                end;
            2 : begin
                  ComputeFromPage2;
                  BitBtn_Compute.Tag := BitBtn_Compute.Tag + 4;
                end;
            3 : begin
                  ComputeFromPage3;
                  BitBtn_Compute.Tag := BitBtn_Compute.Tag + 8;
                end;
    end;
  end;

  procedure TForm_Main.FormCreate(Sender: TObject);
  const
    FirstColWidth = 20;
  begin
    StringGrid_Ap0.ColWidths    [0] := FirstColWidth;
    StringGrid_Anp0.ColWidths   [0] := FirstColWidth;
    StringGrid_Bp0.ColWidths    [0] := FirstColWidth;
    StringGrid_Roots.ColWidths  [0] := FirstColWidth;
    StringGrid_Ap1.ColWidths    [0] := FirstColWidth;
    StringGrid_ABKpp1.ColWidths [0] := FirstColWidth;
    StringGrid_Bp1.ColWidths    [0] := FirstColWidth;
    StringGrid_Kpp0.ColWidths   [0] := FirstColWidth;
    StringGrid_Kpp1.ColWidths   [0] := FirstColWidth;
    StringGrid_InCond.ColWidths [0] := FirstColWidth;
    FillCellsInAllGrids;
    BindGrids;
  end;

  procedure TForm_Main.SpinEdit_DimChange(Sender: TObject);
  var
    Order: byte;
  begin
    Order := Succ(SpinEdit_Dim.Value);
    StringGrid_Ap0.ColCount    := Order;
    StringGrid_Ap0.RowCount    := Order;
    StringGrid_Anp0.ColCount   := Order;
    StringGrid_Anp0.RowCount   := Order;
    StringGrid_Bp0.RowCount    := Order;
    StringGrid_Roots.ColCount  := Order;
    StringGrid_Kpp0.ColCount   := Order;
    StringGrid_Ap1.ColCount    := Order;
    StringGrid_Ap1.RowCount    := Order;
    StringGrid_Bp1.RowCount    := Order;
    StringGrid_ABKpp1.ColCount := Order;
    StringGrid_ABKpp1.RowCount := Order;
    StringGrid_InCond.ColCount := Order;
    StringGrid_Kpp1.ColCount   := Order;
    FillFixedCellsInAllGrids;
    BitBtn_Compute.Enabled := True;
  end;

  procedure TForm_Main.StringGrid_RootsSetEditText(Sender: TObject; ACol,
    ARow: Longint; const Value: string);
  var
    Val : string;
  begin
    if (ARow = 2) and (Value <> '') then
      begin
        Val := StringGrid_Roots.Cells [ACol, ARow];
        if StrToFloat (Value) <> 0 then
                      StringGrid_Roots.Cells[Succ(ACol),ARow]:=FloatToStr(-
StrToFloat(Value));
        if StrToFloat (Value) = 0 then
            StringGrid_Roots.Cells [Succ(ACol),ARow] := FloatToStr(0);
      end;
  end;

  procedure TForm_Main.RadioGroup_RootsTypeClick(Sender: TObject);
  var
    Order: TOrder;
    j: byte;
    NHalf: byte;
    StartAlfa, NAlfa, dAlfa: Float;
    W: Float;
  begin
    Order := SpinEdit_Dim.Value;
    W := StrToFloat (Edit_W.Text);
    case RadioGroup_RootsType.ItemIndex of
        0 :StringGrid_Roots.Options := DefOptions;
        1 :begin
             for j := 1 to Order do
               begin
                 StringGrid_Roots.Cells [j, 1] := FloatToStr (-W);
                 StringGrid_Roots.Cells [j, 2] := '0';
                 StringGrid_Roots.Options := DefOptions - [goEditing];
               end
           end;
        2 :begin
             dAlfa := Pi / Order;
             StartAlfa := Pi/2 - dAlfa/2;
             NHalf := Order div 2;
             for j := 1 to NHalf do
               begin
                 NAlfa := StartAlfa + dAlfa * j;
                 StringGrid_Roots.Cells [j, 1] := FloatToStr (Cos (NAlfa) *
W);
                 StringGrid_Roots.Cells [Order - Pred (j), 1] := FloatToStr
(Cos (-NAlfa) * W);
                 StringGrid_Roots.Cells [j, 2] := FloatToStr (Sin (NAlfa) *
W);
                 StringGrid_Roots.Cells [Order - Pred (j), 2] := FloatToStr
(Sin (-NAlfa) * W);
               end;
             if Odd (Order) then
               begin
                 StringGrid_Roots.Cells [NHalf +1, 1] := FloatToStr (-W);
                 StringGrid_Roots.Cells [NHalf +1, 2] := '0';
               end;
             StringGrid_Roots.Options := DefOptions - [goEditing];
           end;
    end;

  end;

  procedure TForm_Main.TabbedNotebook_MainChange(Sender: TObject;
    NewTab: Integer; var AllowChange: Boolean);
  begin
    with BitBtn_Compute do
    case NewTab of
       0 :begin
            SpinEdit_Dim.Enabled := True;
            if Tag in [1, 3, 5, 7, 9, 11, 13, 15] then Enabled := False
                                                  else Enabled := True;
            BitBtn_Compute.Caption := 'Рассчитать модальное управление';
          end;
       1 :begin
            SpinEdit_Dim.Enabled := True;
            if Tag in [2, 3, 6, 7, 10, 11, 14, 15] then Enabled := False
                                                   else Enabled := True;
            BitBtn_Compute.Caption := 'Решить системы дифф. уравнений ';
            if Form_Options.CheckBox_Link.State = cbChecked then BindGrids;
          end;
       2 :begin
            SpinEdit_Dim.Enabled := False;
            if Tag in [4, 5, 6, 7, 12, 13, 14, 15] then Enabled := False
                                                   else Enabled := True;
            BitBtn_Compute.Caption := 'Обновить результаты решений    ';
          end;
       3 :begin
            SpinEdit_Dim.Enabled := False;
      

назад |  1  | вперед


Назад
 


Новые поступления

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

281311062 (руководитель проекта)
401699789 (заказ работ)
© il.lusion,2007г.
Карта сайта
  
  
 
МЕТА - Украина. Рейтинг сайтов Союз образовательных сайтов