Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- -------------------------------------------------------------------------------------------------
- Assignment No .: 09
- Title .: Draw a pole zero plot from a given system function H(Z) expressed as rational function. (Display pole zero table and pole zero plot)
- -------------------------------------------------------------------------------------------------
- */
- #include<stdio.h>
- #include<conio.h>
- #include<math.h>
- #include<graphics.h>
- void main()
- {
- int M,N,a[10],b[10],i,j,delta,r;
- float pr[10],pi[10],zr[10],zi[10],x,y;
- int gd=DETECT,gm;
- clrscr();
- printf("\nEnter the no.of terms in numerator:");
- scanf("%d",&M);
- printf("\nEnter the no.of terms in donominator:");
- scanf("%d",&N);
- printf("\nEnter the co-efficient of 1'st polynomial:");
- for(i=0;i<M;i++)
- {
- if(i==0)
- printf("\nco-efficient of z^%d:",i);
- else
- printf("\nco-efficient of z^%d:",-i);
- scanf("%d",&a[i]);
- }
- printf("\nEnter the co-efficient of 2'nd polynomial:");
- for(i=0;i<N;i++)
- {
- if(i==0)
- printf("\nco-efficient of z^%d:",i);
- else
- printf("\nco-efficient of z^%d:",-i);
- scanf("%d",&b[i]);
- }
- printf("\n\nConvert into positive powers of z.");
- printf("\n Multiply both polynomials with highest power of z");
- printf("\n\nh(z)=");
- i=M-1;
- for(i=0;i<M;i++)
- {
- printf("%z^%d",a[i],j);
- j--;
- }
- printf("\n\t-----------------------------\n\t");
- j=N-1;
- for(i=0;i<N;i++)
- {
- printf("%z^%d",b[i],j);
- j--;
- }
- //calculate poles & zeros
- //zeros:
- delta=(a[1]*a[1])-(4*a[0]*a[2]);
- i=0;
- if(delta>=0)
- {
- zr[i]=(-a[1]+sqrt(abs(delta)))/(2*a[0]);
- zi[i]=0;
- i++;
- zr[i]=(-a[1]-sqrt(abs(delta)))/(2*a[0]);
- zi[i]=0;
- }
- else
- {
- zr[i]=(-a[1])/(2*a[0]);
- zi[i]=sqrt(abs(delta))/(2*a[0]);
- i++;
- zr[i]=(-a[1])/(2*a[0]);
- zi[i]=(-sqrt(abs(delta)))/(2*a[0]);
- }
- //poles:
- delta=0;
- delta=(b[1]*b[1])-(4*b[0]*b[2]);
- i=0;
- if(delta>=0)
- {
- pr[i]=(-b[1]+sqrt(abs(delta)))/(2*b[0]);
- pi[i]=0;
- i++;
- pr[i]=(-b[1]-sqrt(abs(delta)))/(2*b[0]);
- pi[i]=0;
- }
- else
- {
- pr[i]=(-b[1])/(2*b[0]);
- pi[i]=sqrt(abs(delta))/(2*b[0]);
- i++;
- pr[i]=(-b[1])/(2*b[0]);
- pi[i]=(-sqrt(abs(delta)))/(2*b[0]);
- }
- initgraph(&gd,&gm,"");
- printf("\n\nThe zeros are:");
- for(i=0;i<M-1;i++)
- {
- printf("(%f+%f)",zr[i],zi[i]);
- }
- printf("\n\nThe poles are:");
- for(i=0;i<N-1;i++)
- {
- printf("(%f+%f)",pr[i],pi[i]);
- }
- line(100,250,500,250);
- line(300,50,300,500);
- circle(300,250,100);
- outtextxy(500,250,"x-axis");
- outtextxy(300,50,"y-axis");
- //plot zeros
- for(i=0;i<M-1;i++)
- {
- x=300+(zr[i]*100);
- y=250-(zi[i]*100);
- putpixel(x,y,15);
- circle(x,y,5);
- outtextxy(x+7,y-7,"z");
- }
- //plot poles
- for(i=0;i<N-1;i++)
- {
- x=300+(pr[i]*100);
- y=250-(pi[i]*100);
- putpixel(x,y,15);
- line(x-5,y-5,x+5,y+5);
- line(x+5,y-5,x-5,y+5);
- outtextxy(x+7,y-7,"p");
- }
- getch();
- closegraph();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement