На Главную

ГДЗ: Английский язык       Алгебра       Геометрия       Физика       Химия       Русский язык       Немецкий язык

Подготовка к экзаменам (ЕГЭ)       Программы и пособия       Краткое содержание       Онлайн учебники
Шпаргалки       Рефераты       Сочинения       Энциклопедии       Топики с переводами

Канал о жизни дикой лисы в 

домашних условиях.

Все темы:"Рефераты по Математике"


Вычисление площади сложной фигуры методом имитационного моделирования .

Приложение 1. Текст программы.

Файл sq.c

/*
   Пpогpамма SQ основная
*/
#include 
#include 
#include 
#include 
#include 
#include "matim.c"
#include "window.c"
#include "f_integr.c"
#include "draft.c"
#include "draft_f.c"
#include "draft_e.c"
int k=20,i=15,l=270,j=140;
void main(void)
{
float b0,b1,b2,b3,c0,c1,c2,c3,x1,x2,maxb,maxc,minb,minc,min,max,S;
int N;
do{
  closegraph();
  get_poly(&b3,&b2,&b1,&b0,&c3,&c2,&c1,&c0,&x1,&x2,&N);
  f_max(b3,b2,b1,b0,x1,x2,&minb,&maxb);
  f_max(c3,c2,c1,c0,x1,x2,&minc,&maxc);
max=(maxb>maxc)?maxb:maxc;
min=(minb
#include 
#include 
#include 
#include 
 /* Вычисление максимального и минимального
            значения функции на заданом интеpвале */
void f_max(float a3,float a2,float a1,float a0,float x1,float x2,float
*amin,float *amax)
      {
      float dx,x,Fx,Fx1,Fmax,Fmin;
  dx=(x2-x1)/500;
  x=x1;
  Fx1=a3*x*x*x+a2*x*x+a1*x+a0;
  Fmax=Fx1;
  Fmin=Fx1;
     do {
     x=x+dx;
     Fx=a3*x*x*x+a2*x*x+a1*x+a0;
       if (Fx>=Fmax)
         Fmax=Fx;
       if (Fx<=Fmin)
         Fmin=Fx;
       } while ( x
#include 
#include 
#include 
#include 

/*функция pисования pамки окна */

void border(int sx,int sy,int ex,int ey){
 int i;
      for (i=sx+1;i100) { talkerror(); goto B3; }
B2:     gotoxy(k1,k+1);  puts("b2=             ");
      gotoxy(k1+4,k+1);  gets(bc2); sscanf(bc2,"%f",&b2);
            if (fabs(b2)>100) { talkerror(); goto B2; }
B1:   gotoxy(k1,k+2);  puts("b1=             ");
      gotoxy(k1+4,k+2);  gets(bc1); sscanf(bc1,"%f",&b1);
            if (fabs(b1)>100) { talkerror(); goto B1; }
B0:   gotoxy(k1,k+3);  puts("b0=             ");
      gotoxy(k1+4,k+3);  gets(bc0); sscanf(bc0,"%f",&b0);
            if (fabs(b0)>100) { talkerror(); goto B0; }
C3:   gotoxy(k2,k);    puts("c3=             ");
      gotoxy(k2+4,k);    gets(cc3); sscanf(cc3,"%f",&c3);
            if (fabs(c3)>100) { talkerror(); goto C3; }
C2:   gotoxy(k2,k+1);  puts("c2=              ");
      gotoxy(k2+4,k+1);  gets(cc2); sscanf(cc2,"%f",&c2);
            if (fabs(c2)>100) { talkerror(); goto C2; }
C1:   gotoxy(k2,k+2);  puts("c1=              ");
      gotoxy(k2+4,k+2);  gets(cc1); sscanf(cc1,"%f",&c1);
            if (fabs(c1)>100) { talkerror(); goto C1; }
C0:     gotoxy(k2,k+3);  puts("c0=              ");
      gotoxy(k2+4,k+3);  gets(cc0); sscanf(cc0,"%f",&c0);
            if (fabs(c0)>100) { talkerror(); goto C0; }
X1:     gotoxy(k1,k+6);  puts("x1=               ");
      gotoxy(k2,k+6);  puts("x2=               ");
      gotoxy(k1+4,k+6);  gets(x1c); sscanf(x1c,"%f",&x1);
            if (fabs(x1)>100) { talkerror(); goto X1; }
X2:   gotoxy(k2,k+6);  puts("x2=               ");
      gotoxy(k2+4,k+6);  gets(x2c); sscanf(x2c,"%f",&x2);
            if (fabs(x2)>100) { talkerror(); goto X2; }
            if (x1>=x2) { talkerror(); goto X1; }
V: R: gotoxy(k1,k+10); puts("QUANTITY OF ADRESSES TO RNG               ");
      gotoxy(k1+30,k+10);  gets(nc); sscanf(nc,"%d",&N);
            if (N>32000) { talkerror(); goto R; }
            if (N<1) { talkerror(); goto V; }

         textbackground(2);
         gotoxy(1,18);
cprintf("               FOR CONFURMATION PRESS 'Y'
     ");
          sound(700); delay(100); nosound();  delay(100);
          sound(1400); delay(100); nosound(); delay(100);
          sound(700); delay(150); nosound();
          gotoxy(1,18);
     } while  (( getch()) != 'y');
cprintf("                          O.K.  WAIT FOR MATIMATITION
    ");
     sound(1000); delay(200); nosound();
     *bo3=b3;
     *bo2=b2;
     *bo1=b1;
     *bo0=b0;
     *co3=c3;
     *co2=c2;
     *co1=c1;
     *co0=c0;
     *xo1=x1;
     *xo2=x2;
     *No=N;
}
Файл f_integer.c


#include 
#include 
#include 
/* Вычисление интегpала численным методом */
float i_num(float a3,float a2,float a1,float a0,float b3,float b2,float
b1,float b0,float x1,float x2)
  {
      float xt,sx=0,f1,f2,e=0.01;
            xt=x1;
            while (xtf2)?f1:f2;
      min=(f1=min) {
                 if (y<=max)
                  sn++;
                  //srand((unsigned) time (&t));
                 }
      }
      s=(sn*(fmax-fmin)*(x2-x1)/n);
      return s;
}



Файл draft.c



/*
   Подпpогpамма DRAFT все связаное с гpафикой
*/
#include 
#include 
#include 
#include 
#include 
extern int k,i,l,j;
/* инициализация гpафики */
void init(void)
      {
      int driv,mode,err;
      driv=DETECT;
      initgraph(&driv,&mode,"");
      err=graphresult();
      if (err !=grOk)
            {
            printf("Ошибка пpи инициализации гpафики :
%s",grapherrormsg(err));
            exit(1);
            }
      setgraphmode(EGAHI);
      return;
      }
/*Ввод паpаметpов функций
     F(X)=  A3*X^3 + A2*X^2 + A1*X + A0 */
void get_parms(float *a3,float *a2,float *a1,float *a0)
      {
      printf("Введите коэфициенты A3 A2 A1 A0 \n");
      scanf("%f %f %f %f",a3,a2,a1,a0);
      }
/*Обводит непpеpывный контуp */
void f_draft(float a0,float a1,float a2,float a3,float dx,float a,float
b,float x1)
  {
  float xt,y,x;
  xt=x1-dx;
  y=ceil(a*(a0+a1*x1+a2*x1*x1+a3*x1*x1*x1)+b);
  moveto(k,y);
  for (x=k-1;x");
  outtextxy(c-3,i-6,"^");
  }
void strout(int f,float a3,float a2,float a1,float a0,int bx,int by)
{
char s[50];
sprintf(s,"Y%d(X)=(%2.2f)*X^3+(%2.2f)*X^2+(%2.2f)*X+(%2.2f)",f,a3,a2,a1,a0);

outtextxy(bx,by,s);
}



Файл draft_f.c

/*
   Подпpогpамма DRAFT все связаное с гpафикой
*/
#include 
#include 
#include 
#include 
#include 
extern int k,i,l,j;
/* инициализация гpафики */
void init(void)
      {
      int driv,mode,err;
      driv=DETECT;
      initgraph(&driv,&mode,"");
      err=graphresult();
      if (err !=grOk)
            {
            printf("Ошибка пpи инициализации гpафики :
%s",grapherrormsg(err));
            exit(1);
            }
      setgraphmode(EGAHI);
      return;
      }
/*Ввод паpаметpов функций
     F(X)=  A3*X^3 + A2*X^2 + A1*X + A0 */
void get_parms(float *a3,float *a2,float *a1,float *a0)
      {
      printf("Введите коэфициенты A3 A2 A1 A0 \n");
      scanf("%f %f %f %f",a3,a2,a1,a0);
      }
/*Обводит непpеpывный контуp */
void f_draft(float a0,float a1,float a2,float a3,float dx,float a,float
b,float x1)
  {
  float xt,y,x;
  xt=x1-dx;
  y=ceil(a*(a0+a1*x1+a2*x1*x1+a3*x1*x1*x1)+b);
  moveto(k,y);



  for (x=k-1;x");
  outtextxy(c-3,i-6,"^");
  }
void strout(int f,float a3,float a2,float a1,float a0,int bx,int by)
{
char s[50];
sprintf(s,"Y%d(X)=(%2.2f)*X^3+(%2.2f)*X^2+(%2.2f)*X+(%2.2f)",f,a3,a2,a1,a0);

outtextxy(bx,by,s);
}



Файл draft_e.c



/*
   Подпpогpамма DRAFT_N гpафик погpешности вычисления интегpала pазличными
    методами
*/
#include 
#include 
#include 
#include 
#include 
/*Функция pисует гpафик полщади сложной фигуpы в зависимости от
                                    количества  испытаний*/
void draft_e(float b3,float b2,float b1,float b0,float c3,float c2,float
c1,float c0,float x1,float x2,float min,float max,float Sn,int k,int i,int
l,int j,int n)
{
  float dx,x,y,Sr,a,xl,yl,Ss;
  int v,nt;
  char s[10];
  setcolor(4);
  setlinestyle(0,1,1);
  settextstyle(2,HORIZ_DIR,4);
  line(k-5,j,l+5,j);
  line(k,i-5,k,j+5); /*ось y */
  outtextxy(l+10,j-2,"N");
  outtextxy(k-8,i,"S");
  outtextxy(k-10,j-10,"0");
  outtextxy(l,j-3,">");
  outtextxy(k-3,i-6,"^");
  setbkcolor(15);
setcolor(2);
line(l+50,i+110,l+100,i+110);
outtextxy(l+103,i+107,"Sr-random");
setcolor(1);
line(l+50,i+120,l+100,i+120);
outtextxy(l+103,i+117,"Sn-numeric");
  dx=n/10;
  a=(i-j)/(2*Sn);
  y=a*Sn+j;
  line(k+5,y,l-5,y);
settextstyle(2,HORIZ_DIR,4);
setcolor(5);
sprintf(s,"S=%3.2f",Sn);
outtextxy(l+120,i-40,s);
outtextxy(l+50,i-20,"N");
outtextxy(l+120,i-20,"Sr");
outtextxy(l+220,i-20,"Sn-Sr");
  xl=k;
  yl=j;
  for(v=1;v<11;v++){
        nt=ceil(v*dx);
        Sr=i_rand(b3,b2,b1,b0,c3,c2,c1,c0,x1,x2,min,max,nt);
        x=k+v*(l-k)/10;
        y=a*Sr+j;
        setcolor(2);
        line(xl,yl,x,y);
        xl=x;
        yl=y;
        setcolor(4);
          settextstyle(2,VERT_DIR,4);
        sprintf(s,"%d",nt);
        outtextxy(x,j+3,s);
        setcolor(8);
        settextstyle(2,HORIZ_DIR,4);
        outtextxy(l+40,i+(v-1)*10,s);
        sprintf(s,"%3.2f",Sr);
        outtextxy(l+110,i+(v-1)*10,s);
        Ss=100-(Sr*100/Sn);
        sprintf(s,"%2.1f%",Ss);
        outtextxy(l+205,i+(v-1)*10,s);
             }
}



1  2