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)
|