.: [предыдущая | оглавление | следующая] :.

18.3 Реализация имитационной модели

Запишем функцию моделирующую интегратор, здесь

x - интегральная сумма;
t- входная переменная;
delta - шаг интегрирования;
double Integrator(double x,double t, double delta)
{
      return x+t*delta;
}
double xt[500]; //массив значений для построения графика

Функция моделирования схемы аналоговой вычислительной машины

На входе подаются начальные значения для интеграторов(x0, y0), шаг интегрирования d0, параметры уравнения a, b, c.
void Solver(double x0, double y0, double d0, double a, double b, double c)
{
      double x1=x0, x1t,
      x2=y0, x2t,
      delta=d0;
      for(int i=0; i<500; i++)//
цикл моделирования
      {
            x1t=Integrator(x1,-(x1*a+x2*b+c),delta); //
первый интегратор
            x2t=Integrator(x2,x1,delta); //второй интегратор
            x1=x1t; //копирование входов и выходов
            x2=x2t;
            xt[i]=x2t; //массив для построения графика
     
}
}

Функция вывода графика
void Graphic(double x[], int n, int x0, int y0,int hy)
{
      double xmax, xmin;
      double t;
      int x1,y1,x2,y2;
      xmax=xmin=x[0];
      for(int i=0; i<n; i++)
      {
            if(xmax<x[i]) xmax=x[i];
            if(xmin>x[i]) xmin=x[i];
      }
      if(xmax!=xmin)
      {
            for(int i=0; i<n; i++)
            {
                  t=y0+((x[i]-xmin)/(xmax-xmin))*hy;
                  if(i==0) { x1=x0; y1=t; }
                  else
                  {
                        x2=x0+i; y2=t;
                        Line(x1,y1,x2,y2);
                       
x1=x2; y1= y2;
                  }
            }
      }
}

Пример работы программы моделирования
Solver(10.,100.,0.01,1.,20.,0.);
Graphic(xt,500,20,20,200);
y=x(t)
.: [предыдущая | оглавление | следующая] :.