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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



начения параметров. Задачу выбора оптимальной структуры называют структурной оптимизацией, а раiет оптимальных значений параметров при заданной структуре - параметрической оптимизацией.

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

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

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

Koord(var Pmin:Vect; var Kpmin:real);i:byte;,PL:Vect;:boolean;i:=1 to s do[i]:=(pl[i]+pp[i])/2;:=P;i:=1 to s do[i]:=Gold(P,i);;:=true;i:=1 to s doabs(p[i]-pl[i])-delt*abs(p[i]+pl[i])/2>=0 then def:=false;def;i:=1 to s do[i]:=(p[i]+pl[i])/2;:=Kp_nep(Pmin);;

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

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

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

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

kurs;Crt, Graph;N=2; E0=110;Ec=50;Es=50; L=0.0001; C=0.000001; 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);:array[1..s] of real=(1e-1,1e-2); Type Matrix=array[1..N,1..N] of real;=array[1..N] of real;Vect=array[1..s] of real;A:Matrix;,Bc,Bs,B,D0,Dc,Ds,D,Lam,X,X1:Vector;:Vect;,kpmax,Z1,Z2,K1,K2,K3,K4:real;,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);i,j:byte;i:=1 to n doj:=1 to n do_rez[i,j]:=a1[i,j]+a2[i,j];

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

{*******************Процедура умножения двух матриц A_rez=A1*A2} Procedure Mult_Matr_Matr(n:byte;A1,A2:Matrix; var A_rez:Matrix);i,j,k:byte;i:=1 to n doj:=1 to n do_rez[i,j]:=0;k:=1 to n do a_rez[i,j]:=a_rez[i,j]+a1[i,k]*a2[k,j];;;

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

var i,j:byte;i:=1 to n do[i]:=0;j:=1 to n do[i]:=y[i]+a[i,j]*x[j];;;

{******Процедура умножения матрицы на вещественное число A:=A*c} Procedure Mult_Matr_Sc(n:byte; var A:Matrix; Sc:real);i,j:byte;i:=1 to n doj:=1 to n do[i,j]:=Sc*a[i,j];;

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

end;

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

Procedure Def_A_B(P:Vect);:=1+R1*R3/(R4*R1+R4*R3-R2*R4-R3*R2);:=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;:=r4/z1*r1/z2-r4/(r4+r5)*1/z1;[1,1]:=-k3/p[1];[1,2]:=k1/p[1];[2,1]:=-k4/p[2];[2,2]:=k2/p[2];[1]:=1/p[1];b0[2]:=0;[1]:=1/p[1];bc[2]:=0;[1]:=1/p[1];bs[2]:=0;;

{******Процедура формирования вектора B(t)=B0+Bc*cos(wt)+Bs*sin(wt)**}Def_B_t(t:real);[1]:=b0[1]+bc[1]*cos(w*t)+bs[1]*sin(w*t);[2]:=b0[2]+bc[2]*cos(w*t)+bs[2]*sin(w*t);

end;

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

function U5(X:Vector):real;:=-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);det:real;:=a[1,1]*a[2,2]-a[1,2]*a[2,1];_obr[1,1]:=a[2,2]/det;_obr[1,2]:=-a[1,2]/det;_obr[2,1]:=-a[2,1]/det;_obr[2,2]:=a[1,1]/det;

end;

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

Procedure E_Matr(n:byte; var E:Matrix);i,j:byte;i:=1 to n doj:=1 to n do[i,j]:=0;[i,i]:=1;;;

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

Procedure Det_L(A:Matrix; var L:Vector; var comp:boolean);p0,p1,D:real;:=-(a[1,1]+a[2,2]);:=a[1,1]*a[2,2]-a[1,2]*a[2,1];:=p1*p1-4*p0;D>=0 then:=false;[1]:=(-p1+sqrt(D))/2;[2]:=(-p1-sqrt(D))/2;

else begin:=true;[1]:=-p1/2;[2]:=sqrt(-D)/2;

end;

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

var Z1,Z2:Matrix;,Y2:Vector;_Matr(A,Z1);_Matr_Vect(n,Z1,B0,D0);_Vect_Sc(n,D0,-1);_Matr_Matr(n,A,A,Z1);_Matr(n,Z2);_Matr_Sc(n,Z2,4*pi*pi/TT/TT);_Matr(n,Z1,Z2,Z2);_Matr(Z2,Z1);_Matr_Vect(n,A,Bc,Y1);:=Bs;_Vect_Sc(n,Y2,w);_Vect(n,Y1,Y2,Y1);_Matr_Vect(n,Z1,Y1,Dc);_Vect_Sc(n,Dc,-1);:=Bc;_Vect_Sc(n,Y1,w);_Matr_Vect(n,A,Bs,Y2);_Vect_Sc(n,Y2,-1);_Vect(n,Y1,Y2,Y1);_Matr_Vect(n,Z1,Y1,Ds);;

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

{******************** Численная схема трапеции }Trapec(n:integer; A:Matrix; B:Vector; h:real; var X:Vector);Z1,Z2,Z3:Matrix;,Y2:Vector;_Matr(n,Z1);_Matr_Sc(n,Z1,2);:=A;_Matr_Sc(n,Z2,h);_Matr(n,Z1,Z2,Z3);_Matr_Vect(n,Z3,X,Y1);:=B;_Vect_Sc(n,Y2,2*h);_Vect(n,Y1,Y2,Y1);_Matr_Sc(n,Z2,-1);_Matr(n,Z1,Z2,Z3);_Matr(Z3,Z1);_Matr_Vect(n,Z1,Y1,X);

end;

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

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

X0:=15;:=150;:=300;:=450;(X0,5,X0,GetMaxY-5);(X0-5,Y01,GetMaxX-5,Y01);(X0-5,Y02,GetMaxX-5,Y02);(X0-5,Y03,GetMaxX-5,Y03);(X0+5,5,'x1');(X0+5,Y01+10,'x2');(X0+5,Y02+10,'U4');(GetMaxX-10,Y01+5,'t');(GetMaxX-10,Y02+5,'t');(GetMaxX-10,Y03+5,'t');;

{*******Вычисление нормы матрицы************************** }Norm(n:byte; A:Matrix):real;,j:byte;,sum:real;:=abs(a[1,1]);j:=1 to n do:=0;i:=1 to n do:=sum+abs(a[i,j]);sum>max then max:=sum;;:=max;;

{****************Процедура вычисления экспоненциальной матрицы } Procedure M_Exp(n:byte; A:Matrix; t:real; var Exp_M:Matrix);,s:byte;,Z2,Z3:Matrix;:real;:=Norm(n,A);:=round(ln(10*t*ss)/ln(2));_Matr(n,Z1);:=Z1;Z3:=Z2;i:=1 to s do_Matr_Matr(n,A,Z2,Z3); Mult_Matr_Sc(n,Z3,t/exp(s*ln(2))/i); Add_Matr(n,Z1,Z3,Z1);:=Z3;;i:=1 to s do_Matr_Matr(n,Z1,Z1,Z2);:=Z2;;_M:=Z1;

end;

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

var Z1,Z2:Matrix;:Vector;[1]:=0;y[2]:=0;i:=1 to M do:=i*h;_B_t(t);(n,A,B,h,X);;_L(A,Lam,def);_Exp(n,A,TT,Z1);_Matr_Sc(n,Z1,-1);_Matr(n,Z2);_Matr(n,Z1,Z2,Z2);_Matr(Z2,Z1);_Matr_Vect(n,Z1,Y,X);

end;

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

begin_A_B(P);_An;_nep(X);;:=(GetMaxX-X0-10)/TT;

ky1:=120/50;:=120/200;

ky3:=-100/2;_An_t(0);:=X0;:=Y01-round(ky1*x[1]);:=Y02-round(ky2*x[2]);:=Y01-round(ky1*d[1]);:=Y02-round(ky2*d[2]);:=Y03-round(ky3*U5(X));:=Y03-round(ky3*U5(D)

Copyright © 2008-2014 studsell.com   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение