Wednesday, September 30, 2009

HW210 ЦХО бие даалт 1

Саяхан 301д хүүхдүүд орой болтол суугаал тооны машин тог тог тоншиж байнаа.
ЦХО гэдэг хичээлийн бие даалтыг хийгээд зүдэрч байгаа болтой.
Компьлекс тоотой зууралдана гэдэг нилээн ярьвигтай шүү. Манай курсын найзууд маань бүх томьёог нь бичиж байгаад ганц тэнцүү дархад л бараг бүрэн тэгшитгэлээр нь бодоод хариуг нь гаргачихдаг байсан юм. Үүнийг бидний дүү нар мэдэж байгаа бол уу.
  Мэдээж тэр үед би С хэлний 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