Разработка алгоритма и его программной реализациидля пэвм для анализа системы
#define INFTY1000000 //бесконечность //-------------------Начальные параметры----------------- //-------------------fik - КПД k-го теплообменника----------------- double fi2,fi3,fi4,fi7,fi8; //-------------------Ограничения на G и h-----------------Gmin,Gmax;//минимальное и максимальное значения для Gk, //k=0,1,2,3,4,5,6,7,8,9.h245min;//минимальное значение для h2,h4 и h5h245max;//максимальное значение для h2,h4 и h5h3678min;//минимальное значение для h3, h6, h7 и h8h3678max;//максимальное значение для h3, h6, h7 и h8 //-------------------Свободные параметры-----------------G0,G1,G3,G4,G7; double h0,h1,h5,h6; //-------------------Вычисляемые (зависимые) параметры-----------------G2,G5,G6,G8,G9; double h2,h3,h4,h7,h8; //-------------------Границы интервала изменения Gk-----------------FreeGmin,FreeGmax; //-------------------Количество узлов интерпоолирования-----------------N=1000; //-------------------Выходной файл с результатами-----------------FileOut; //Internal variablespchFileName[40];nChoice=0; double *pfFreeG=NULL; //Функция, которая получает данные, введённые пользователем void UserInput(){<<"Enter fi2 (0<fi2<1): ";>>fi2;(fi2<=0||fi2>1){<<"Ignoring invalid input. fi2=0.99 (default)."<<endl;=0.99; }<<"Enter fi3 (0<fi3<1): ";>>fi3;(fi3<=0||fi3>1){<<"Ignoring invalid input. fi3=0.98 (default)."<<endl;=0.98; }<<"Enter fi4 (0<fi4<1): ";>>fi4;(fi4<=0||fi4>1){<<"Ignoring invalid input. fi4=0.97 (default)."<<endl;=0.97; }<<"Enter fi7 (0<fi7<1): ";>>fi7;(fi7<=0||fi7>1){<<"Ignoring invalid input. fi7=0.96 (default)."<<endl;=0.96; }<<"Enter fi8 (0<fi8<1): ";>>fi8;(fi8<=0||fi8>1){<<"Ignoring invalid input. fi8=0.95 (default)."<<endl;=0.95; }<<"Enter minimum G: ";>>Gmin;(Gmin<=0){<<"Ignoring invalid input. Minimum G="<<(Gmin=1)<<" (default)."<<endl; }<<"Enter maximum G (maximum G>"<<3*Gmin<<"): ";>>Gmax;(Gmax<3*Gmin){<<"Ignoring invalid input. Maximum G="<<(Gmax=10*Gmin)<<" (default)."<<endl; }(Gmin<Gmax);=h245min=20;max=251;min=294;=h3678max=504;=h245max;=(h3678min+h3678max)/2;=0.9*Gmax;=0.5*Gmax;=0.5*Gmax;=0.7*Gmax;//must be G4>=G3+Gmin=0.5*G1;=Gmin;=Gmax;<<"What parameter you whant to be variable: G0 (enter 0), G1 (enter 1), " "G3 (enter 3), G4 (enter 4),G7 (enter 7): ";nChoice;>>nChoice;(nChoice){0:=&G0;;1:=&G1;;3:=&G3;;4:=&G4;;7:=&G7;;:<<"Ignoring invalid input. Chosed G1 (default)."<<endl;=&G1; } *pfFreeG=FreeGmin;<<"Enter output filename (without spaces): ";>>pchFileName;(strlen(pchFileName)==0){<<"Ignoring invalid input. File will be \"output.txt\" (default)"<<endl; strcpy(pchFileName,"output.txt"); } } //Эта функция нужна для отладки - чтобы проверить выполнение балансовых соотношений void ASSERT_BALANCE(){ /*1*/assert(IS_ZERO(G2+G1-G0)); /*2*/assert(IS_ZERO(G3*h2+G1*h3-fi2*(G3*h1+G1*h0))); /*3*/assert(IS_ZERO(G4-G3-G5));assert(IS_ZERO(G4*h4-fi3*(G3*h2+G5*h5))); /*4*/assert(IS_ZERO(G4*h5+G2*h6-fi4*(G2*h0+G4*h4))); /*5*/assert(IS_ZERO(G6+G5-G4)); /*6*/assert(IS_ZERO(G7+G8-G1)); /*7*/assert(IS_ZERO(G9-G2-G7));assert(IS_ZERO(G9*h7-fi7*(G2*h6+G7*h3))); /*8*/assert(IS_ZERO(G0-G8-G9));assert(IS_ZERO(G0*h8-fi8*(G8*h3+G9*h7))); } //Вычисляет зависимые переменные G и h по независимым G и h void CalcDependent_G_h(){=G0-G1;=G4-G3;=G3;=G1-G7;=G0-G1+G7;=1/(fi4*fi3*G1)*(fi4*G0*h0+fi4*fi3*fi2*G3*h1-fi4*(1-fi3*fi2)*G1*h0-*fi3*G3*h5-(1-fi4*fi3)*G4*h5-(G0-G1)*h6);=(fi2*(G1*h0+G3*h1)-G1*h3)/G3;=fi3/G4*(fi2*(G1*h0+G3*h1)-G1*h3+(G4-G3)*h5);=fi7*((G0-G1)*h6+G7*h3)/(G0-G1+G7);=fi8*(G9*h7+G8*h3)/G0;_BALANCE(); |