Входные данные:
- файл данных, содержащий параметры передаточных функций управляемого основания;
Выходные данные:
файл данных, содержащий значения частоты в Гц, круговой частоты в 1/c, амплитудные значения частотной характеристики, значения полного угла, реальной и мнимой части передаточной функции и значение арктангенса угла фазовой характеристики.
Метод: алгоритм сводится к вычислению параметров АФЧХ, причем значение полного угла рассчитывается с учетом сектора попадания точки расчета АФЧХ во избежание потери знака при расчете арктангенса, например, в 3 четверти значений тригонометрических функций.
Ограничения: значение частоты не дожнобыть больше 0.
#include <complex.h>
#include <math.h>
#include <process.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>c,s,funper;nom_fun,sup,sup1,sup2,supp;nom,bp1,bp2,bptau,bpc,funmod,w1,ast,uap;pi=4*atan(1.);double shag= 10; // шаг
const double wbeg= 1.0; // {начало}
const double wend= 1000; // {конец}
const float dobavka =0; // {степень(добавка) + -вверху - внизу}
FILE *out,*in;fun0(void);fun01(void);fun1(void);fun2(void);fun3(void);fun4(void);fun5(void);fun6(void);fun7(void);fun8(void);popravka(complex wr,float dob);pechat(char *ss,complex wr,float dob);modul(complex wr1);countround,sector,sectorpred,naprav,colsect,n,m;Wrs1,Wrs2,Falfa,Falfa_,Fbeta1,Fbeta2,Fbetatau,Fbetac,Wreg1st,Wregtaust,Wregtaust_;Wregcst,ktau,kc,Walfa,Wbeta1,Wbeta2,Wbetatau,Wbetac,Wreg1os,Wreg2os,Wregtauos;Wregcos,Wuos1,Wuos2,Wuostau,Wuosc,Wst1,Wk1,Wktau,Wktau1,Wkc,Wf1,Wftau,Wfc,Zftau;Zfc,Wa1,Wa2,Wregcst1,W11,W12,W13,W14,W21,W22,W23,W24,W31,W32,W33,W34,W41,W42,W43,W44;W51,W52,W53,W54,W11_,W12_,W13_,W14_,W21_,W22_,W23_,W24_,W31_,W32_,W33_,W34_,W41_,W42_;W51_,W52_,W53_,W54_,W43_,W44_,Fzs1,Fzs2;H1,H2,Rotau,Roc,q,alfa,Ia,na,Ib1,nb1,Ib2,nb2,Itau,ntau,mltau,Ic,nc,mlc,Kdu1,Kdm1,Kc1;t11,t21,t31,t41,t51,Kdu2,Kdm2,Kc2,t12,t22,t32,t42,t52,Kytau1,Kdutau,Kdmtau,Rdmtau;Rtau1,Rtau2,tftau,tftau1,Kytau,t1tau,t2tau,Atau1,Atau2,Atau11,Atau22,Kyc1,Kduc,Kdmc;Rdmc,Rc1,Rc2,tfc,tfc1,Kyc,t1c,t2c,Ac1,Ac2,Ac11,Ac22,Rf1,tf11,tf12,tf13,Kk1,Kk10,Ak1;Tetk1,Tet1,tk1,Kktau,Kktau0,Aktau,Tetktau,Tettau,tktau,Kktau1,Ktau0,Aktau1,Tetktau1;Tettau1,tktau1,Kkc,Kkc0,Akc,Tetkc,Tetc,tkc,Kst1,t6,t7,t8,t9,w0,delta,wk,Ra1,Ka1;ta11,ta12,ta13,Ra2,Ka2,ta21,ta22,ta23,Kf1,ctau,cc;fun1(void)
{=Kc1*(t11*s+1)*(t21*s+1)/(s*(t31*s+1)*(t41*s+1)*(t51*s+1)*(t51*s+1));=Kc2*(t12*s+1)*(t22*s+1)/(s*(t32*s+1)*(t42*s+1)*(t52*s+1)*(t52*s+1));;=Kytau*(t1tau*s+1)*(Atau2*s*s+Atau1*s+1)/(s*(t2tau*s+1)*(Atau22*s*s+Atau11*s+1));=Kyc*(t1c*s+1)*(Ac2*s*s+Ac1*s+1)/(s*(t2c*s+1)*(Ac22*s*s+Ac11*s+1));=Kst1*(t6*s+1)*(t7*s+1)/(s*(t8*s+1)*(t9*s+1));=Kk1*(tk1*tk1*s*s+(tk1/Tetk1)*(1+Kk10*Ak1/Kk1)*s+1)/(Tet1*tk1*tk1*s*s+tk1*s/Tetk1+1);=Kktau*(tktau*tktau*s*s+(tktau/Tetktau)*(1+Kktau0*Aktau/Kktau)*s+1)/(Tettau*tktau*tktau*s*s+tktau*s/Tetktau+1);=Kktau1*(tktau1*tktau1*s*s+(tktau1/Tetktau1)*(1+Ktau0*Aktau1/Kktau1)*s+1)/(Tettau1*tktau1*tktau1*s*s+tktau1*s/Tetktau1+1);=Kkc*(tkc*tkc*s*s+(tkc/Tetkc)*(1.0+Kkc0*Akc/Kkc)*s+1.0)/(Tetc*tkc*tkc*s*s+tkc*s/Tetkc+1.0);=Kf1/((tf11*s+1)*(tf12*s+1)*(tf13*s+1));=Rtau2/((Rdmtau+Rtau1+Rtau2)*(tftau*s+1));=Rc2/((Rdmc+Rc1+Rc2)*(tfc*s+1));
}fun2(void)
{=(Rdmtau+Rtau1+Rtau2)*(tftau*s+1)/(tftau1*s+1);=(Rdmc+Rc1+Rc2)*(tfc*s+1)/(tfc1*s+1);=Ra1*Ka1/((ta11*s+1)*(ta12*s+1)*(ta13*s+1));=Ra2*Ka2/((ta21*s+1)*(ta22*s+1)*(ta23*s+1));=1.0/(Ia*s*s+na*s);=1.0/(Ib1*s*s+nb1*s);=1.0/(Ib2*s*s+nb2*s);=1.0/(Itau*s*s+ntau*s+ctau);=1.0/(Ic*s*s+nc*s+cc);
}fun3(void)
{os=Kdu1*Wuos1*Kdm1;os=Kdu2*Wuos2*Kdm2;=Kdutau*Wuostau*Kdmtau/Zftau;=Kduc*Wuosc*Kdmc/Zfc;=Wbeta1/(1+Wbeta1*Wreg1os);=Wbeta2/(1+Wbeta2*Wreg2os);=Walfa/(1+Walfa*(H1*H1*s*s*Fbeta1+H2*H2*s*s*Fbeta2));_=Walfa/(1+Walfa*H2*H2*s*s*Fbeta2);=Wbetatau/(1+Wbetatau*Wregtauos);=(1+Wbetac*Wregcos);=Wbetac/Fbetac;
}fun4(void)
{st=Kdu1*Wuos1*Rf1*Wf1*Wk1*Wst1;=Wregtauos*Zftau*Wftau*Kytau1*Wktau*Wst1/Kdmtau;_=Wregtauos*Zftau*Wftau*Kytau1*Wktau1*Wst1/Kdmtau;
//Wregcst1=Kduc;=Kyc1*Kduc*Wkc*Wst1*Wuosc*Wfc;=mltau*Rotau*s*s/q;=mlc*Roc*s*alfa/q;=Falfa*(H1*s*Fbeta1*Wreg1st+ktau*Fbetatau*n*Wregtaust);=Falfa_*(kc*Fbetac*m*Wregcst+ktau*Fbetatau*n*Wregtaust_);=Wrs1/(1+Wrs1);=Wrs2/(1+Wrs2);
}fun5(void)
{ W11=s*Falfa*57.3/(1+Wrs1);=Wrs1/(1+Wrs1);=W11*H1*Fbeta1*Wreg1st/(Wk1*Wst1*57.3);=W11*ktau*Fbetatau*Wregtaust/(s*Wktau*Wst1*57.3);=W11*Wst1;=W21*W12/(W11*Wrs1);=W21*W13/W11;=W21*W14/W11;=W11*(H1*s*Fbeta1*Wreg1os+Wreg1st*(Fbeta1*Wreg1os-1))*4.85e-6;=W31*W12/W11;
}fun6(void)
{=W31*W13/W11;=W31*W14/W11;=W11*n*Wregtaust*(1-Fbetatau*Wregtauos)*4.85e-6;=W41*W12/W11;=W41*W13/W11;=W41*W14/W11;=W11*H2*s*Fbeta2*Wreg2os*4.85e-6;=W51*W12/W11;=W51*W13/W11;=W51*W14/W11;