Метод квадратурных компонентов для определения частотных характеристик

Автор: Пользователь скрыл имя, 16 Декабря 2012 в 18:36, лабораторная работа

Описание работы

Оценить симплексным методом, в модели ...., где – случайная переменная; V – детерминированная переменная; P – ширина давления;  – относительная плотность (по отношению к плотности воздуха); n – число труб (постоянная).

Работа содержит 1 файл

Лаб. 1.doc

— 298.50 Кб (Скачать)

Государственный комитет РФ

по  высшему образованию

Пермский  государственный

технический университет

Кафедра автоматики и телемеханики

ЛАБОРАТОРНАЯ  РАБОТА  №1

Тема: метод квадратурных компонентов для определения  частотных характеристик

Выполнил  студент  гр. АТ–95–1  Королёв  П. С.

 

Проверил  преподаватель Леготкина  Т. С.

Пермь 1999

Приведенные ниже данные между перепадом  давления в трубах и расходом газа описываются уравнением (1).

Оценить симплексным методом, в модели

                                                    (1)

где – случайная переменная; V – детерминированная переменная; DP – ширина давления; d – относительная плотность (по отношению к плотности воздуха); n – число труб (постоянная).

Таблица 1

V, м/мин

, мм рт. ст.

400

470

590

610

620

840

950

1200

1400

1550

0,0125

0,0165

0,0215

0,0225

0,0235

0,0420

0,0530

0,0750

0,0970

0,1200


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

В разультате работы программы (см. прил. 1) следующие результаты

Lambda[1] = 0.000000980

Lambda[2] = 1.589200000

 Измеренные значения     Модель

       0.0125            0.0134

       0.0165            0.0173

       0.0215            0.0248

       0.0225            0.0262

       0.0235            0.0268

       0.0420            0.0435

       0.0530            0.0529

       0.0750            0.0767

       0.0970            0.0980

       0.1200            0.1152

 За 21 шаг

В алгоритме были использованы две  основные проверки: размер шага и изменение значения сравнивается с заданным, т. е. График для представлен на рис. 1.

Рис. 1

Рассчитаем дисперсию

      (2)

где 

Оценим  симплексным методом. В разультате работы программы (см. прил. 2) следующие результаты

Lambda[1] = 0.000000392

Lambda[2] = 1.717233937

 Измеренные  значения     Модель

       0.0125            0.0115

       0.0165            0.0152

       0.0215            0.0225

       0.0225            0.0238

       0.0235            0.0245

       0.0420            0.0412

      0.0530            0.0509

       0.0750            0.0760

       0.0970            0.0990

       0.1200            0.1180

 За 262 шага

В программе были исползованы следующие  параметры: коэффициент отражения  коэффициент растяжения коэффициент сжатия Критерием окончания счёта было выражение

График для  представлен на рис. 2.

Рассчитаем дисперсию

   (3)

В качестве модели возмём прямую Тогда в результате работы программы (см. прил. 2) получим следующие результаты

Lambda[1] = 0.000092048

Lambda[2] = -0.031099344

 Измеренные  значения     Модель

       0.0125            0.0057

       0.0165            0.0122

       0.0215            0.0232

       0.0225            0.0251

       0.0235            0.0260

       0.0420            0.0462

       0.0530            0.0563

       0.0750            0.0794

       0.0970            0.0978

       0.1200            0.1116

 За 39 шагов

График для  представлен на рис. 2.

Рис. 2

Рассчитаем дисперсию

     (4)

где 

Как видно нелинейная модель (1) лучше  описывает процесс, чем прямая, т. к. её дисперсия (3) на порядок меньше дисперсии линейной модели (4).

Вычислим доверительные  пределы для  . После расчёта получаем матрицы

Для уровня значимости и числа степеней свободы значение квантиля равно 2,306.

Тогда

      (5)

                                                (6)

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

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

где 

В качестве математического  ожидания возьмём среднее значение.

Проведём две линии по обе стороны от предсказанной кривой, определяющие доверительные пределы при уровне значимости, равном 0,05 (см. рис. 3).

Рис. 3

Приложения

1.  Turbo Pascal-программа для расчёта методом прямого поиска

{ Метод прямого  поиска }

program Method_Of_Direct_Searching;

uses Crt;

const

  m = 2;  { Число параметров }

  N = 10; { Количество измеренных  значений }

  X: array[1..N] of real = (400, 470, 590, 610, 620, 840, 950, 1200,

    1400, 1550);

  Y: array[1..N] of real = (0.0125, 0.0165, 0.0215, 0.0225, 0.0235,

    0.0420, 0.0530, 0.0750, 0.0970, 0.1200);

var

  f_: text;

  I, J, Step: Integer;

  Summ, Pred_F: real;

  Lambda1, Lambda2, b1, b2, Delta_b1, Delta_b2, Min_Delta_b: real;

function F(Beta1, Beta2: real): real; { Минимизируемая  функция }

var

  I_: Integer;

  Sum: real;

  Eta: array[1..N] of real; { Модель }

begin

Sum := 0;

  for I_ := 1 to N do

  begin

    Eta[I_] := Beta1 * Exp(Beta2 * Ln(X[I_]));

    Sum := Sum + Sqr(Y[I_] - Eta[I_]);

  end;

  F := Sum;

end;

begin

  ClrScr;

  b1 := 0.1;

  Delta_b1 := 0.01;

  b2 := 2;

  Delta_b2 := 0.1;

  Step := 0;

  repeat

    Pred_F := F(b1, b2);

    I := 0;

    J := 0;

    if F(b1 + Delta_b1, b2) < F(b1, b2) then

    begin

      b1 := b1 + Delta_b1;

      Inc(I);

    end;

    if F(b1 - Delta_b1, b2) < F(b1, b2) then

   begin

      b1 := b1 - Delta_b1;

      Inc(I);

    end;

    if F(b1, b2 + Delta_b2) < F(b1, b2) then

    begin

      b2 := b2 + Delta_b2;

      Inc(J);

    end;

    if F(b1, b2 - Delta_b2) < F(b1, b2) then

    begin

      b2 := b2 - Delta_b2;

      Inc(J);

    end;

    if I = 0 then Delta_b1 := Delta_b1 / 10;

    if J = 0 then Delta_b2 := Delta_b2 / 10;

ПРИЛОЖЕНИЕ 1

    if Delta_b1 < Delta_b2 then

      Min_Delta_b := Delta_b1

    else

      Min_Delta_b := Delta_b2;

    Inc(Step);

  until (Abs(Pred_F - F(b1, b2)) < 1E-6) and (Min_Delta_b < 1E-9);

  Lambda1 := b1;

  Lambda2 := b2;

  WriteLn('Lambda[1] = ', Lambda1:1:9);

  WriteLn('Lambda[2] = ', Lambda2:1:9);

  WriteLn(' Измеренные значения     Модель ');

  for I := 1 to N do

    WriteLn('       ', Y[I]:1:4, '            ',

      Lambda1 * Exp(Lambda2 * Ln(X[I])):1:4);

  WriteLn('За ', Step, ' шаг ');

  ReadLn;

end.

ПРИЛОЖЕНИЕ 2

2.  Turbo Pascal-программа для расчёта симплексым методом

{ Симплексный  метод }

program Simplex_Method;

uses Crt;

const

  a = 1;  { Расстояние между двумя вершинами }

  m = 2;  { Число параметров }

  N = 10; { Количество измеренных  значений }

  Gamma_r = 1;     { Коэффициент  отражения }

  Gamma_e = 2;     { Коэффициент  растяжения }

  Gamma_c = 0.5;   { Коэффициент  сжатия }

  Epsilon = 1E-7;  { Погрешность }

  X: array[1..N] of real = (400, 470, 590, 610, 620, 840, 950, 1200,

    1400, 1550);

  Y: array[1..N] of real = (0.0125, 0.0165, 0.0215, 0.0225, 0.0235,

    0.0420, 0.0530, 0.0750, 0.0970, 0.1200);

type

  Mass = array[1..m] of real;

var

  I, J, u, e: Integer;

  Max, Min, Summ, Avg_F: real;

  Lambda, Sum_, C, b_Sign, b_Sign_Sign: Mass;

  b: array[1..m + 1] of Mass;

function F(Beta_: Mass): real; { Минимизируемая функция }

var

  I_: Integer;

  Sum: real;

  Eta: array[1..N] of real; { Модель }

begin

  Sum := 0;

  for I_ := 1 to N do

  begin

    Eta[I_] := Beta_[1] * Exp(Beta_[2] * Ln(X[I_]));

    Sum := Sum + Sqr(Y[I_] - Eta[I_]);

  end;

  F := Sum;

end;

begin

  ClrScr;

  { 1. Вычисление начальных  b и F исходного симплекса }

  for I := 1 to m + 1 do

ПРИЛОЖЕНИЕ 2

    for J := 1 to m do

    begin

      if I = J + 1 then

        b[I][J] := a / (m * Sqrt(2)) * (Sqrt(m + 1) + m - 1)

      else

        b[I][J] := a / (m * Sqrt(2)) * (Sqrt(m + 1) - 1);

      if I = 1 then b[I][J] := 0;

    end;

  repeat

    { 2. Вычисление b_u, b_e, C }

    Min := F(b[1]);

    for I := 1 to m + 1 do

      if F(b[I]) <= Min then

      begin

        Min := F(b[I]);

        e   := I;

      end;

    Max := F(b[1]);

    for I := 1 to m + 1 do

      if F(b[I]) >= Max then

      begin

        Max := F(b[I]);

        u   := I;

      end;

    for J := 1 to m do

    begin

      Sum_[J] := 0;

      for I := 1 to m + 1 do

        if I <> u then Sum_[J] := Sum_[J] + b[I][J];

      C[J] := 1 / m * Sum_[J];

    end;

    { 3. Отражение, вычисление b* }

    for J := 1 to m do

      b_Sign[J] := (1 + Gamma_r) * C[J] - Gamma_r * b[u][J];

    if F(b_Sign) < F(b[u]) then

    begin

      for J := 1 to m do

        b_Sign_Sign[J] := (1 - Gamma_e) * C[J] + Gamma_e * b_Sign[J];

      J := 0;

      for I := 1 to m + 1 do

        if F(b_Sign_Sign) < F(b[I]) then Inc(J);

      if J = m + 1 then

        for J := 1 to m do

          b[u][J] := b_Sign_Sign[J]

      else

        for J := 1 to m do

          b[u][J] := b_Sign[J];

    end

    else

    begin

      J := 0;

      for I := 1 to m + 1 do

        if (F(b_Sign) > F(b[I])) and (I <> u) then Inc(J);

      if J = m then

      begin

        if F(b_Sign) > F(b[u]) then

        else

          for J := 1 to m do

            b[u][J] := b_Sign[J];

        for J := 1 to m do

          b_Sign_Sign[J] := (1 - Gamma_c) * C[J] + Gamma_c * b[u][J];

        if F(b_Sign_Sign) > F(b[u]) then

          for I := 1 to m + 1 do

            for J := 1 to m do

              b[I][J] := 1 / 2 * (b[I][J] + b[e][J])

        else

ПРИЛОЖЕНИЕ 2

          for J := 1 to m do

            b[u][J] := b_Sign_Sign[J];

      end

      else

        for J := 1 to m do

          b[u][J] := b_Sign[J];

    end;

    Summ := 0;

    for I := 1 to m + 1 do

      Summ := Summ + F(b[I]);

    Avg_F := 1 / (m + 1) * Summ;

    Summ := 0;

    for I := 1 to m + 1 do

      Summ := Summ + Sqr(F(b[I]) - Avg_F);

  until Sqrt(Summ / m) <= Epsilon;

  for J := 1 to m do Lambda[J] := b[e][J];

  for J := 1 to m do WriteLn('Lambda[', J, '] = ', Lambda[J]:1:9);

  WriteLn(' Измеренные значения     Модель ');

  for I := 1 to N do

    WriteLn('       ', Y[I]:1:4, '            ',

      Lambda[1] * Exp(Lambda[2] * Ln(X[I])):1:4);

  ReadLn;

end.


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