Ïðèìåð: Ãëîáàëüíàÿ ñåòü INTERNET
ß èùó:
Íà ãëàâíóþ  |  Äîáàâèòü â èçáðàííîå  

Ãëàâíàÿ/

Ðàäèîýëåêòðîíèêà, êîìïüþòåðû è ïåðèôåðèéíûå óñòðîéñòâà. /

Òåîðèÿ Ïîïîâà

Äîêóìåíò 1 | Äîêóìåíò 2 | Äîêóìåíò 3 | Äîêóìåíò 4

#include <graphics.h>

#include <stdio.h>

#include <iostream.h>

#include <conio.h>

#include <dos.h>

#include <math.h>

 

typedef float (*Otv)(float w);

unsigned char GraphMode(void);

void BackGround(void);

float Formula1(float w);

float Formula2(float w);

void ShowGrafic(void);

void LinePopov(void);

 float Xmas=30;                                                               // Ìàñøòàá

 float Ymas=30;

main()

{

 clrscr();

 if (GraphMode()==0){                                                    // Èíèöèàëèçàöèÿ ãðàôèêè

 BackGround();                                                                // Ïîñòðîåíèå ÑÊÎ

 ShowGrafic();       }                                                         // Ïîñòðîåíèå ãðàôèêîâ

 return 0;

}

unsigned char GraphMode(void)

{

   int  driver, mode;

   unsigned char err;

             driver = DETECT;

             initgraph(&driver,&mode,"");

             err = graphresult();

   if (err!=grOk) {cout<<"\n\t"<<grapherrormsg(err);

                           getch();

                           return 1;}

   return 0;

}

void BackGround(void)

{

   int xmax = getmaxx();

   int ymax = getmaxy();

       setcolor(15);

       rectangle(0,0,xmax,ymax);

       line((int)(xmax/2),10,(int)(xmax/2),ymax-10);

       line(10,(int)(ymax/2),xmax-10,(int)(ymax/2));

       line((int)(xmax/2)-3,15,(int)(xmax/2),10);

       line((int)(xmax/2),10,(int)(xmax/2)+3,15);

       line(xmax-15,(int)(ymax/2)-3,xmax-10,(int)(ymax/2));

       line(xmax-15,(int)(ymax/2)+3,xmax-10,(int)(ymax/2));

       settextstyle(2,0,5);

       outtextxy((int)(xmax/2)+7,10,"jwQ(w)");

       outtextxy(xmax-35,(int)(ymax/2)+7,"P(w)");

       settextstyle(2,0,4);

       outtextxy((int)(xmax/2)-8,(int)(ymax/2)+1,"0");

       setcolor(15);

}

void ShowGrafic(void)

{

 Otv Re=Formula1;

 Otv Im=Formula2;

  int xmax = getmaxx();

  int ymax = getmaxy();

      for(float Step=0; Step<=40; Step=Step+0.0001){      //procedure Grafic

              putpixel(xmax/2+Xmas*(*Re)(Step),ymax/2+Ymas*(*Im)(Step),15);

                                                                           }

    setcolor(11);

    line((int)xmax/2+Xmas,(int)(ymax/2)+4,(int)(xmax/2)+Xmas,(int)(ymax/2)-4);

    line((int)xmax/2-Xmas,(int)(ymax/2)+4,(int)(xmax/2)-Xmas,(int)(ymax/2)-4);

    LinePopov();

    while(!kbhit());                                     // Îæèäàíèå íàæàòèÿ

    closegraph();

}

float Formula1(float w)

{

 return (0.0044*w*w*w*w-0.223*w*w-1)/

  (-(0.63*w-0.009*w*w*w)*(0.63*w-0.009*w*w*w)-(1-0.087*w*w)*(1-0.087*w*w));

}

float Formula2(float w)

{

 return  -w*w*(0.034*w*w+0.14)/

  (-(0.63*w-0.009*w*w*w)*(0.63*w-0.009*w*w*w)-(1-0.087*w*w)*(1-0.087*w*w));

}

void LinePopov(void)

{

float PrXo, PXo, QXo, Xo, Yo, h;

float Y;

float pr2= 15;

float kol, time, otv;

Otv Fx1=Formula1;

Otv Fx2=Formula2;

int xmax = getmaxx();

int ymax = getmaxy();

    signed char done=0;

    h=0.00001;                                  // Ïîãðåøíîñòü ïðîèçâîäíîé

    Xo=-0.92;                                         // Çàäàíèå òî÷êè Ïîïîâà

    Yo=0;                                           // íà ðåàëüíîé îñè (-1/k)

    time=7;

 while(!done){                                  // Íàõîæäåíèå òî÷êè êàñàíèÿ ïðÿìîé Ïîïîâà

                                                              // è ìîäèôèöèðîâàííîãî ãîäîãðàôà

            time=time+0.0001;

            PXo=(*Fx1)(time);                    // Ïðîåêöèÿ w íà Ð

            QXo=(*Fx2)(time);                 // Ïðîåêöèÿ w íà wQ

            PrXo=((*Fx2)(time)-(*Fx2)(time-h))/((*Fx1)(time)-(*Fx1)(time-h));

            otv=PrXo*(Xo-PXo)+QXo-Yo;

            if ((otv>=-0.001)&&(otv<=0.001)) done=1;

            if (time==pr2) done=1;

            putpixel(xmax/2+Xmas*(*Fx1)(time),ymax/2+Ymas*(*Fx2)(time),13);

            gotoxy(2,2);

            printf("PXo %3.4f",PXo);

            gotoxy(2,3);

            printf("QYo %3.4f",-QXo);

            printf("\nOtvet %f",otv);

            gotoxy(2,5);

            printf("w    %2.3f",time);

                                                 }

            gotoxy(2,6);

            printf(" Óãîë ðàâåí %2.2f", -atan(QXo/PXo)*180/3.14);// Óãîë êàñàòåëüíîé

            rectangle(0,0,150,90);                                                     // ê Ð

for (kol=-1.5; kol<=1.5; kol=kol+0.001){

Y=PrXo*(kol-Xo)+Yo;

putpixel(xmax/2+Xmas*(kol),ymax/2+Ymas*Y,10);                     // Ïðÿìàÿ Ïîïîâà 

                                                    }

 }


Copyright © 2005—2007 «RefStore.Ru»