ЦХО гэдэг хичээлийн бие даалтыг хийгээд зүдэрч байгаа болтой.
Компьлекс тоотой зууралдана гэдэг нилээн ярьвигтай шүү. Манай курсын найзууд маань бүх томьёог нь бичиж байгаад ганц тэнцүү дархад л бараг бүрэн тэгшитгэлээр нь бодоод хариуг нь гаргачихдаг байсан юм. Үүнийг бидний дүү нар мэдэж байгаа бол уу.
Мэдээж тэр үед би С хэлний complex.h гэдэг толгой файлыг мэдэж ашигладаг байсан бол тухайн үед хичнээн амар байх байсан бол. За за олон юм нуршилгүй ЦХО1 ийн Бие Даалт 1-г хэрхэн хийж болох талаар коде тавив.
Вариант С.
//c variant
#include < stdio.h>
#include < complex.h>
#include < math.h>
#define ator(arg) arg*M_PI/180 //angle to radian
#define rtoa(rad) rad*180/M_PI //radian to angle
int disp(complex z,char str[]); //biegui functsiin zarlagaa
int disp1(complex z,char str[]); //main functsiin dor eh bieiig ni guitseej bichsen
int init(); //Initialisation type
complex XL2,XL4,XC1,XC2,XC3,R2,R5; //global huvisagchid
complex e1,e2,e3;
complex tod(complex mat[3][3]);//matritsiin todorhoilogch bodoh
int main()
{
init();
complex first[3][3]={{XC1+R5+XL4,-XL4,-R5},
{-XL4,XL4+XC2+XL2+R2,0},
{-R5,0,XC3+R5}};
complex td=tod(first);//matritsiin todorhoilogch
disp(td,"tod");
complex second[3][3]={{e1,-XL4,-R5},
{e2,XL4+XC2+XL2+R2,0},
{e3,0,XC3+R5}};
complex third[3][3]={{XC1+R5+XL4,e1,-R5},
{-XL4,e2,0},
{-R5,e3,XC3+R5}};
complex fourt[3][3]={{XC1+R5+XL4,-XL4,e1},
{-XL4,XL4+XC2+XL2+R2,e2},
{-R5,0,e3}};
complex tod1=tod(second);
complex tod2=tod(third);
complex tod3=tod(fourt);
disp(tod1,"tod1");
disp(tod2,"tod2");
disp(tod3,"tod3");
//guidluud olov
printf("Guidluud olov\n");
complex I11=tod1/td;
complex I22=tod2/td;
complex I33=tod3/td;
disp1(I11,"I11");
disp1(I22,"I22");
disp1(I33,"I33");
complex I4=I11-I22,I5=I11-I33;
disp1(I4,"I4");
disp1(I5,"I5");
//element buriin huchdel
printf("Element burin huchdel\n");
complex uc1=I11*XC1;
complex ul4=I4*XL4;
complex ur5=I5*R5;
complex uc3=I33*XC3;
complex uc2=I22*XC2;
complex ul2=I22*XL2;
complex ur2=I22*R2;
disp(uc1,"uc1");
disp(uc2,"uc2");
disp(uc3,"uc3");
disp(ul2,"ul2");
disp(ur2,"ur2");
disp(ur5,"ur5");
disp(ul4,"ul4");
//chadliin blans
printf("Chadliin blans\n");
complex p=e1*I11+e2*I22+e3*I33;
complex p1=uc1*I11+ul4*I4+ur5*I5+uc3*I33+uc2*I22+ul2*I22+ur2*I22;
disp(p,"p");
disp(p1,"p1"); //Чадлын бланс гайхалтай таарч байна лээ шүү.
return 0;
}
complex tod(complex mat[3][3])
{
/*hureenii guidliin argaar bodoj baiga bolhoor krameriin argad shaardagdah matritsiin todorhoilogch bodoh heseg*/
/*
|a00|b01|c02|
|d10|e11|f12|
|g20|h21|i22|
a00*e11*i22+d10*h21*c026+b01*f12*g20-c02*e11*g20-d10*b01*i22-a00*f12*h21
*/
return mat[0][0]*mat[1][1]*mat[2][2]+mat[1][0]*mat[2][1]*mat[0][2]+mat[0][1]*mat[1][2]*mat[2][0]-mat[0][2]*mat[1][1]*mat[2][0]-mat[1][0]*mat[0][1]*mat[2][2]-mat[0][0]*mat[1][2]*mat[2][1];
}
int init()
{
e1=30*cexp(I*ator(25)); // I gedeg ni iod buyu huurmag heseg
e2=30*cexp(I*ator(45));
e3=25*cexp(I*ator(60));
disp1(e1,"e1");disp1(e2,"e2");disp1(e3,"e3");
double rad=200;
double c1=50*pow(10,-6),c2=30*pow(10,-6),c3=35*pow(10,-6);
double xc1=1/(c1*rad),xc2=1/(c2*rad),xc3=1/(c3*rad);
printf("xc1 = %.4lf\n",xc1);
printf("xc2 = %.4lf\n",xc2);
printf("xc3 = %.4lf\n",xc3);
double l2=80*pow(10,-3),l4=210*pow(10,-3);
double xl2=rad*l2,xl4=rad*l4;
printf("xl2 = %.4lf\n",xl2);
printf("xl4 = %.4lf\n",xl4);
XL2=xl2*cexp(I*ator(90));
XL4=xl4*cexp(I*ator(90));
XC1=xc1*cexp(I*ator(-90));
XC2=xc2*cexp(I*ator(-90));
XC3=xc3*cexp(I*ator(-90));
R2=30;
R5=20;
disp(XL2,"XL2");
disp(XL4,"XL4");
disp(XC1,"XC1");
disp(XC2,"XC2");
disp(XC3,"XC3");
disp(R2,"R2");
disp(R5,"R5");
return 0;
}
int disp(complex z,char str[])
{//
printf("%s = %.4f + %.4f * i\n",str,creal(z),cimag(z));
return 0;
}
int disp1(complex z,char str[])
{//
printf("%s = %.4fcexp(I*%.4f)\n",str,cabs(z),carg(z)*180/M_PI);
return 0;
}
Мэдээж хэрэг чадлын бланс гайхалтай сайн таарч байна лээ.
Дээрхийг Гүйдлийн хүрээний аргаар бодсон. Томьёоноос нь ямархуу Схем байсныг гаргаж авч болох байх гээд оруулсангүй.
харин Линукс дээр Котпаилдахдаа: $gcc -lm -o outputFileName savedFileName.c
$./ouputFileName
гээл болоо.
No comments:
Post a Comment