:

:


. . .

:

: . .

:

: 4-81

:

. .

1997

:

1. . . ,

.: , 1973.

2. . . , ,

-

, ., 1979, 336 .

3. . .

,

- , ., 1974, 576 .

.

1. Classic Control .

2. - Microsoft Word ver. 6.0, Windows 95.

3. ++, Borland C++ ver. 3.0 .


. .

(0, )- . 5.9; , , , . , , , .. f(l), , , , (-2, 1), , , .

, . (. 5-10). ( ), 0 01 , (0, 1), .

. 5-9. . 5-10.

, , , .

. , , .

. , , , , , .. , , .

, , .

- , - , , , .. , .

, , , .


#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); //

}

}

...


 
2012 , , .