Проектирование электрической цепи

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

  • Введение
  • 1. Задание на курсовой проект
  • 2. Формирование математической модели
  • 3. Поиск периодического решения
  • 4. Параметрическая оптимизация электрической цепи
  • 5. Результаты работы программы
  • Список используемой литературы
  • Листинг программы
  • математика электрический цепь программа
  • Введение
  • Цель курсового проектирования состоит в приобретении навыков применения математического моделирования, методов вычислительной математики, теории оптимизации и средств вычислительной техники при анализе и проектировании электрических цепей.
  • 1. Задание на курсовой проект
  • Исходные данные
  • E (t) = E0+ECcos (2рt/T)+ESsin (2рt/T)
  • Значения не варьируемых параметров:
  • Е0=110 В, ЕС=50 В, ЕS=50 В, R1=R2=R3=1Ом, R4=R5=100Ом, Т=0,01с,
  • Диапазоны варьируемых параметров:
  • L [10-4; 10-1](Гн), C [10-6; 10-2](Ф).
  • Искомая выходная переменная UR5
  • Метод интегрирования: трапеций
  • Метод оптимизации: координатного спуска
  • Определение Кр: непосредственный
  • Переменные состояния: IL, UC.
  • 2. Формирование математической модели
  • Для формирования математической модели заданной электрической цепи воспользуемся методом переменных состояний.
  • Математическая модель представляет собой систему двух дифференциальных уравнений первого порядка с постоянными коэффициентами
  • где — fi® — функции от сопротивлений
  • Представим данную систему уравнений в матричной форме:
  • или, учитывая характер задающего напряжения:
  • где X (t) = [xt(t), x2(t)] = [iL(t), uC(t)] - вектор переменных состояния;
  • — квадратная матрица
  • второго порядка постоянных коэффициентов при переменных состояния в уравнения модели;
  • — векторы внешнего воздействия
  • Выражение для определения заданной выходной переменной через переменные состояния имеет вид:
  • y = UR5 = f1®*iL + f2®*uC
  • Запишем систему уравнений описываемых схему
  • Исходная система уравнений по законам Кирхгофа
  • Количество узлов: Nузл = 4
  • Количество ветвей: Nв = 6
  • Количество ветвей, содержащих только идеальные источники ЭДС: NЕ=1,
  • Количество ветвей, содержащих источники тока: NJ=0,
  • Переменными состояния являются переменные iL и uC.
  • По первому закону Кирхгофа
  • N1ур= Nузл -NE -1 = 4 — 1 — 1 = 2
  • По второму закону Кирхгофа
  • N2ур= Nв -Nузл +1 = 6 — 4 + 1 = 3
  • Компонентные соотношения для элементов схемы:
  • Найдем iR5
  • iR5 = iR3 — iC
  • iC = iL — iR2
  • Подставим iC и получим iR5 = iR3 — iL + iR2
  • С другой стороны iR5 можно найти через соотношение
  • iR4 = iR2 + iR3
  • iR5 = iR4 — iL
  • UR4 = -UR3 — UR5 = -iR3R3 — iR5R5
  • (*)
  • В уравнении не известно iR3 — найдем его.
  • iC = iR3 — iR5
  • UR1 = UR2 — UR3 — UC
  • Откуда выразим iC
  • => (1)
  • В этом уравнении неизвестно iR2
  • iR2 = iR3 — iR4
  • UR4= -UR5 — UR3 = -iR5R5 — iR3R3
  • (2)
  • подставим (2) в (1)
  • (3)
  • подставим (3) в (*)
  • Обозначим через Z1
  • Обозначим через Z2
  • Найдем iC
  • iC = iR3 — iR5 =
  • Найдем iL
  • UL = E — UR4 — UR2 = E + UR3 + UR5 — UR2
  • UR4 = - UR3 — UR5
  • Обозначим функция от R перед UC как К1 и К2, а перед iL как К3 и К4. Тогда:
  • Где
  • Представим данную систему уравнений в матричной форме:
  • Представим математическую модель в матричной форме
  • ,
  • или учитывая характер задающего напряжения:
  • где -вектор переменных состояния;
  • — квадратная матрица второго порядка постоянных коэффициентов при переменных состояния в уравнениях модели;
  • — векторы внешнего воздействия.
  • Выражение для определения заданной выходной переменной через переменные состояния имеет вид:
  • 3. Поиск периодического решения
  • При реализации математических моделей электрических цепей проблема стационарных решений систем дифференциальных уравнений одна из центральных. Это объясняется тем, что стационарные решения описывают установившиеся состояния, которые для электрических цепей являются обычными состояниями функционирования.
  • Аналитический метод
  • Определение периодического решения аналитическим методом производится с помощью процедур procedure Def_An, procedure Def_An_t.
  • procedure Def_An_t (t: real);
  • var Y: Vector;
  • begin
  • Y: =Dc;
  • Mult_Vect_Sc (n, Y, cos (w*t));
  • Add_Vect (n, D0, Y, D);
  • Y: =Ds;
  • Mult_Vect_Sc (n, Y, sin (w*t));
  • Add_Vect (n, D, Y, D);
  • end;
  • Непосредственный метод
  • Для определения периодического решения непосредственным методом применяется процедура procedure Def_Nep.
  • Procedure Def_nep (var X: Vector);
  • var Z1, Z2: Matrix;
  • Y: Vector;
  • begin
  • y[1]: =0;y[2]:=0;
  • for i: =1 to M do
  • begin
  • t: =i*h;
  • Def_B_t (t);
  • Rung_Kut4(A, B, h, X);
  • end;
  • Det_L (A, Lam, def);
  • M_Exp (n, A, TT, Z1);
  • Mult_Matr_Sc (n, Z1,-1);
  • E_Matr (n, Z2);
  • Add_Matr (n, Z1, Z2,Z2);
  • Obr_Matr (Z2,Z1);
  • Mult_Matr_Vect (n, Z1, Y, X);
  • end;
  • Метод установления
  • Процедура procedure Ust реализует поиск периодического решения методом установления и построение временных зависимостей переменных состояния и выходной переменной в переходном режиме.
  • Procedure Ust (P: Vect);
  • begin
  • Def_A_B (P);
  • x[1]: =0;x[2]:=0;
  • j: =0;
  • repeat
  • j: =j+1;
  • X1: =X;
  • for i: =1 to M do
  • begin
  • t: =i*h;
  • Def_B_t (t);
  • Rung_Kut4(A, B, h, X);
  • end;
  • def: =true;
  • for i: =1 to n do
  • if abs (x[i]-x1[i])-delt*abs (x[i]+x1[i])/2> =0 then def: =false;
  • until def;
  • Init;
  • kx: =(GetMaxX-X0−10)/TT/j;
  • ky1: =120/50;
  • ky2: =120/200;
  • ky3: =-100/2;
  • x[1]: =0;x[2]:=0;
  • init;
  • xx1: =X0;y11:=Y01;y21:=Y02;y31:=Y03;
  • for k: =0 to j-1 do
  • for i: =1 to M do
  • begin
  • t: =i*h+k*TT;
  • Def_B_t (t);
  • Rung_Kut4(A, B, h, X);
  • xx: =X0+round (kx*t);
  • y1: =Y01-round (ky1*x[1]);
  • y2: =Y02-round (ky2*x[2]);
  • y3: =Y03-round (ky3*U5(X));
  • setcolor (Red);
  • line (xx1,y11,xx, y1);
  • line (xx1,y21,xx, y2);
  • line (xx1,y31,xx, y3);
  • xx1: =xx;y11:=y1;y21:=y2;y31:=y3;
  • end;
  • readln;
  • CloseGraph;
  • end;

4. Параметрическая оптимизация электрической цепи

Цель параметрического синтеза — определение числовых значений параметров элементов. Синтез носит название оптимизации, если определяются наилучшие в заданном смысле структуры и значения параметров. Задачу выбора оптимальной структуры называют структурной оптимизацией, а расчет оптимальных значений параметров при заданной структуре — параметрической оптимизацией.

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

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

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

Procedure Koord (var Pmin: Vect; var Kpmin: real);

var i: byte;

P, PL: Vect;

def: boolean;

begin

for i: =1 to s do

p[i]: =(pl[i]+pp[i])/2;

repeat

PL: =P;

for i: =1 to s do

begin

p[i]: =Gold (P, i);

end;

def: =true;

for i: =1 to s do

if abs (p[i]-pl[i])-delt*abs (p[i]+pl[i])/2> =0 then def: =false;

until def;

for i: =1 to s do

pmin[i]: =(p[i]+pl[i])/2;

Kpmin: =Kp_nep (Pmin);

end;

5. Результаты работы программы

Список используемой литературы

Четвергов К. В. Информатика. Часть 3. Учебное пособие для студентов специальности «Промышленная электроника» дистанционной формы обучения. — Томск: ТУСУР 1998. — 55с.

Листинг программы

program kurs;

Uses Crt, Graph;

Const N=2; E0=110; Ec=50;Es=50; L=0. 0001; C=0. 1; R1=1; R2=1; R3=R2; R4=100; R5=R4;delt=0. 01;TT=0. 01;w=2*pi/TT;M=100;h=TT/M;s=2; Pl: array[1. s] of real=(1e-4,1e-6);

Pp: array[1. s] of real=(1e-1,1e-2); Type Matrix=array[1. N, 1. N] of real;

Vector=array[1. N] of real; Vect=array[1. s] of real;

Var A: Matrix;

B0,Bc, Bs, B, D0,Dc, Ds, D, Lam, X, X1: Vector;

P: Vect;

t, kpmax, Z1, Z2,K1,K2,K3,K4: real;

grdr, grmd, i, j, k: integer; X0, Y01,Y02,Y03,xx, xx1, y1,y11,y2,y21,y3,y31,y4,y41,y5,y51,y6,y61: integer; kx, ky1, ky2,ky3: real;

def: boolean;

{********************Процедура сложения двух матриц A_sum=A1+A2}

Procedure Add_Matr (n: byte;A1,A2:Matrix; var A_rez: Matrix);

var i, j: byte;

begin

for i: =1 to n do

for j: =1 to n do

a_rez[i, j]: =a1[i, j]+a2[i, j]

end;

{******************Процедура сложения двух векторов B_sum=B1+B2} Procedure Add_Vect (n: byte;B1,B2:Vector; var B_rez: Vector);

var i: byte;

begin

for i: =1 to n do

b_rez[i]: =b1[i]+b2[i]

end;

{*******************Процедура умножения двух матриц A_rez=A1*A2} Procedure Mult_Matr_Matr (n: byte;A1,A2:Matrix; var A_rez: Matrix);

var i, j, k: byte;

begin

for i: =1 to n do

for j: =1 to n do

begin

a_rez[i, j]: =0;

for k: =1 to n do a_rez[i, j]: =a_rez[i, j]+a1[i, k]*a2[k, j];

end;

end;

{*******************Процедура умножения матрицы на вектор Y=A*X} Procedure Mult_Matr_Vect (n: byte;A:Matrix; X: Vector; var Y: Vector);

var i, j: byte;

begin

for i: =1 to n do

begin

y[i]: =0;

for j: =1 to n do

y[i]: =y[i]+a[i, j]*x[j];

end;

end;

{******Процедура умножения матрицы на вещественное число A: =A*c} Procedure Mult_Matr_Sc (n: byte; var A: Matrix; Sc: real);

var i, j: byte;

begin

for i: =1 to n do

for j: =1 to n do

a[i, j]: =Sc*a[i, j];

end;

{******Процедура умножения вектора на вещественное число B: =B*c} Procedure Mult_Vect_Sc (n: byte; var B: Vector; Sc: real);

var i: byte;

begin

for i: =1 to n do b[i]: =Sc*b[i];

end;

{************* Формирование матриц А, B0, Bc, Bs математической модели }

Procedure Def_A_B (P: Vect);

begin

Z1: =1+R1*R3/(R4*R1+R4*R3-R2*R4-R3*R2);

Z2: =R4*R1+R4*R3-R2*R4-R3*R2; K1: =r4/z2*r3/z1*r1*r3/z2-r3*r4/z2+r4/z2*r3*r5/z1-r3/z2*(r4+r3)/z1*r1/z2+(r4+r3)/z2-r5/z2*r3/(r4+r5)*1/z1; K3: =r4/z1*r1*r3/z2+r4/(r4+r5)*r5/z1+r1/z2*(r3+r4)/z1+r5/(r4+r5)*1/z1; K2: =r4/z2*r3/z1*r1/z2-r4/z2-r4/z2*r3/(r4+r5)*1/z1;

K4: =r4/z1*r1/z2-r4/(r4+r5)*1/z1;

a[1,1]: =-k3/p[1];

a[1,2]: =k1/p[1];

a[2,1]: =-k4/p[2];

a[2,2]: =k2/p[2];

b0[1]: =1/p[1];b0[2]:=0;

bc[1]: =1/p[1];bc[2]:=0;

bs[1]: =1/p[1];bs[2]:=0;

end;

{******Процедура формирования вектора B (t)=B0+Bc*cos (wt)+Bs*sin (wt)**}

Procedure Def_B_t (t: real);

begin

b[1]: =b0[1]+bc[1]*cos (w*t)+bs[1]*sin (w*t);

b[2]: =b0[2]+bc[2]*cos (w*t)+bs[2]*sin (w*t);

end;

{****** Функция определения выходной переменной***************}

function U5(X: Vector):real;

begin

U5: =-r4/(r4+r5)*r5/z1*x[1]+r4/z2*r3/(r4+r5)*r5/z1*x[2];

end;

{********Процедура вычисления обратной матрицы второго порядка }

Procedure Obr_Matr (A: Matrix; var A_obr: Matrix);

var det: real;

begin

det: =a[1,1]*a[2,2]-a[1,2]*a[2,1];

A_obr[1,1]: =a[2,2]/det;

A_obr[1,2]: =-a[1,2]/det;

A_obr[2,1]: =-a[2,1]/det;

A_obr[2,2]: =a[1,1]/det;

end;

{********************Процедура формирования единичной матрицы E}

Procedure E_Matr (n: byte; var E: Matrix);

var i, j: byte;

begin

for i: =1 to n do

begin

for j: =1 to n do

e[i, j]: =0;

e[i, i]: =1;

end;

end;

{Процедура вычисления собственных чисел матрицы, А второго порядка }

Procedure Det_L (A: Matrix; var L: Vector; var comp: boolean);

var p0, p1,D: real;

begin

p1: =-(a[1,1]+a[2,2]);

p0: =a[1,1]*a[2,2]-a[1,2]*a[2,1];

D: =p1*p1−4*p0;

if D> =0 then

begin

comp: =false;

l[1]: =(-p1+sqrt (D))/2;

l[2]: =(-p1-sqrt (D))/2;

end

else begin

Comp: =true;

l[1]: =-p½;

l[2]: =sqrt (-D)/2;

end

end;

{**определение векторов D0, Dc, Ds для аналитического метода***} procedure Def_An;

var Z1, Z2: Matrix;

Y1,Y2: Vector;

begin

Obr_Matr (A, Z1);

Mult_Matr_Vect (n, Z1, B0,D0);

Mult_Vect_Sc (n, D0,-1);

Mult_Matr_Matr (n, A, A, Z1);

E_Matr (n, Z2);

Mult_Matr_Sc (n, Z2,4*pi*pi/TT/TT);

Add_Matr (n, Z1, Z2,Z2);

Obr_Matr (Z2,Z1);

Mult_Matr_Vect (n, A, Bc, Y1);

Y2: =Bs;

Mult_Vect_Sc (n, Y2, w);

Add_Vect (n, Y1, Y2,Y1);

Mult_Matr_Vect (n, Z1, Y1,Dc);

Mult_Vect_Sc (n, Dc,-1);

Y1: =Bc;

Mult_Vect_Sc (n, Y1, w);

Mult_Matr_Vect (n, A, Bs, Y2);

Mult_Vect_Sc (n, Y2,-1);

Add_Vect (n, Y1, Y2,Y1);

Mult_Matr_Vect (n, Z1, Y1,Ds);

end;

{**определение аналитического решения D9t)=D0+Dc*cos (wt)+Ds*sin (wt)***} procedure Def_An_t (t: real);

varY: Vector;

begin

Y: =Dc;

Mult_Vect_Sc (n, Y, cos (w*t));

Add_Vect (n, D0, Y, D);

Y: =Ds;

Mult_Vect_Sc (n, Y, sin (w*t));

Add_Vect (n, D, Y, D);

end;

{******************** Численная схема трапеции }

Procedure Trapec (n: integer; A: Matrix; B: Vector; h: real; var X: Vector);

var Z1, Z2,Z3: Matrix;

Y1,Y2: Vector;

begin

E_Matr (n, Z1);

Mult_Matr_Sc (n, Z1,2);

Z2: =A;

Mult_Matr_Sc (n, Z2, h);

Add_Matr (n, Z1, Z2,Z3);

Mult_Matr_Vect (n, Z3, X, Y1);

Y2: =B;

Mult_Vect_Sc (n, Y2,2*h);

Add_Vect (n, Y1, Y2,Y1);

Mult_Matr_Sc (n, Z2,-1);

Add_Matr (n, Z1, Z2,Z3);

Obr_Matr (Z3,Z1);

Mult_Matr_Vect (n, Z1, Y1,X);

end;

{*******инициализация графического режима******** }

Procedure Init;

begin

grdr: =VGA;

grmd: =VGAHi; {инициализация графического режима} InitGraph (grdr, grmd,'d: bpbgi');

X0: =15;

Y01: =150;

Y02: =300;

Y03: =450;

line (X0,5,X0,GetMaxY-5);

line (X0−5,Y01,GetMaxX-5,Y01);

line (X0−5,Y02,GetMaxX-5,Y02);

line (X0−5,Y03,GetMaxX-5,Y03);

outtextxy (X0+5,5,'x1');

outtextxy (X0+5,Y01+10,'x2');

outtextxy (X0+5,Y02+10,'U4');

outtextxy (GetMaxX-10,Y01+5,'t');

outtextxy (GetMaxX-10,Y02+5,'t');

outtextxy (GetMaxX-10,Y03+5,'t');

end;

{*******Вычисление нормы матрицы************************** }

function Norm (n: byte; A: Matrix):real;

var

i, j: byte;

max, sum: real;

begin

max: =abs (a[1,1]);

for j: =1 to n do

begin

sum: =0;

for i: =1 to n do

sum: =sum+abs (a[i, j]);

if sum> max then max: =sum;

end;

Norm: =max;

end;

{****************Процедура вычисления экспоненциальной матрицы } Procedure M_Exp (n: byte; A: Matrix; t: real; var Exp_M: Matrix);

var

i, s: byte;

Z1,Z2,Z3: Matrix;

ss: real;

begin

ss: =Norm (n, A);

s: =round (ln (10*t*ss)/ln (2));

E_Matr (n, Z1);

Z2: =Z1;Z3:=Z2;

for i: =1 to s do

begin

Mult_Matr_Matr (n, A, Z2,Z3); Mult_Matr_Sc (n, Z3, t/exp (s*ln (2))/i); Add_Matr (n, Z1, Z3,Z1);

Z2: =Z3;

end;

for i: =1 to s do

begin

Mult_Matr_Matr (n, Z1, Z1,Z2);

Z1: =Z2;

end;

Exp_M: =Z1;

end;

{*Определение периодического решения непосредственным методом********} Procedure Def_nep (var X: Vector);

var Z1, Z2: Matrix;

Y: Vector;

begin

y[1]: =0;y[2]:=0;

for i: =1 to M do

begin

t: =i*h;

Def_B_t (t);

Trapec (n, A, B, h, X);

end;

Det_L (A, Lam, def);

M_Exp (n, A, TT, Z1);

Mult_Matr_Sc (n, Z1,-1);

E_Matr (n, Z2);

Add_Matr (n, Z1, Z2,Z2);

Obr_Matr (Z2,Z1);

Mult_Matr_Vect (n, Z1, Y, X);

end;

{***********Построение графика периодического решения ****************} Procedure Per_Solve (P: Vect);

begin

Def_A_B (P);

Def_An;

Def_nep (X);

Init;

kx: =(GetMaxX-X0−10)/TT;

ky1: =120/50;

ky2: =120/200;

ky3: =-100/2;

Def_An_t (0);

xx1: =X0;

y11: =Y01-round (ky1*x[1]);

y21: =Y02-round (ky2*x[2]);

y31: =Y01-round (ky1*d[1]);

y41: =Y02-round (ky2*d[2]);

y51: =Y03-round (ky3*U5(X));

y61: =Y03-round (ky3*U5(D));

for i: =1 to M do

begin

t: =i*h;

Def_An_t (t);

Def_B_t (t);

Trapec (n, A, B, h, X);

xx: =X0+round (kx*t);

y1: =Y01-round (ky1*x[1]);

y2: =Y02-round (ky2*x[2]);

y3: =Y01-round (ky1*d[1]);

y4: =Y02-round (ky2*d[2]);

y5: =Y03-round (ky3*U5(X));

y6: =Y03-round (ky3*U5(D));

setcolor (Red);

line (xx1,y11,xx, y1);

line (xx1,y21,xx, y2);

line (xx1,y51,xx, y5);

setcolor (Green);

line (xx1,y31,xx, y3);

line (xx1,y41,xx, y4);

line (xx1,y61,xx, y6); xx1: =xx;y11:=y1;y21:=y2;y31:=y3;y41:=y4;y51:=y5;y61:=y6;

end;

readln;

CloseGraph;

end;

{****************************Метод установления****************}

Procedure Ust (P: Vect);

begin

Def_A_B (P);

x[1]: =0;x[2]:=0;

j: =0;

repeat

j: =j+1;

X1: =X;

for i: =1 to M do

begin

t: =i*h;

Def_B_t (t);

trapec (n, A, B, h, X);

end;

def: =true;

for i: =1 to n do

if abs (x[i]-x1[i])-delt*abs (x[i]+x1[i])/2> =0 then def: =false; until def;

Init;

kx: =(GetMaxX-X0−10)/TT/j;

ky1: =120/50;

ky2: =120/200;

ky3: =-100/2;

x[1]: =0;x[2]:=0;

init;

xx1: =X0;y11:=Y01;y21:=Y02;y31:=Y03;

for k: =0 to j-1 do

for i: =1 to M do

begin

t: =i*h+k*TT;

Def_B_t (t);

trapec (n, A, B, h, X);

xx: =X0+round (kx*t);

y1: =Y01-round (ky1*x[1]);

y2: =Y02-round (ky2*x[2]);

y3: =Y03-round (ky3*U5(X));

setcolor (Red);

line (xx1,y11,xx, y1);

line (xx1,y21,xx, y2);

line (xx1,y31,xx, y3);

xx1: =xx;y11:=y1;y21:=y2;y31:=y3;

end;

readln;

CloseGraph;

end;

{*Определение коэффициента пульсаций по решению непосредственным методом} function Kp_nep (P: Vect):real;

var Usr, Umax, Umin: real;

begin

Def_A_B (P);

Def_nep (X);

Usr: =0;Umin:=U5(X);Umax:=Umin;

for i: =1 to M do

begin

t: =i*h;

Def_B_t (t);

trapec (n, A, B, h, X);

Usr: =Usr+U5(X);

if U5(X)> Umax then Umax: =U5(X);

if U5(X)< Umin then Umin: =U5(X); end;

Kp_nep: =(Umax-Umin)*M/Usr/2;

end;

{***************Метод золотого сечения }

function Gold (P: Vect;i:byte):real;

const g=0. 618 034;

var r, xl, xp: real;

X1,X2: Vect;

begin

xp: =pp[i];xl:=pl[i];X1:=P;X2:=P;

repeat r: =g*(xp-xl);x1[i]:=xl+r;x2[i]:=xp-r;

if kp_nep (X1)< kp_nep (X2) then xp: =x1[i] else xl: =x2[i]

until abs (xp-xl)-delt*abs (xp+xl)/2< 0;

Gold: =(xp+xl)/2;

end;

{*************** Метод координатного спуска } Procedure Koord (var Pmin: Vect; var Kpmin: real);

var i: byte;

P, PL: Vect;

def: boolean;

begin

for i: =1 to s do

p[i]: =(pl[i]+pp[i])/2;

repeat

PL: =P;

for i: =1 to s do

begin

p[i]: =Gold (P, i);

end;

def: =true;

for i: =1 to s do

if abs (p[i]-pl[i])-delt*abs (p[i]+pl[i])/2> =0 then def: =false; until def;

for i: =1 to s do

pmin[i]: =(p[i]+pl[i])/2;

Kpmin: =Kp_nep (Pmin);

end;

{************************ Управляющая программа *********** }

Begin

ClrScr;

Koord (P, kpmax); {оптимизация методом координатного спуска} Def_A_B (P); {формирование матриц А, В математической модели} Det_L (A, Lam, def); {определение собственных чисел}

writeln ('Оптимальная точка: '); writeln ('p[1]=', p[1],'p[2]=', p[2],'kpmax=', kpmax); writeln ('Собственные числа: '); {вывод собственных чисел на экран} if not def then

begin

writeln ('l[1]=', lam[1]); writeln ('l[2]=', lam[2]); writeln ('Постоянные времени: '); writeln ('tau1=', 1/abs (lam[1])); writeln ('tau2', 1/abs (lam[2])); end

else

begin

writeln ('l[1]=', lam[1],'+j', lam[2]); writeln ('l[1]=', lam[1],'-j', lam[2]); writeln ('Постоянная времени: tau=', 1/abs (lam[1]));

writeln ('Собственная частота: fc=', lam[2]/2/pi);

end;

readln;

Ust (P); {определение периодического решения методом установления} Per_Solve (P); {определение периодического решения непосредственным методом}

End.

ПоказатьСвернуть
Заполнить форму текущей работой